Merge pull request #1074 from esdrubal/bug18421
authorRodrigo Kumpera <kumpera@gmail.com>
Thu, 19 Jun 2014 15:45:17 +0000 (11:45 -0400)
committerRodrigo Kumpera <kumpera@gmail.com>
Thu, 19 Jun 2014 15:45:17 +0000 (11:45 -0400)
Changed TryPeek to handle race condition with Dequeue.

654 files changed:
.gitattributes
Makefile.am
README.md
acinclude.m4
autogen.sh
build-mingw32.sh
configure.ac [new file with mode: 0644]
configure.in [deleted file]
data/config.in
eglib/Makefile.am
eglib/acinclude.m4
eglib/configure.ac
eglib/src/Makefile.am
eglib/src/gerror.c
eglib/src/glib.h
eglib/src/goutput.c
eglib/src/gstr.c
eglib/src/sort.frag.h
eglib/src/vasprintf.h [new file with mode: 0644]
eglib/test/file.c
ikvm-native/jni.c
ikvm-native/os.c
libgc/Makefile.am
libgc/Makefile.direct
libgc/README.Mono
libgc/acinclude.m4
libgc/autogen.sh
libgc/configure.ac [new file with mode: 0644]
libgc/configure.in [deleted file]
libgc/doc/README
libgc/doc/README.changes
libgc/finalize.c
libgc/include/gc.h
libgc/mark_rts.c
libgc/version.h
man/mprof-report.1
mcs/build/tests.make
mcs/class/Accessibility/Accessibility-net_4_5.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj
mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj
mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj
mcs/class/EntityFramework.SqlServer/EntityFramework.SqlServer-net_4_5.csproj
mcs/class/EntityFramework/EntityFramework-net_4_5.csproj
mcs/class/Facades/Makefile
mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent-net_4_5.csproj
mcs/class/Facades/System.Collections/System.Collections-net_4_5.csproj
mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations-net_4_5.csproj
mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync-net_4_5.csproj
mcs/class/Facades/System.ComponentModel/System.ComponentModel-net_4_5.csproj
mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts-net_4_5.csproj
mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug-net_4_5.csproj
mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools-net_4_5.csproj
mcs/class/Facades/System.Diagnostics.Tracing/System.Diagnostics.Tracing-net_4_5.csproj
mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime-net_4_5.csproj
mcs/class/Facades/System.Globalization/System.Globalization-net_4_5.csproj
mcs/class/Facades/System.IO/System.IO-net_4_5.csproj
mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions-net_4_5.csproj
mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel-net_4_5.csproj
mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable-net_4_5.csproj
mcs/class/Facades/System.Linq/System.Linq-net_4_5.csproj
mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation-net_4_5.csproj
mcs/class/Facades/System.Net.Primitives/System.Net.Primitives-net_4_5.csproj
mcs/class/Facades/System.Net.Requests/System.Net.Requests-net_4_5.csproj
mcs/class/Facades/System.ObjectModel/System.ObjectModel-net_4_5.csproj
mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration-net_4_5.csproj
mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight-net_4_5.csproj
mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit-net_4_5.csproj
mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions-net_4_5.csproj
mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives-net_4_5.csproj
mcs/class/Facades/System.Reflection/System.Reflection-net_4_5.csproj
mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager-net_4_5.csproj
mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions-net_4_5.csproj
mcs/class/Facades/System.Runtime.InteropServices.WindowsRuntime/System.Runtime.InteropServices.WindowsRuntime-net_4_5.csproj
mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices-net_4_5.csproj
mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics-net_4_5.csproj
mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json-net_4_5.csproj
mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives-net_4_5.csproj
mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml-net_4_5.csproj
mcs/class/Facades/System.Runtime/System.Runtime-net_4_5.csproj
mcs/class/Facades/System.Security.Principal/System.Security.Principal-net_4_5.csproj
mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http-net_4_5.csproj
mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives-net_4_5.csproj
mcs/class/Facades/System.ServiceModel.Security/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Security/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Security/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions-net_4_5.csproj
mcs/class/Facades/System.Text.Encoding/System.Text.Encoding-net_4_5.csproj
mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions-net_4_5.csproj
mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel-net_4_5.csproj
mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks-net_4_5.csproj
mcs/class/Facades/System.Threading.Timer/System.Threading.Timer-net_4_5.csproj
mcs/class/Facades/System.Threading/System.Threading-net_4_5.csproj
mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter-net_4_5.csproj
mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument-net_4_5.csproj
mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer-net_4_5.csproj
mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj
mcs/class/I18N/Common/I18N-net_4_5.csproj
mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj
mcs/class/I18N/Other/I18N.Other-net_4_5.csproj
mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj
mcs/class/I18N/West/I18N.West-net_4_5.csproj
mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj
mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj
mcs/class/Makefile
mcs/class/Managed.Windows.Forms/.gitignore [new file with mode: 0644]
mcs/class/Managed.Windows.Forms/Makefile
mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms.X11Internal/X11Display.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageListStreamer.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11GTK.cs
mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs [new file with mode: 0644]
mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs [new file with mode: 0644]
mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Managed.Windows.Forms/resources/keyboards.resx
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj
mcs/class/Microsoft.Build.Engine/Test/various/Conditions.cs
mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/AL.cs
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ALTest.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources
mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs [new file with mode: 0644]
mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj
mcs/class/Microsoft.Build/Microsoft.Build.Construction/ProjectRootElement.cs
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs
mcs/class/Microsoft.Build/Microsoft.Build.Execution/ProjectInstance.cs
mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs
mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionConstructs.cs
mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionEvaluator.cs
mcs/class/Microsoft.Build/Microsoft.Build.Internal/ExpressionParserManual.cs
mcs/class/Microsoft.Build/Test/Microsoft.Build.Execution/ProjectInstanceTest.cs
mcs/class/Microsoft.Build/Test/Microsoft.Build.Internal/ExpressionParserTest.cs
mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj
mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj
mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj
mcs/class/Mono.C5/Mono.C5-net_4_5.csproj
mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj
mcs/class/Mono.CSharp/Test/Evaluator/TypesTest.cs
mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj
mcs/class/Mono.Cairo/Mono.Cairo/Context.cs
mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj
mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj
mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj
mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ILInterpreter.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/PrimitiveValue.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
mcs/class/Mono.Http/Mono.Http-net_4_5.csproj
mcs/class/Mono.Management/Mono.Management-net_4_5.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj
mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj
mcs/class/Mono.Options/Mono.Options-net_4_5.csproj
mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj
mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj
mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs
mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj
mcs/class/Mono.Security/Mono.Security-net_4_5.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_2_0.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_0.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj
mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
mcs/class/Mono.Security/Mono.Security_test.dll.sources
mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs [new file with mode: 0644]
mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs [new file with mode: 0644]
mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj
mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj
mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj
mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj
mcs/class/Npgsql/Npgsql-net_4_5.csproj
mcs/class/PEAPI/PEAPI-net_4_5.csproj
mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_5.csproj
mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj
mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_5.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj
mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj
mcs/class/System.Configuration/Makefile
mcs/class/System.Configuration/System.Configuration-net_4_5.csproj
mcs/class/System.Core/Microsoft.Win32.SafeHandles/SafeMemoryMappedViewHandle.cs
mcs/class/System.Core/System.Core-net_4_5.csproj
mcs/class/System.Core/System.Core-plaincore-net_4_5.csproj
mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFile.cs
mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedViewAccessor.cs
mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedViewStream.cs
mcs/class/System.Core/Test/System.IO.MemoryMappedFiles/MemoryMappedFileTest.cs
mcs/class/System.Core/mobile_System.Core.dll.sources
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj
mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj
mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj
mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs
mcs/class/System.Data/System.Data-net_4_5.csproj
mcs/class/System.Design/System.Design-net_4_5.csproj
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols-net_4_5.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj
mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj
mcs/class/System.Drawing/System.Drawing-net_4_5.csproj
mcs/class/System.Drawing/System.Drawing/Graphics.cs
mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj
mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj
mcs/class/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem-net_4_5.csproj
mcs/class/System.IO.Compression/System.IO.Compression-net_4_5.csproj
mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj
mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj
mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj
mcs/class/System.Json/System.Json-net_4_5.csproj
mcs/class/System.Management/System.Management-net_4_5.csproj
mcs/class/System.Messaging/System.Messaging-net_4_5.csproj
mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj
mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_5.csproj
mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj
mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs
mcs/class/System.Net/System.Net-net_4_5.csproj
mcs/class/System.Numerics/System.Numerics-net_4_5.csproj
mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj
mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj
mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj
mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj
mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj
mcs/class/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases-net_4_5.csproj
mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj
mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj
mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj
mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj
mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/RemotingThreadPool.cs
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs
mcs/class/System.Security/System.Security-net_4_5.csproj
mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj
mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs
mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj
mcs/class/System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj
mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel/ChannelFactory_1Test.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs
mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj
mcs/class/System.Transactions/System.Transactions-net_4_5.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj
mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj
mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj
mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs
mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs
mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj
mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost-net_4_5.csproj
mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj
mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_5.csproj
mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj
mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj
mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj
mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj
mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj
mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj
mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj
mcs/class/System.Web/System.Web-net_4_5.csproj
mcs/class/System.Web/System.Web-plainweb-net_4_5.csproj
mcs/class/System.Web/System.Web/HttpResponse.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj
mcs/class/System.Windows/System.Windows-net_4_5.csproj
mcs/class/System.XML/Makefile
mcs/class/System.XML/System.Xml-bare-net_4_5.csproj
mcs/class/System.XML/System.Xml-net_4_5.csproj
mcs/class/System.XML/System.Xml.XPath/.gitignore
mcs/class/System.Xaml/Makefile
mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs
mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs
mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs
mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs
mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs
mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs
mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs
mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs
mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs
mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs
mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs
mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs
mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs
mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs
mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs
mcs/class/System.Xaml/System.Xaml-net_4_5.csproj
mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs
mcs/class/System.Xaml/System.Xaml/XamlException.cs
mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs
mcs/class/System.Xaml/System.Xaml/XamlMember.cs
mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs
mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs
mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs
mcs/class/System.Xaml/System.Xaml/XamlParseException.cs
mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs
mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs
mcs/class/System.Xaml/System.Xaml/XamlServices.cs
mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs
mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj
mcs/class/System.Xml.Serialization/System.Xml.Serialization-net_4_5.csproj
mcs/class/System/System-bare-net_4_5.csproj
mcs/class/System/System-net_4_5.csproj
mcs/class/System/System-secxml-net_4_5.csproj
mcs/class/System/System.ComponentModel/BindingList.cs
mcs/class/System/System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs
mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs
mcs/class/System/System.Net/DigestClient.cs
mcs/class/System/System.Net/HttpWebRequest.cs
mcs/class/System/System.Net/MacProxy.cs
mcs/class/System/System.Net/ServicePointManager.cs
mcs/class/System/System.Net/SimpleAsyncResult.cs
mcs/class/System/System.Net/WebClient.cs
mcs/class/System/System.Net/WebConnection.cs
mcs/class/System/System.Net/WebConnectionData.cs
mcs/class/System/System.Net/WebConnectionGroup.cs
mcs/class/System/System.Net/WebConnectionStream.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs
mcs/class/System/Test/System.Net/HttpListener2Test.cs
mcs/class/System/Test/System.Net/WebClientTest.cs
mcs/class/System/Test/System.Security.Cryptography.X509Certificates/X509Certificate2Test.cs
mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj
mcs/class/WindowsBase/WindowsBase-net_4_5.csproj
mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs
mcs/class/corlib/System.IO/FileInfo.cs
mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs
mcs/class/corlib/System.Security.Claims/ClaimTypes.cs
mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs
mcs/class/corlib/System.Security.Claims/ClaimsPrincipal.cs
mcs/class/corlib/System/AggregateException.cs
mcs/class/corlib/System/Console.iOS.cs
mcs/class/corlib/System/DateTime.cs
mcs/class/corlib/System/Environment.cs
mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs
mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentQueueTests.cs
mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
mcs/class/corlib/Test/System/DateTimeTest.cs
mcs/class/corlib/corlib-net_4_5.csproj
mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs
mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs [deleted file]
mcs/class/monodoc/monodoc-net_4_5.csproj
mcs/class/monodoc/monodoc_test.dll.sources
mcs/errors/CS0012-23-lib.il [new file with mode: 0644]
mcs/errors/CS1607-3-lib.cs [deleted file]
mcs/errors/CS8009-lib.cs [new file with mode: 0644]
mcs/errors/Makefile
mcs/errors/cs0012-23.cs [new file with mode: 0644]
mcs/errors/cs0070-2.cs [new file with mode: 0644]
mcs/errors/cs0127-2.cs [deleted file]
mcs/errors/cs0127-3.cs [deleted file]
mcs/errors/cs0127-4.cs [deleted file]
mcs/errors/cs0133-6.cs [new file with mode: 0644]
mcs/errors/cs0133-7.cs [new file with mode: 0644]
mcs/errors/cs0181-2.cs [new file with mode: 0644]
mcs/errors/cs0181-3.cs [new file with mode: 0644]
mcs/errors/cs0181-4.cs [new file with mode: 0644]
mcs/errors/cs0181.cs [new file with mode: 0644]
mcs/errors/cs0182-10.cs [deleted file]
mcs/errors/cs0182-12.cs [deleted file]
mcs/errors/cs0182-13.cs [deleted file]
mcs/errors/cs0182-2.cs [deleted file]
mcs/errors/cs0253-3.cs [new file with mode: 0644]
mcs/errors/cs0545-2.cs [new file with mode: 0644]
mcs/errors/cs0546-2.cs [new file with mode: 0644]
mcs/errors/cs0591-2.cs [new file with mode: 0644]
mcs/errors/cs0591-3.cs [new file with mode: 0644]
mcs/errors/cs0591-4.cs [new file with mode: 0644]
mcs/errors/cs0591-5.cs [new file with mode: 0644]
mcs/errors/cs0591-6.cs [new file with mode: 0644]
mcs/errors/cs0591.cs
mcs/errors/cs0647-10.cs [deleted file]
mcs/errors/cs0647-11.cs [deleted file]
mcs/errors/cs0647-12.cs [deleted file]
mcs/errors/cs0647-13.cs [deleted file]
mcs/errors/cs0647-15.cs [deleted file]
mcs/errors/cs0647-16.cs [deleted file]
mcs/errors/cs0647-17.cs [deleted file]
mcs/errors/cs0647-18.cs [deleted file]
mcs/errors/cs0647-19.cs [deleted file]
mcs/errors/cs0647-2.cs [deleted file]
mcs/errors/cs0647-20.cs [deleted file]
mcs/errors/cs0647-3.cs [deleted file]
mcs/errors/cs0647-4.cs [deleted file]
mcs/errors/cs0647-5.cs [deleted file]
mcs/errors/cs0647-6.cs [deleted file]
mcs/errors/cs0647-7.cs [deleted file]
mcs/errors/cs0647-9.cs [deleted file]
mcs/errors/cs0647.cs [deleted file]
mcs/errors/cs1501-16.cs [new file with mode: 0644]
mcs/errors/cs1593-5.cs [new file with mode: 0644]
mcs/errors/cs1607-2.cs [deleted file]
mcs/errors/cs1607-3.cs [deleted file]
mcs/errors/cs1617.cs
mcs/errors/cs1644-35.cs [new file with mode: 0644]
mcs/errors/cs1700.cs
mcs/errors/cs1984.cs [deleted file]
mcs/errors/cs1985-2.cs [deleted file]
mcs/errors/cs1985.cs [deleted file]
mcs/errors/cs1997-2.cs [deleted file]
mcs/errors/cs4017.cs
mcs/errors/cs4024.cs [new file with mode: 0644]
mcs/errors/cs4025.cs [new file with mode: 0644]
mcs/errors/cs4026.cs [new file with mode: 0644]
mcs/errors/cs4029.cs [new file with mode: 0644]
mcs/errors/cs7023-2.cs [new file with mode: 0644]
mcs/errors/cs7023.cs [new file with mode: 0644]
mcs/errors/cs7025.cs [new file with mode: 0644]
mcs/errors/cs7030.cs [new file with mode: 0644]
mcs/errors/cs7034-2.cs [new file with mode: 0644]
mcs/errors/cs7034-3.cs [new file with mode: 0644]
mcs/errors/cs7034.cs [new file with mode: 0644]
mcs/errors/cs7035.cs [new file with mode: 0644]
mcs/errors/cs7042-2.cs [new file with mode: 0644]
mcs/errors/cs7042.cs [new file with mode: 0644]
mcs/errors/cs7049.cs [new file with mode: 0644]
mcs/errors/cs7050.cs [new file with mode: 0644]
mcs/errors/cs7051.cs [new file with mode: 0644]
mcs/errors/cs7055-2.cs [new file with mode: 0644]
mcs/errors/cs7055.cs [new file with mode: 0644]
mcs/errors/cs7059.cs [new file with mode: 0644]
mcs/errors/cs7070-2.cs [new file with mode: 0644]
mcs/errors/cs7070-3.cs [new file with mode: 0644]
mcs/errors/cs7070-4.cs [new file with mode: 0644]
mcs/errors/cs7070.cs [new file with mode: 0644]
mcs/errors/cs7080.cs [new file with mode: 0644]
mcs/errors/cs7081.cs [new file with mode: 0644]
mcs/errors/cs7082.cs [new file with mode: 0644]
mcs/errors/cs7083-2.cs [new file with mode: 0644]
mcs/errors/cs7083.cs [new file with mode: 0644]
mcs/errors/cs7094.cs [new file with mode: 0644]
mcs/errors/cs8009.cs [new file with mode: 0644]
mcs/errors/cs8030-2.cs [new file with mode: 0644]
mcs/errors/cs8030-3.cs [new file with mode: 0644]
mcs/errors/cs8030.cs [new file with mode: 0644]
mcs/errors/cs8031.cs [new file with mode: 0644]
mcs/jay/main.c
mcs/mcs/assembly.cs
mcs/mcs/async.cs
mcs/mcs/attribute.cs
mcs/mcs/cfold.cs
mcs/mcs/class.cs
mcs/mcs/codegen.cs
mcs/mcs/constant.cs
mcs/mcs/context.cs
mcs/mcs/cs-parser.jay
mcs/mcs/delegate.cs
mcs/mcs/ecore.cs
mcs/mcs/eval.cs
mcs/mcs/expression.cs
mcs/mcs/field.cs
mcs/mcs/generic.cs
mcs/mcs/iterators.cs
mcs/mcs/mcs-net_4_5.csproj
mcs/mcs/method.cs
mcs/mcs/nullable.cs
mcs/mcs/parameter.cs
mcs/mcs/property.cs
mcs/mcs/report.cs
mcs/mcs/settings.cs
mcs/mcs/statement.cs
mcs/mcs/typespec.cs
mcs/tests/gtest-311.cs [deleted file]
mcs/tests/gtest-391.cs
mcs/tests/gtest-614.cs [new file with mode: 0644]
mcs/tests/gtest-615.cs [new file with mode: 0644]
mcs/tests/gtest-etree-01.cs
mcs/tests/gtest-optional-31.cs [new file with mode: 0644]
mcs/tests/test-833.cs
mcs/tests/test-859.cs [new file with mode: 0644]
mcs/tests/test-892.cs [new file with mode: 0644]
mcs/tests/test-893.cs [new file with mode: 0644]
mcs/tests/test-894.cs [new file with mode: 0644]
mcs/tests/test-895.cs [new file with mode: 0644]
mcs/tests/test-896.cs [new file with mode: 0644]
mcs/tests/test-async-13.cs
mcs/tests/test-async-15.cs
mcs/tests/test-async-63.cs [new file with mode: 0644]
mcs/tests/test-async-64.cs [new file with mode: 0644]
mcs/tests/test-async-65.cs [new file with mode: 0644]
mcs/tests/test-async-66.cs [new file with mode: 0644]
mcs/tests/test-async-67.cs [new file with mode: 0644]
mcs/tests/test-async-69.cs [new file with mode: 0644]
mcs/tests/test-ex-filter-03.cs [new file with mode: 0644]
mcs/tests/test-ex-filter-04.cs [new file with mode: 0644]
mcs/tests/test-xml-063-ref.xml
mcs/tests/test-xml-063.cs
mcs/tests/ver-il-net_4_5.xml
mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
mcs/tools/linker/Mono.Linker/LinkContext.cs
mcs/tools/msbuild/Main.cs
mcs/tools/msbuild/Makefile
mcs/tools/msbuild/SolutionParser.cs
mcs/tools/msbuild/data/msbuild.rsp [new file with mode: 0644]
mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets
mcs/tools/xbuild/data/4.0/Microsoft.CSharp.targets
mono/arch/s390x/s390x-codegen.h
mono/dis/util.c
mono/io-layer/io.c
mono/io-layer/security.c
mono/metadata/Makefile.am.in
mono/metadata/boehm-gc.c
mono/metadata/class-internals.h
mono/metadata/class.c
mono/metadata/coree.c
mono/metadata/file-mmap-posix.c [new file with mode: 0644]
mono/metadata/file-mmap-windows.c [new file with mode: 0644]
mono/metadata/file-mmap.h [new file with mode: 0644]
mono/metadata/gc-internal.h
mono/metadata/icall-def.h
mono/metadata/icall.c
mono/metadata/marshal.c
mono/metadata/metadata-internals.h
mono/metadata/metadata.c
mono/metadata/metadata.h
mono/metadata/object.c
mono/metadata/reflection.c
mono/metadata/sgen-alloc.c
mono/metadata/sgen-cardtable.c
mono/metadata/sgen-debug.c
mono/metadata/sgen-descriptor.c
mono/metadata/sgen-descriptor.h
mono/metadata/sgen-fin-weak-hash.c
mono/metadata/sgen-gc.c
mono/metadata/sgen-gc.h
mono/metadata/sgen-los.c
mono/metadata/sgen-marksweep.c
mono/metadata/sgen-memory-governor.c
mono/metadata/sgen-memory-governor.h
mono/metadata/sgen-new-bridge.c
mono/metadata/sgen-nursery-allocator.c
mono/metadata/sgen-old-bridge.c
mono/metadata/sgen-pinning.c
mono/metadata/sgen-pinning.h
mono/metadata/sgen-simple-nursery.c
mono/metadata/sgen-split-nursery.c
mono/metadata/sgen-tarjan-bridge.c
mono/metadata/threads.c
mono/metadata/verify.c
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/basic-calls.cs
mono/mini/cpu-ppc.md
mono/mini/cpu-ppc64.md
mono/mini/cpu-s390x.md
mono/mini/cpu-x86.md
mono/mini/debugger-agent.c
mono/mini/driver.c
mono/mini/exceptions-amd64.c
mono/mini/exceptions-x86.c
mono/mini/main.c
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-gc.c
mono/mini/mini-llvm.c
mono/mini/mini-ppc.c
mono/mini/mini-s390x.c
mono/mini/mini-s390x.h
mono/mini/mini-windows.c
mono/mini/mini-x86.c
mono/mini/mini-x86.h
mono/mini/mini.c
mono/mini/mini.h
mono/mini/objects.cs
mono/mini/ssa.c
mono/mini/support-s390x.h [new file with mode: 0644]
mono/mini/tramp-s390x.c
mono/profiler/decode.c
mono/profiler/proflog.c
mono/tests/Makefile.am
mono/tests/reflection-load-with-context-lib.cs [new file with mode: 0644]
mono/tests/reflection-load-with-context-second-lib.cs [new file with mode: 0644]
mono/tests/reflection-load-with-context.cs [new file with mode: 0644]
mono/utils/atomic.c
mono/utils/atomic.h
mono/utils/gc_wrapper.h
mono/utils/lock-free-alloc.c
mono/utils/mono-codeman.c
mono/utils/mono-context.h
mono/utils/mono-counters.c
mono/utils/mono-hwcap-s390x.c
mono/utils/mono-hwcap-s390x.h
mono/utils/mono-linked-list-set.c
mono/utils/mono-mmap.c
mono/utils/mono-semaphore.c
mono/utils/mono-threads-mach-helper.c
mono/utils/mono-threads-windows.c
mono/utils/mono-threads.c
mono/utils/mono-threads.h
mono/utils/strtod.c
mono/utils/win64.asm [new file with mode: 0644]
msvc/libmono.vcxproj
msvc/libmonoruntime.vcxproj
msvc/libmonoutils.vcxproj
msvc/mono.props
msvc/monosgen64.def [new file with mode: 0644]
msvc/scripts/csproj.tmpl
msvc/scripts/genproj.cs
support/macros.c
support/minizip/zip.c
support/stdio.c
support/supportw.c
support/sys-time.c
support/syslog.c
support/x-struct-str.c
support/zlib-helper.c
winconfig.h

index c7e0c474a2dcaab7cec15a4004a7f66ffa893f44..5c4cb01ff15ecaa8cc8e61dd4101ee6985956522 100644 (file)
@@ -1,5 +1,5 @@
 # ensure LF endings on all checkouts
-configure.in crlf=input
+configure.ac crlf=input
 
 # ensure native line endings on checkout
 *.c    crlf
index 30f8cdef0f477fde761d3e515ed5b9faf9aa343e..7d2251fd6405bcef8e7dfd26848bf2066df97d21 100644 (file)
@@ -1,5 +1,7 @@
 ACLOCAL_AMFLAGS = -I m4
 
+AM_CFLAGS = $(WERROR_CFLAGS)
+
 MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono
 
 if CROSS_COMPILING
@@ -49,6 +51,8 @@ dist-hook:
        test -d $(distdir)/mcs || mkdir $(distdir)/mcs
        d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive
        rm -rf `find $(top_distdir)/external -path '*\.git' -and -type d`
+       cp mcs/class/lib/basic/System.Configuration.dll mcs/class/lib/monolite/
+       cp mcs/class/lib/basic/System.Security.dll mcs/class/lib/monolite/
 # Disable this for now because it is very slow and causes wrench to timeout:
 #      test ! -d $(GIT_DIR) || ./scripts/commits-to-changelog.py --root=$(distdir) last-commit-with-compulsory-changelog-entry
 
@@ -160,9 +164,9 @@ package-inputs:
        done
        echo "</root>" >> msvc/scripts/order.xml
 
-# Update llvm version in configure.in to the output of $LLVM_DIR/bin/llvm-config --version
+# Update llvm version in configure.ac to the output of $LLVM_DIR/bin/llvm-config --version
 update-llvm-version:
        if test "x$$LLVM_DIR" = "x"; then echo "Set the make variable LLVM_DIR to the directory containing the LLVM installation."; exit 1; fi
-       REV=`$(LLVM_DIR)/bin/llvm-config --version` && sed -e "s,expected_llvm_version=.*,expected_llvm_version=\"$$REV\"," < configure.in > tmp && mv tmp configure.in && echo "Version set to $$REV."
+       REV=`$(LLVM_DIR)/bin/llvm-config --version` && sed -e "s,expected_llvm_version=.*,expected_llvm_version=\"$$REV\"," < configure.ac > tmp && mv tmp configure.ac && echo "Version set to $$REV."
 
 
index 07c950004d70bc09294b11f4656a3964d4534ca0..f42e3000815323f0814ed6afce4812291c0f3ee9 100644 (file)
--- a/README.md
+++ b/README.md
@@ -34,6 +34,10 @@ a. Build Requirements
   * libzlib - This library and the development headers are required for compression
 file support in the 2.0 profile.
 
+ 4. Mono is required to build Mono. Use a system package or monolite (explained further below)
+ 5. If you have a system Mono (not monolite), you will need to read this: http://mono-project.com/Parallel_Mono_Environments#Setting_up_a_Build_Environment
+
 b. Building the Software
 ------------------------
 
index 16fecf7f8608938102a35d90aadc6319ada10d17..5216cd14a5ef88245107fe9f27c1821914e14025 100644 (file)
@@ -22,7 +22,7 @@ if test x$GCC != xyes; then
     dolt_supported=no
 fi
 case $host in
-i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
 |amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*)
     pic_options='-fPIC'
     ;;
@@ -158,7 +158,7 @@ modeok=false
 tagok=false
 for arg in "$[]@"; do
     case "$arg" in
-        --silent) ;;    
+        --silent) ;;
         --mode=compile) modeok=true ;;
         --tag=CC|--tag=CXX) tagok=true ;;
         --quiet) ;;
index a576ed6672afab5a9697e610ce8b6a9e0265b208..5213ecffd3c8f41d5c323cbbb2104d1a4663380f 100755 (executable)
@@ -37,7 +37,7 @@ if [ -z "$LIBTOOL" ]; then
   fi
 fi
 
-(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
+(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && {
   ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || {
     echo
     echo "**Error**: You must have \`libtool' installed to compile Mono."
@@ -47,8 +47,8 @@ fi
   }
 }
 
-grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && {
-  grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
+grep "^AM_GNU_GETTEXT" $srcdir/configure.ac >/dev/null && {
+  grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \
   (gettext --version) < /dev/null > /dev/null 2>&1 || {
     echo
     echo "**Error**: You must have \`gettext' installed to compile Mono."
@@ -95,7 +95,7 @@ xlc )
 esac
 
 
-if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
+if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then
   if test -z "$NO_LIBTOOLIZE" ; then 
     echo "Running libtoolize..."
     ${LIBTOOL}ize --force --copy
@@ -138,7 +138,7 @@ aclocal -Wnone -I m4 -I . $ACLOCAL_FLAGS || {
   exit 1
 }
 
-if grep "^AC_CONFIG_HEADERS" configure.in >/dev/null; then
+if grep "^AC_CONFIG_HEADERS" configure.ac >/dev/null; then
   echo "Running autoheader..."
   autoheader || { echo "**Error**: autoheader failed."; exit 1; }
 fi
index 8bcb5ff973c1eb516b0550121872b754aef841ee..4c8ed8c1dc4f6e04ae258737d01c76442172c609 100755 (executable)
@@ -57,7 +57,7 @@ function setup ()
     CROSS_DLL_DIR="$CROSS_DIR/bin"
     PATH=$CROSS_BIN_DIR:$PATH
 
-    MONO_VERSION=`grep AC_INIT configure.in | cut -d ',' -f 2|tr -d '\[ \]'`
+    MONO_VERSION=`grep AC_INIT configure.ac | cut -d ',' -f 2|tr -d '\[ \]'`
     
     if [ -d ./.git ]; then
        MONO_GIT_COMMIT="`git log -1 --format=format:%t`"
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..0551bfe
--- /dev/null
@@ -0,0 +1,3807 @@
+# Process this file with autoconf to produce a configure script.
+#AC_PREREQ([2.62])
+
+AC_INIT(mono, [3.6.1],
+        [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
+
+AC_CONFIG_SRCDIR([README.md])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CANONICAL_SYSTEM
+AC_CANONICAL_HOST
+
+# Gross hack to enable 'make dist' on automake 1.9+tar 1.14.
+# The extra brackets are to foil regex-based scans.
+m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
+
+AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign subdir-objects])
+AC_CONFIG_HEADERS([config.h])
+AM_MAINTAINER_MODE
+
+API_VER=2.0
+AC_SUBST(API_VER)
+
+AC_PROG_LN_S
+
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+case $host_os in
+*cygwin* )
+                echo "Run configure using ./configure --host=i686-pc-mingw32"
+                exit 1
+esac
+
+# In case of cygwin, override LN_S, irrespective of what it determines.
+# The build uses cygwin, but the actual runtime doesn't.
+case $host_os in
+*cygwin* ) LN_S='cp -p';;
+esac
+
+dnl
+dnl libgc checks
+dnl
+
+gc_headers=no
+gc=included
+gc_msg="included Boehm"
+use_included_gc=no
+libgc_configure_args=
+
+if test -d $srcdir/libgc ; then
+  gc_default=included
+else
+  gc_default=boehm
+fi
+
+# These variables are the CPPFLAGS/CFLAGS passed to libgc's configure
+# libgc should inherit the original CFLAGS/CPPFLAGS passed to configure, i.e. -O0
+CPPFLAGS_FOR_LIBGC=$CPPFLAGS
+CFLAGS_FOR_LIBGC=$CFLAGS
+CPPFLAGS_FOR_EGLIB=$CPPFLAGS
+CFLAGS_FOR_EGLIB=$CFLAGS
+
+# libgc uses some deprecated APIs
+CFLAGS_FOR_LIBGC="$CFLAGS -Wno-deprecated-declarations"
+
+#
+# These are the flags that need to be stored in the mono.pc file for 
+# compiling code that will embed Mono
+#
+libmono_cflags=""
+libmono_ldflags=""
+AC_SUBST(libmono_cflags)
+AC_SUBST(libmono_ldflags)
+
+# Variable to have relocatable .pc files (lib, or lib64)
+reloc_libdir=`basename ${libdir}`
+AC_SUBST(reloc_libdir)
+
+dnl if linker handles the version script
+no_version_script=no
+
+# Set to yes if Unix sockets cannot be created in an anonymous namespace
+need_link_unlink=no
+
+#Set to extra linker flags to be passed to the runtime binaries (mono /mono-sgen)
+extra_runtime_ldflags=""
+
+# Thread configuration inspired by sleepycat's db
+AC_MSG_CHECKING([host platform characteristics])
+libgc_threads=no
+has_dtrace=no
+parallel_mark=yes
+ikvm_native=yes
+
+case "$host" in
+       powerpc*-*-linux*)
+               # https://bugzilla.novell.com/show_bug.cgi?id=504411
+               disable_munmap=yes
+       ;;
+esac
+
+host_win32=no
+target_win32=no
+platform_android=no
+platform_darwin=no
+case "$host" in
+       *-mingw*|*-*-cygwin*)
+               AC_DEFINE(HOST_WIN32,1,[Host Platform is Win32])
+               AC_DEFINE(DISABLE_PORTABILITY,1,[Disable the io-portability layer])
+               AC_DEFINE(PLATFORM_NO_SYMLINKS,1,[This platform does not support symlinks])
+               host_win32=yes
+               mono_cv_clang=no
+               if test "x$cross_compiling" = "xno"; then
+                       target_win32=yes
+                       if test "x$host" == "x$build" -a "x$host" == "x$target"; then
+                               AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
+                       fi
+               else
+                       target_win32=yes
+                       AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32/MinGW])
+                       AC_DEFINE(MINGW_CROSS_COMPILE,1,[Cross-compiling using MinGW])
+               fi
+               HOST_CC="gcc"
+               # Windows 2000 is required that includes Internet Explorer 5.01
+               CPPFLAGS="$CPPFLAGS -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024"
+               LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm -lkernel32"
+               libmono_cflags="-mms-bitfields -mwindows"
+               libmono_ldflags="-mms-bitfields -mwindows"
+               libdl=
+               libgc_threads=win32
+               gc_default=included
+               with_sigaltstack=no
+               LN_S=cp
+               # This forces libgc to use the DllMain based thread registration code on win32
+               libgc_configure_args="$libgc_configure_args --enable-win32-dllmain=yes"
+               ;;
+       *-*-*netbsd*)
+               host_win32=no
+               CPPFLAGS="$CPPFLAGS -D_REENTRANT -DGC_NETBSD_THREADS -D_GNU_SOURCE"
+               libmono_cflags="-D_REENTRANT"
+               LDFLAGS="$LDFLAGS -pthread"
+               CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD"
+               libmono_ldflags="-pthread"
+               need_link_unlink=yes
+               libdl="-ldl"
+               libgc_threads=pthreads
+               with_sigaltstack=no
+               use_sigposix=yes
+               ;;
+       *-*-*freebsd*)
+               host_win32=no
+               if test "x$PTHREAD_CFLAGS" = "x"; then
+                       CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS"
+                       libmono_cflags=
+               else
+                       CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS -DGC_FREEBSD_THREADS"
+                       libmono_cflags="$PTHREAD_CFLAGS"
+               fi
+               if test "x$PTHREAD_LIBS" = "x"; then
+                       LDFLAGS="$LDFLAGS -pthread -L/usr/local/lib"
+                       libmono_ldflags="-pthread"
+               else
+                       LDFLAGS="$LDFLAGS $PTHREAD_LIBS -L/usr/local/lib"
+                       libmono_ldflags="$PTHREAD_LIBS"
+               fi
+               CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD"
+               need_link_unlink=yes
+               AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer])
+               libdl=
+               libgc_threads=pthreads
+               use_sigposix=yes
+               has_dtrace=yes
+               ;;
+       *-*-*openbsd*)
+               host_win32=no
+               CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DPLATFORM_BSD -D_REENTRANT -DUSE_MMAP"
+               if test "x$disable_munmap" != "xyes"; then
+               CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
+               fi
+               libmono_cflags="-D_THREAD_SAFE -D_REENTRANT"
+               LDFLAGS="$LDFLAGS -pthread"
+               need_link_unlink=yes
+               AC_DEFINE(PTHREAD_POINTER_ID)
+               libdl=
+               gc_default=boehm
+               libgc_threads=pthreads
+               with_sigaltstack=no
+               use_sigposix=yes
+               ;;
+       *-*-linux-android*)
+               host_win32=no
+               platform_android=yes
+               AC_DEFINE(PLATFORM_ANDROID,1,[Targeting the Android platform])
+               AC_DEFINE(TARGET_ANDROID,1,[Targeting the Android platform])
+
+               CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
+               if test "x$disable_munmap" != "xyes"; then
+                       CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
+               fi
+               libmono_cflags="-D_REENTRANT"
+               libdl="-ldl"
+               libgc_threads=pthreads
+               use_sigposix=yes
+
+               with_tls=pthread
+               with_sigaltstack=no
+               with_static_mono=no
+
+               # Android doesn't support boehm, as it's missing <link.h>
+               support_boehm=no
+               with_gc=sgen
+
+               # isinf(3) requires -lm; see isinf check below
+               LDFLAGS="$LDFLAGS -lm"
+
+               # Bionic's <pthread.h> sets PTHREAD_STACK_MIN=2*PAGE_SIZE; doesn't define
+               # PAGE_SIZE; breaks mono/io-layer/collection.c
+               # Bionic doesn't provide S_IWRITE; breaks io-layer/io.c
+               CFLAGS="$CFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR"
+               CXXFLAGS="$CXXFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR"
+
+               # The configure check can't detect this
+               AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support])
+
+               # to bypass the underscore linker check, can't work when cross-compiling
+               mono_cv_uscore=yes
+               mono_cv_clang=no
+               ;;
+       *-*-linux*)
+               host_win32=no
+               CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
+               if test "x$disable_munmap" != "xyes"; then
+                       CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
+               fi
+               libmono_cflags="-D_REENTRANT"
+               libdl="-ldl"
+               libgc_threads=pthreads
+               use_sigposix=yes
+               if test "x$cross_compiling" != "xno"; then
+                       # to bypass the underscore linker check, not
+                       # available during cross-compilation
+                       mono_cv_uscore=no
+                fi
+               case "$host" in
+               aarch64-*)
+                       support_boehm=no
+                       with_gc=sgen
+                       ;;
+               esac
+               ;;
+       *-*-nacl*)
+               host_win32=no
+               CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
+               if test "x$disable_munmap" != "xyes"; then
+                       CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
+               fi
+               libmono_cflags="-D_REENTRANT"
+               libdl=
+               libgc_threads=pthreads
+               gc_default=boehm
+               use_sigposix=yes
+               ikvm_native=no
+               AC_DEFINE(DISABLE_SOCKETS,1,[Disable sockets support])
+               AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support])
+               ;;
+       *-*-hpux*)
+               host_win32=no
+               CPPFLAGS="$CPPFLAGS -DGC_HPUX_THREADS -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_REENTRANT"
+               # +ESdbgasm only valid on bundled cc on RISC
+               # silently ignored for ia64
+               if test $GCC != "yes"; then
+                       CFLAGS="$CFLAGS +ESdbgasm"
+                       # Arrange for run-time dereferencing of null
+                       # pointers to produce a SIGSEGV signal.
+                       LDFLAGS="$LDFLAGS -z"
+               fi
+               CFLAGS="$CFLAGS +ESdbgasm"
+               LDFLAGS="$LDFLAGS -z"
+               libmono_cflags="-D_REENTRANT"
+               libmono_ldflags="-lpthread"
+               libgc_threads=pthreads
+               need_link_unlink=yes
+               use_sigposix=yes
+               ;;
+       *-*-solaris*)
+               host_win32=no
+               CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP -DPLATFORM_SOLARIS"
+               need_link_unlink=yes
+               libmono_cflags="-D_REENTRANT"
+               libgc_threads=pthreads
+               # This doesn't seem to work on solaris/x86, but the configure test runs
+               with_tls=pthread
+               has_dtrace=yes
+               use_sigposix=yes
+               enable_solaris_tar_check=yes
+               ;;
+       *-*-darwin*)
+               parallel_mark="Disabled_Currently_Hangs_On_MacOSX"
+               host_win32=no
+               platform_darwin=yes
+               target_mach=yes
+               CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP"
+               CPPFLAGS="$CPPFLAGS -DGetCurrentProcess=MonoGetCurrentProcess -DGetCurrentThread=MonoGetCurrentThread -DCreateEvent=MonoCreateEvent"
+               libmono_cflags="-D_THREAD_SAFE"
+               need_link_unlink=yes
+               AC_DEFINE(PTHREAD_POINTER_ID)
+               AC_DEFINE(USE_MACH_SEMA, 1, [...])
+               no_version_script=yes
+               libdl=
+               libgc_threads=pthreads
+               has_dtrace=yes
+               if test "x$cross_compiling" = "xyes"; then
+                       has_broken_apple_cpp=yes
+               fi
+               dnl Snow Leopard is horribly broken -- it reports itself as i386-apple-darwin*, but
+               dnl its gcc defaults to 64-bit mode.  They have also deprecated the usage of ucontext
+               dnl we need to set some flags to build our 32-bit binaries on 10.6 properly
+               case "$host" in
+                       dnl Snow Leopard and newer config.guess reports as this
+                       i*86-*-darwin*)
+                               BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE"
+                               BROKEN_DARWIN_CPPFLAGS="-D_XOPEN_SOURCE"
+                               CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_CPPFLAGS"
+                               CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS"
+                               CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS"
+                               CCASFLAGS="$CCASFLAGS $BROKEN_DARWIN_FLAGS"
+                               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_CPPFLAGS"
+                               CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS"
+                               CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_CPPFLAGS"
+                               CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS"
+                               ;;
+                       x*64-*-darwin*)
+                               ;;
+                       arm*-darwin*)
+                               has_dtrace=no
+                               ;;                      
+               esac
+               ;;
+       *-*-haiku*)
+               host_win32=no
+               CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_THREAD_SAFE"
+               libmono_cflags="-D_REENTRANT -D_THREAD_SAFE"
+               libdl=
+               LIBS="$LIBS -lnetwork"
+               need_link_unlink=yes
+               AC_DEFINE(PTHREAD_POINTER_ID)
+               libgc_threads=pthreads
+               use_sigposix=yes
+               ;;
+       *)
+               AC_MSG_WARN([*** Please add $host to configure.ac checks!])
+               host_win32=no
+               libdl="-ldl"
+               ;;
+esac
+AC_MSG_RESULT(ok)
+
+if test x$need_link_unlink = xyes; then
+   AC_DEFINE(NEED_LINK_UNLINK, 1, [Define if Unix sockets cannot be created in an anonymous namespace])
+fi
+
+AC_SUBST(extra_runtime_ldflags)
+AM_CONDITIONAL(HOST_WIN32, test x$host_win32 = xyes)
+AM_CONDITIONAL(TARGET_WIN32, test x$target_win32 = xyes)
+AM_CONDITIONAL(PLATFORM_LINUX, echo x$target_os | grep -q linux)
+AM_CONDITIONAL(PLATFORM_DARWIN, test x$platform_darwin = xyes)
+AM_CONDITIONAL(PLATFORM_SIGPOSIX, test x$use_sigposix = xyes)
+AM_CONDITIONAL(PLATFORM_ANDROID, test x$platform_android = xyes)
+
+AC_CHECK_TOOL(CC, gcc, gcc)
+AC_PROG_CC
+AC_CHECK_TOOL(CXX, g++, g++)
+AC_PROG_CXX
+AM_PROG_AS
+AC_PROG_INSTALL
+AC_PROG_AWK
+AM_PROG_CC_C_O
+dnl We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4
+: ${CCAS='$(CC)'}
+# Set ASFLAGS if not already set.
+: ${CCASFLAGS='$(CFLAGS)'}
+AC_SUBST(CCAS)
+AC_SUBST(CCASFLAGS)
+
+# AC_PROG_CXX helpfully sets CXX to g++ even if no c++ compiler is found so check
+# GXX instead. See http://lists.gnu.org/archive/html/bug-autoconf/2002-04/msg00056.html
+if test "x$CXX" = "xg++"; then
+       if test "x$GXX" != "xyes"; then
+               # automake/libtool is so broken, it requires g++ even if the c++ sources
+               # are inside automake conditionals
+               AC_MSG_ERROR([You need to install g++])
+       fi
+fi
+
+dnl may require a specific autoconf version
+dnl AC_PROG_CC_FOR_BUILD
+dnl CC_FOR_BUILD not automatically detected
+CC_FOR_BUILD=$CC
+CFLAGS_FOR_BUILD=$CFLAGS
+BUILD_EXEEXT=
+if test "x$cross_compiling" = "xyes"; then
+       CC_FOR_BUILD=cc
+       CFLAGS_FOR_BUILD=
+       BUILD_EXEEXT=""
+fi
+AC_SUBST(CC_FOR_BUILD)
+AC_SUBST(CFLAGS_FOR_BUILD)
+AC_SUBST(HOST_CC)
+AC_SUBST(BUILD_EXEEXT)
+
+AM_CONDITIONAL(CROSS_COMPILING, [test x$cross_compiling = xyes])
+AM_CONDITIONAL(USE_BATCH_FILES, [test x$host_win32 = xyes -a x$cross_compiling = xyes])
+
+# Set STDC_HEADERS
+AC_HEADER_STDC
+AC_LIBTOOL_WIN32_DLL
+# This causes monodis to not link correctly
+#AC_DISABLE_FAST_INSTALL
+AM_PROG_LIBTOOL
+# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.
+DOLT
+
+export_ldflags=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+AC_SUBST(export_ldflags)
+
+# Test whenever ld supports -version-script
+AC_PROG_LD
+AC_PROG_LD_GNU
+if test "x$lt_cv_prog_gnu_ld" = "xno"; then
+   no_version_script=yes
+fi
+
+AM_ICONV()
+
+AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes)
+
+AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h sys/uio.h sys/param.h libproc.h)
+AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h)
+AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],
+                  [], [], [#include <stddef.h>
+                 #include <sys/socket.h>
+                 #include <linux/socket.h>])
+
+AC_CHECK_HEADERS(sys/user.h, [], [],
+[
+#ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+])
+
+AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
+if test x$have_zlib = xyes; then
+   AC_TRY_COMPILE([#include <zlib.h>], [
+   #if defined(ZLIB_VERNUM) && (ZLIB_VERNUM >= 0x1230)
+   return 0;
+   #else
+   #error No good zlib found
+   #endif
+   ],[
+       AC_MSG_RESULT(Using system zlib)
+       zlib_msg="system zlib"
+       AC_DEFINE(HAVE_SYS_ZLIB,1,[Have system zlib])
+   ],[
+       AC_MSG_RESULT(Using embedded zlib)
+       have_zlib=no
+       zlib_msg="bundled zlib"
+   ])
+fi
+
+AM_CONDITIONAL(HAVE_ZLIB, test x$have_zlib = xyes)
+AC_DEFINE(HAVE_ZLIB,1,[Have system zlib])
+
+# for mono/metadata/debug-symfile.c
+AC_CHECK_HEADERS(elf.h)
+
+# for support
+AC_CHECK_HEADERS(poll.h)
+AC_CHECK_HEADERS(sys/poll.h)
+AC_CHECK_HEADERS(sys/wait.h)
+AC_CHECK_HEADERS(grp.h)
+AC_CHECK_HEADERS(syslog.h)
+
+# for mono/dis
+AC_CHECK_HEADERS(wchar.h)
+AC_CHECK_HEADERS(ieeefp.h)
+AC_MSG_CHECKING(for isinf)
+AC_TRY_LINK([#include <math.h>], [
+       int f = isinf (1.0);
+], [
+       AC_MSG_RESULT(yes)
+       AC_DEFINE(HAVE_ISINF, 1, [isinf available])
+], [
+       # We'll have to use signals
+       AC_MSG_RESULT(no)
+])
+# mingw
+AC_CHECK_FUNCS(_finite, , AC_MSG_CHECKING(for _finite in math.h)
+       AC_TRY_LINK([#include <math.h>], 
+       [ _finite(0.0); ], 
+       AC_DEFINE(HAVE__FINITE, 1, [Have _finite in -lm]) AC_MSG_RESULT(yes),
+       AC_MSG_RESULT(no)))
+
+# for Linux statfs support
+AC_CHECK_HEADERS(linux/magic.h)
+
+# not 64 bit clean in cross-compile
+AC_CHECK_SIZEOF(void *, 4)
+
+AC_CACHE_CHECK([for clang],
+       mono_cv_clang,[
+       AC_TRY_COMPILE([], [
+               #ifdef __clang__
+               #else
+               #error "FAILED"
+               #endif
+               return 0;
+       ],
+       [mono_cv_clang=yes],
+       [mono_cv_clang=no],
+       [])
+])
+
+WARN=''
+if test x"$GCC" = xyes; then
+        WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value'
+               # The runtime code does not respect ANSI C strict aliasing rules
+               CFLAGS="$CFLAGS -fno-strict-aliasing"
+
+               # We rely on signed overflow to behave
+               CFLAGS="$CFLAGS -fwrapv"
+
+               ORIG_CFLAGS=$CFLAGS
+               CFLAGS="$CFLAGS -Wdeclaration-after-statement"
+               AC_MSG_CHECKING(for -Wdeclaration-after-statement option to gcc)
+               AC_TRY_COMPILE([],[
+                               return 0;
+               ], [
+                  AC_MSG_RESULT(yes)
+               ], [
+                  AC_MSG_RESULT(no)
+                  CFLAGS=$ORIG_CFLAGS
+               ])
+
+               ORIG_CFLAGS=$CFLAGS
+               # Check for the normal version, since gcc ignores unknown -Wno options
+               CFLAGS="$CFLAGS -Wunused-but-set-variable -Werror"
+               AC_MSG_CHECKING(for -Wno-unused-but-set-variable option to gcc)
+               AC_TRY_COMPILE([],[
+                               return 0;
+               ], [
+                  AC_MSG_RESULT(yes)
+                  CFLAGS="$ORIG_CFLAGS -Wno-unused-but-set-variable"
+               ], [
+                  AC_MSG_RESULT(no)
+                  CFLAGS=$ORIG_CFLAGS
+               ])
+
+               if test "x$mono_cv_clang" = "xyes"; then
+                  # https://bugzilla.samba.org/show_bug.cgi?id=8118
+                  WARN="$WARN -Qunused-arguments"
+                  WARN="$WARN -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign"
+               fi
+else
+       # The Sun Forte compiler complains about inline functions that access static variables
+       # so disable all inlining.
+       case "$host" in
+       *-*-solaris*)
+               CFLAGS="$CFLAGS -Dinline="
+               ;;
+       esac
+fi
+CFLAGS="$CFLAGS -g $WARN"
+CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g"
+
+# Where's the 'mcs' source tree?
+if test -d $srcdir/mcs; then
+  mcsdir=mcs
+else
+  mcsdir=../mcs
+fi
+
+AC_ARG_WITH(mcs-path, [  --with-mcs-path=/path/to/mcs      Specify an alternate mcs source tree],
+       if test x$with_mcs_path != "x" -a -d $with_mcs_path ; then
+               mcsdir=$with_mcs_path
+       fi
+)
+
+AC_ARG_WITH(jumptables, [  --with-jumptables=yes,no      enable/disable support for jumptables (ARM-only for now) (defaults to no)],[],[with_jumptables=no])
+
+#
+# A sanity check to catch cases where the package was unpacked
+# with an ancient tar program (Solaris)
+#
+AC_ARG_ENABLE(solaris-tar-check,
+[  --disable-solaris-tar-check    disable solaris tar check],
+   do_solaris_tar_check=no, do_solaris_tar_check=yes)
+
+if test x"$do_solaris_tar_check" = xyes -a x"$enable_solaris_tar_check" = xyes; then
+       AC_MSG_CHECKING(integrity of package)
+       if test -f $mcsdir/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapTypeMapper.cs
+       then
+               AC_MSG_RESULT(ok)
+       else
+               errorm="Your mono distribution is incomplete;  if unpacking from a tar file, make sure you use GNU tar;  see http://www.mono-project.com/IncompletePackage for more details"
+               AC_MSG_ERROR([$errorm])
+       fi
+fi
+
+if test "x$with_mcs_path" != "x"; then
+mcs_topdir=$(cd "$mcsdir" && pwd)
+mcs_topdir_from_srcdir=$mcs_topdir
+else
+mcs_topdir=$(cd "$srcdir/$mcsdir" && pwd)
+mcs_topdir_from_srcdir='$(top_builddir)'/$mcsdir
+fi
+
+# Convert mcs_topdir* paths to Windows syntax.
+if test x$cross_compiling$host_win32 = xnoyes; then
+  mcs_topdir=$(cygpath -m $mcs_topdir)
+  case $mcs_topdir_from_srcdir in
+    /cygdrive/*)
+       mcs_topdir_from_srcdir=$(cygpath -m $mcs_topdir_from_srcdir)
+       ;;
+  esac
+fi
+
+AC_SUBST([mcs_topdir])
+AC_SUBST([mcs_topdir_from_srcdir])
+
+# Where's the 'olive' source tree?
+if test -d $srcdir/olive; then
+  olivedir=olive
+else
+  olivedir=../olive
+fi
+
+if test -d $srcdir/$olivedir; then
+olive_topdir='$(top_srcdir)/'$olivedir
+fi
+
+# gettext: prepare the translation directories. 
+# we do not configure the full gettext, as we consume it dynamically from C#
+AM_PO_SUBDIRS
+
+if test "x$USE_NLS" = "xyes"; then
+   AC_CHECK_PROG(HAVE_MSGFMT, msgfmt,yes,no)
+
+   if test "x$HAVE_MSGFMT" = "xno"; then
+         AC_MSG_ERROR([msgfmt not found. You need to install the 'gettext' package, or pass --enable-nls=no to configure.])
+   fi
+fi
+
+AC_ARG_WITH([libgdiplus], 
+       [  --with-libgdiplus=installed|sibling|<path>   Override the libgdiplus used for System.Drawing tests (defaults to installed)], 
+       [], [with_libgdiplus=installed])
+
+case $with_libgdiplus in
+no|installed) libgdiplus_loc= ;;
+yes|sibling) libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la ;;
+/*) libgdiplus_loc=$with_libgdiplus ;;
+*) libgdiplus_loc=`pwd`/$with_libgdiplus ;;
+esac
+AC_SUBST([libgdiplus_loc])
+
+AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+pkg_config_path=
+AC_ARG_WITH(crosspkgdir, [  --with-crosspkgdir=/path/to/pkg-config/dir      Change pkg-config dir to custom dir],
+       if test x$with_crosspkgdir = "x"; then
+               if test -s $PKG_CONFIG_PATH; then
+                       pkg_config_path=$PKG_CONFIG_PATH
+               fi
+       else
+               pkg_config_path=$with_crosspkgdir
+               PKG_CONFIG_PATH=$pkg_config_path
+               export PKG_CONFIG_PATH
+       fi
+)
+
+AC_ARG_ENABLE(werror, [  --enable-werror Pass -Werror to the C compiler], werror_flag=$enableval, werror_flag=no)
+if test x$werror_flag = xyes; then
+       WERROR_CFLAGS="-Werror"
+fi
+AC_SUBST([WERROR_CFLAGS])
+
+ac_configure_args="$ac_configure_args \"CPPFLAGS_FOR_EGLIB=$EGLIB_CPPFLAGS\" \"CFLAGS_FOR_EGLIB=$CFLAGS_FOR_EGLIB\""
+AC_CONFIG_SUBDIRS(eglib)
+
+GLIB_CFLAGS='-I$(top_srcdir)/eglib/src -I$(top_builddir)/eglib/src'
+GLIB_LIBS='-L$(top_builddir)/eglib/src -leglib -lm'
+BUILD_GLIB_CFLAGS="$GLIB_CFLAGS"
+BUILD_GLIB_LIBS="$GLIB_LIBS"
+GMODULE_CFLAGS="$GLIB_CFLAGS"
+GMODULE_LIBS="$GLIB_LIBS"
+  
+AC_SUBST(GLIB_CFLAGS)
+AC_SUBST(GLIB_LIBS)
+AC_SUBST(GMODULE_CFLAGS)
+AC_SUBST(GMODULE_LIBS)
+AC_SUBST(BUILD_GLIB_CFLAGS)
+AC_SUBST(BUILD_GLIB_LIBS)
+
+AC_ARG_WITH(gc,   [  --with-gc=boehm,included,none  Controls the Boehm GC config, default=included],[gc=$with_gc],[gc=$gc_default])
+
+# Enable support for fast thread-local storage
+# Some systems have broken support, so we allow to disable it.
+AC_ARG_WITH(tls, [  --with-tls=__thread,pthread    select Thread Local Storage implementation (defaults to __thread)],[],[with_tls=__thread])
+
+# Enable support for using sigaltstack for SIGSEGV and stack overflow handling
+# This does not work on some platforms (bug #55253)
+AC_ARG_WITH(sigaltstack, [  --with-sigaltstack=yes,no      enable/disable support for sigaltstack (defaults to yes)],[],[with_sigaltstack=yes])
+
+AC_ARG_WITH(static_mono, [  --with-static_mono=yes,no      link mono statically to libmono (faster) (defaults to yes)],[],[with_static_mono=yes])
+AC_ARG_WITH(shared_mono, [  --with-shared_mono=yes,no      build a shared libmono library (defaults to yes)],[],[with_shared_mono=yes])
+# Same as --with-shared_mono=no
+AC_ARG_ENABLE(libraries, [  --disable-libraries disable the build of libmono], enable_libraries=$enableval, enable_libraries=yes)
+
+if test "x$enable_static" = "xno"; then
+   with_static_mono=no
+fi
+
+if test "x$enable_shared" = "xno"; then
+   with_shared_mono=no
+fi
+
+if test "x$enable_libraries" = "xno"; then
+   with_shared_mono=no
+fi
+
+AM_CONDITIONAL(DISABLE_LIBRARIES, test x$enable_libraries = xno)
+
+case $host in
+*nacl* ) with_shared_mono=yes;;
+esac
+
+if test "x$host_win32" = "xyes"; then
+   # Boehm GC requires the runtime to be in its own dll
+   with_static_mono=no
+fi
+
+AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno)
+AM_CONDITIONAL(SHARED_MONO, test x$with_shared_mono != xno)
+AC_ARG_ENABLE(mcs-build, [  --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes)
+
+AC_ARG_WITH(xen_opt,   [  --with-xen_opt=yes,no          Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes])
+if test "x$with_xen_opt" = "xyes" -a "x$mono_cv_clang" = "xno"; then
+       AC_DEFINE(MONO_XEN_OPT, 1, [Xen-specific behaviour])
+       ORIG_CFLAGS=$CFLAGS
+       CFLAGS="$CFLAGS -mno-tls-direct-seg-refs"
+       AC_MSG_CHECKING(for -mno-tls-direct-seg-refs option to gcc)
+       AC_TRY_COMPILE([], [
+               return 0;
+       ], [
+          AC_MSG_RESULT(yes)
+          # Pass it to libgc as well
+          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -mno-tls-direct-seg-refs"
+       ], [
+          AC_MSG_RESULT(no)
+          CFLAGS=$ORIG_CFLAGS
+       ])
+fi
+
+AC_ARG_ENABLE(small-config, [  --enable-small-config Enable tweaks to reduce requirements (and capabilities)], enable_small_config=$enableval, enable_small_config=no)
+
+if test x$enable_small_config = xyes; then
+       AC_DEFINE(MONO_SMALL_CONFIG,1,[Reduce runtime requirements (and capabilities)])
+       CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DSMALL_CONFIG"
+fi
+
+AC_ARG_ENABLE(system-aot, [  --enable-system-aot  Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=default)
+
+DISABLED_FEATURES=none
+
+AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
+     LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, appdomains, verifier, 
+     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, perfcounters, normalization, assembly_remapping, shared_perfcounters, remoting,
+        security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.],
+[
+       for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
+               eval "mono_feature_disable_$feature='yes'"
+       done
+       DISABLED_FEATURES=$enable_minimal
+       disabled="Disabled:      $enable_minimal"
+],[])
+
+AC_DEFINE_UNQUOTED(DISABLED_FEATURES, "$DISABLED_FEATURES", [String of disabled features])
+
+if test "x$mono_feature_disable_aot" = "xyes"; then
+       AC_DEFINE(DISABLE_AOT_COMPILER, 1, [Disable AOT Compiler])
+       AC_MSG_NOTICE([Disabled AOT compiler])
+fi
+
+if test "x$mono_feature_disable_profiler" = "xyes"; then
+       AC_DEFINE(DISABLE_PROFILER, 1, [Disable default profiler support])
+       AC_MSG_NOTICE([Disabled support for the profiler])
+fi
+AM_CONDITIONAL(DISABLE_PROFILER, test x$mono_feature_disable_profiler = xyes)
+
+if test "x$mono_feature_disable_decimal" = "xyes"; then
+       AC_DEFINE(DISABLE_DECIMAL, 1, [Disable System.Decimal support])
+       AC_MSG_NOTICE([Disabled support for decimal])
+fi
+
+if test "x$mono_feature_disable_pinvoke" = "xyes"; then
+       AC_DEFINE(DISABLE_PINVOKE, 1, [Disable P/Invoke support])
+       AC_MSG_NOTICE([Disabled support for P/Invoke])
+fi
+
+if test "x$mono_feature_disable_debug" = "xyes"; then
+       AC_DEFINE(DISABLE_DEBUG, 1, [Disable runtime debugging support])
+       AC_MSG_NOTICE([Disabled support for runtime debugging])
+fi
+
+if test "x$mono_feature_disable_reflection_emit" = "xyes"; then
+       AC_DEFINE(DISABLE_REFLECTION_EMIT, 1, [Disable reflection emit support])
+       mono_feature_disable_reflection_emit_save=yes
+       AC_MSG_NOTICE([Disabled support for Reflection.Emit])
+fi
+
+if test "x$mono_feature_disable_reflection_emit_save" = "xyes"; then
+       AC_DEFINE(DISABLE_REFLECTION_EMIT_SAVE, 1, [Disable assembly saving support in reflection emit])
+       AC_MSG_NOTICE([Disabled support for Reflection.Emit.Save])
+fi
+
+if test "x$mono_feature_disable_large_code" = "xyes"; then
+       AC_DEFINE(DISABLE_LARGE_CODE, 1, [Disable support for huge assemblies])
+       AC_MSG_NOTICE([Disabled support for large assemblies])
+fi
+
+if test "x$mono_feature_disable_logging" = "xyes"; then
+       AC_DEFINE(DISABLE_LOGGING, 1, [Disable support debug logging])
+       AC_MSG_NOTICE([Disabled support for logging])
+fi
+
+if test "x$mono_feature_disable_com" = "xyes"; then
+       AC_DEFINE(DISABLE_COM, 1, [Disable COM support])
+       AC_MSG_NOTICE([Disabled COM support])
+fi
+
+if test "x$mono_feature_disable_ssa" = "xyes"; then
+       AC_DEFINE(DISABLE_SSA, 1, [Disable advanced SSA JIT optimizations])
+       AC_MSG_NOTICE([Disabled SSA JIT optimizations])
+fi
+
+if test "x$mono_feature_disable_generics" = "xyes"; then
+       AC_DEFINE(DISABLE_GENERICS, 1, [Disable generics support])
+       AC_MSG_NOTICE([Disabled Generics Support])
+fi
+
+if test "x$mono_feature_disable_shadowcopy" = "xyes"; then
+       AC_DEFINE(DISABLE_SHADOW_COPY, 1, [Disable Shadow Copy for AppDomains])
+       AC_MSG_NOTICE([Disabled Shadow copy for AppDomains])
+fi
+
+if test "x$mono_feature_disable_portability" = "xyes"; then
+       AC_DEFINE(DISABLE_PORTABILITY, 1, [Disables the IO portability layer])
+       AC_MSG_NOTICE([Disabled IO Portability layer])
+fi
+
+if test "x$mono_feature_disable_attach" = "xyes"; then
+       AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support])
+       AC_MSG_NOTICE([Disabled agent attach])
+fi
+
+if test "x$mono_feature_disable_full_messages" = "xyes"; then
+       AC_DEFINE(DISABLE_FULL_MESSAGES, 1, [Disables building in the full table of WAPI messages])
+       AC_MSG_NOTICE([Disabled full messages for Win32 errors, only core message strings shipped])
+fi
+
+if test "x$mono_feature_disable_verifier" = "xyes"; then
+       AC_DEFINE(DISABLE_VERIFIER, 1, [Disables the verifier])
+       AC_MSG_NOTICE([Disabled the metadata and IL verifiers])
+fi
+
+if test "x$mono_feature_disable_jit" = "xyes"; then
+       AC_DEFINE(DISABLE_JIT, 1, [Disable the JIT, only full-aot mode will be supported by the runtime.])
+       AC_MSG_NOTICE([Disabled the JIT engine, only full AOT will be supported])
+fi
+
+AM_CONDITIONAL(DISABLE_JIT, test x$mono_feature_disable_jit = xyes)
+
+if test "x$mono_feature_disable_simd" = "xyes"; then
+       AC_DEFINE(DISABLE_SIMD, 1, [Disable SIMD intrinsics related optimizations.])
+       AC_MSG_NOTICE([Disabled SIMD support])
+fi
+
+if test "x$mono_feature_disable_soft_debug" = "xyes"; then
+       AC_DEFINE(DISABLE_SOFT_DEBUG, 1, [Disable Soft Debugger Agent.])
+       AC_MSG_NOTICE([Disabled Soft Debugger.])
+fi
+
+if test "x$mono_feature_disable_perfcounters" = "xyes"; then
+       AC_DEFINE(DISABLE_PERFCOUNTERS, 1, [Disable Performance Counters.])
+       AC_MSG_NOTICE([Disabled Performance Counters.])
+fi
+if test "x$mono_feature_disable_normalization" = "xyes"; then
+       AC_DEFINE(DISABLE_NORMALIZATION, 1, [Disable String normalization support.])
+       AC_MSG_NOTICE([Disabled String normalization support.])
+fi
+
+if test "x$mono_feature_disable_assembly_remapping" = "xyes"; then
+       AC_DEFINE(DISABLE_ASSEMBLY_REMAPPING, 1, [Disable assembly remapping.])
+       AC_MSG_NOTICE([Disabled Assembly remapping.])
+fi
+
+if test "x$mono_feature_disable_shared_perfcounters" = "xyes"; then
+       AC_DEFINE(DISABLE_SHARED_PERFCOUNTERS, 1, [Disable shared perfcounters.])
+       AC_MSG_NOTICE([Disabled Shared perfcounters.])
+fi
+
+if test "x$mono_feature_disable_appdomains" = "xyes"; then
+       AC_DEFINE(DISABLE_APPDOMAINS, 1, [Disable support for multiple appdomains.])
+       AC_MSG_NOTICE([Disabled support for multiple appdomains.])
+fi
+
+if test "x$mono_feature_disable_remoting" = "xyes"; then
+       AC_DEFINE(DISABLE_REMOTING, 1, [Disable remoting support (This disables type proxies and make com non-functional)])
+       AC_MSG_NOTICE([Disabled remoting])
+fi
+
+if test "x$mono_feature_disable_security" = "xyes"; then
+       AC_DEFINE(DISABLE_SECURITY, 1, [Disable CAS/CoreCLR security])
+       AC_MSG_NOTICE([Disabled CAS/CoreCLR security manager (used e.g. for Moonlight)])
+fi
+
+if test "x$mono_feature_disable_sgen_remset" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_REMSET, 1, [Disable wbarrier=remset support in SGEN.])
+       AC_MSG_NOTICE([Disabled wbarrier=remset support in SGEN.])
+fi
+
+if test "x$mono_feature_disable_sgen_marksweep_par" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_PAR, 1, [Disable major=marksweep-par support in SGEN.])
+       AC_MSG_NOTICE([Disabled major=marksweep-par support in SGEN.])
+fi
+
+if test "x$mono_feature_disable_sgen_marksweep_fixed" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED, 1, [Disable major=marksweep-fixed support in SGEN.])
+       AC_MSG_NOTICE([Disabled major=marksweep-fixed support in SGEN.])
+fi
+
+if test "x$mono_feature_disable_sgen_marksweep_fixed_par" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED_PAR, 1, [Disable major=marksweep-fixed-par support in SGEN.])
+       AC_MSG_NOTICE([Disabled major=marksweep-fixed-par support in SGEN.])
+fi
+
+if test "x$mono_feature_disable_sgen_copying" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_MAJOR_COPYING, 1, [Disable major=copying support in SGEN.])
+       AC_MSG_NOTICE([Disabled major=copying support in SGEN.])
+fi
+
+AC_ARG_ENABLE(executables, [  --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes)
+AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno)
+
+has_extension_module=no
+AC_ARG_ENABLE(extension-module, [  --enable-extension-module=LIST enable the core-extensions from LIST],
+[
+       for extension in `echo "$enable_extension_module" | sed -e "s/,/ /g"`; do
+               if test x$extension = xdefault ; then
+                       has_extension_module=yes;
+               fi
+       done
+       if test x$enable_extension_module = xyes; then
+               has_extension_module=yes;
+       fi
+], [])
+
+AM_CONDITIONAL([HAS_EXTENSION_MODULE], [test x$has_extension_module != xno])
+
+if test x$has_extension_module != xno ; then
+       AC_DEFINE([ENABLE_EXTENSION_MODULE], 1, [Extension module enabled])
+       AC_MSG_NOTICE([Enabling mono extension module.])
+fi
+
+AC_ARG_ENABLE(gsharing, [  --enable-gsharing Enable gsharing], enable_gsharing=$enableval, enable_gsharing=no)
+if test x$enable_gsharing = xyes; then
+       AC_DEFINE(ENABLE_GSHAREDVT,1,[Gsharing])
+fi
+
+AC_ARG_ENABLE(native-types, [  --enable-native-types Enable native types], enable_native_types=$enableval, enable_native_types=no)
+if test x$enable_native_types = xyes; then
+       AC_DEFINE(MONO_NATIVE_TYPES,1,[native types])
+fi
+
+AC_MSG_CHECKING(for visibility __attribute__)
+AC_COMPILE_IFELSE([
+       AC_LANG_SOURCE([[
+               void __attribute__ ((visibility ("hidden"))) doit (void) {}
+               int main () { doit (); return 0; }
+       ]])
+], [
+   have_visibility_hidden=yes
+   AC_MSG_RESULT(yes)
+], [
+   have_visibility_hidden=no
+   AC_MSG_RESULT(no)
+])
+
+AC_MSG_CHECKING(for deprecated __attribute__)
+AC_TRY_COMPILE([
+     int doit (void) __attribute__ ((deprecated));
+     int doit (void) { return 0; }
+], [
+       return 0;
+], [
+   have_deprecated=yes
+   AC_MSG_RESULT(yes)
+], [
+   have_deprecated=no
+   AC_MSG_RESULT(no)
+])
+
+AC_ARG_ENABLE(parallel-mark, [  --enable-parallel-mark     Enables GC Parallel Marking], enable_parallel_mark=$enableval, enable_parallel_mark=$parallel_mark)
+if test x$enable_parallel_mark = xyes; then
+       libgc_configure_args="$libgc_configure_args --enable-parallel-mark"
+fi
+
+AC_ARG_ENABLE(boehm, [  --disable-boehm            Disable the Boehm GC.], support_boehm=$enableval,support_boehm=${support_boehm:-yes})
+AM_CONDITIONAL(SUPPORT_BOEHM, test x$support_boehm = xyes)
+
+dnl
+dnl Boehm GC configuration
+dnl
+LIBGC_CPPFLAGS=
+LIBGC_LIBS=
+LIBGC_STATIC_LIBS=
+libgc_dir=
+case "x$gc" in
+       xboehm|xbohem|xyes)
+               AC_CHECK_HEADERS(gc.h gc/gc.h, gc_headers=yes)
+               AC_CHECK_LIB(gc, GC_malloc, found_boehm="yes",,$libdl)
+
+               if test "x$found_boehm" != "xyes"; then
+                       AC_MSG_ERROR("GC requested but libgc not found! Install libgc or run configure with --with-gc=none.")
+               fi
+               if test "x$gc_headers" != "xyes"; then
+                       AC_MSG_ERROR("GC requested but header files not found! You may need to install them by hand.")
+               fi
+
+               LIBGC_LIBS="-lgc $libdl"
+               LIBGC_STATIC_LIBS="$LIBGC_LIBS"
+               libmono_ldflags="$libmono_ldflags -lgc"
+               BOEHM_DEFINES="-DHAVE_BOEHM_GC"
+
+               # AC_CHECK_FUNCS does not work for some reason...
+               AC_CHECK_LIB(gc, GC_gcj_malloc, found_gcj_malloc="yes",,$libdl)
+               if test "x$found_gcj_malloc" = "xyes"; then
+                       BOEHM_DEFINES="-DHAVE_GC_GCJ_MALLOC $BOEHM_DEFINES"
+                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (with typed GC)", [GC description])
+                       gc_msg="System Boehm with typed GC"
+               else
+                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (no typed GC)", [GC description])
+                       gc_msg="System Boehm (without typed GC)"
+               fi
+               AC_CHECK_LIB(gc, GC_enable, found_gc_enable="yes",,$libdl)
+               if test "x$found_gc_enable" = "xyes"; then
+                       BOEHM_DEFINES="-DHAVE_GC_ENABLE $BOEHM_DEFINES"
+               fi
+
+               # check whether we need to explicitly allow
+                       # thread registering
+                       AC_CHECK_LIB(gc, GC_allow_register_threads, found_allow_register_threads="yes",,$libdl)
+                       if test "x$found_allow_register_threads" = "xyes"; then
+                        AC_DEFINE(HAVE_GC_ALLOW_REGISTER_THREADS, 1, [GC requires thread registration])
+                       fi
+
+               ;;
+
+       xincluded)
+               use_included_gc=yes
+               libgc_dir=libgc
+
+               LIBGC_CPPFLAGS='-I$(top_srcdir)/libgc/include'
+               LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la'
+               LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la'
+
+               BOEHM_DEFINES="-DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE"
+
+               if test x$target_win32 = xyes; then
+                       BOEHM_DEFINES="$BOEHM_DEFINES -DGC_NOT_DLL"
+                       CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DGC_BUILD -DGC_NOT_DLL"
+               fi
+
+               gc_msg="bundled Boehm GC with typed GC"
+               if test x$enable_parallel_mark = xyes; then
+                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description])
+                       gc_msg="$gc_msg and parallel mark"
+               else
+                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC)", [GC description])
+               fi
+               ;;
+
+       xsgen)
+               AC_MSG_WARN("Use --with-sgen instead, --with-gc= controls Boehm configuration")
+               ;;
+
+       xnone)
+               AC_MSG_WARN("Compiling mono without GC.")
+               AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "none", [GC description])
+               AC_DEFINE(HAVE_NULL_GC,1,[No GC support.])
+               gc_msg="none"
+               ;;
+       *)
+               AC_MSG_ERROR([Invalid argument to --with-gc.])
+               ;;
+esac
+
+AC_ARG_WITH(large-heap, [  --with-large-heap=yes,no       Enable support for GC heaps larger than 3GB (defaults to no)], [large_heap=$withval], [large_heap=no])
+if test "x$large_heap" = "xyes"; then
+   CPPFLAGS="$CPPFLAGS -DLARGE_CONFIG"
+fi
+
+AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes)
+AC_SUBST(LIBGC_CPPFLAGS)
+AC_SUBST(LIBGC_LIBS)
+AC_SUBST(LIBGC_STATIC_LIBS)
+AC_SUBST(libgc_dir)
+AC_SUBST(BOEHM_DEFINES)
+
+dnl
+dnl End of libgc checks
+dnl
+
+dnl *************************************
+dnl *** Checks for zero length arrays ***
+dnl *************************************
+AC_MSG_CHECKING(whether $CC supports zero length arrays)
+AC_TRY_COMPILE([
+       struct s {
+               int  length;
+               char data [0];
+       };
+], [], [
+       AC_MSG_RESULT(yes)
+       AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 0, [Length of zero length arrays])
+], [
+       AC_MSG_RESULT(no)
+       AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 1, [Length of zero length arrays])
+])
+
+AC_CHECK_HEADERS(nacl/nacl_dyncode.h)
+
+if test x$target_win32 = xno; then
+
+       dnl hires monotonic clock support
+       AC_SEARCH_LIBS(clock_gettime, rt)
+
+       dnl dynamic loader support
+       AC_CHECK_FUNC(dlopen, DL_LIB="",
+               AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", dl_support=no)
+       )
+       if test x$dl_support = xno; then
+               AC_MSG_WARN([No dynamic loading support available])
+       else
+               LIBS="$LIBS $DL_LIB"
+               AC_DEFINE(HAVE_DL_LOADER,1,[dlopen-based dynamic loader available])
+               dnl from glib's configure.ac
+               AC_CACHE_CHECK([for preceeding underscore in symbols],
+                       mono_cv_uscore,[
+                       AC_TRY_RUN([#include <dlfcn.h>
+                       int mono_underscore_test (void) { return 42; }
+                       int main() {
+                         void *f1 = (void*)0, *f2 = (void*)0, *handle;
+                         handle = dlopen ((void*)0, 0);
+                         if (handle) {
+                           f1 = dlsym (handle, "mono_underscore_test");
+                           f2 = dlsym (handle, "_mono_underscore_test");
+                         } return (!f2 || f1);
+                       }],
+                               [mono_cv_uscore=yes],
+                               [mono_cv_uscore=no],
+                       [])
+               ])
+               if test "x$mono_cv_uscore" = "xyes"; then
+                       MONO_DL_NEED_USCORE=1
+               else
+                       MONO_DL_NEED_USCORE=0
+               fi
+               AC_SUBST(MONO_DL_NEED_USCORE)
+               AC_CHECK_FUNC(dlerror)
+       fi
+
+       dnl ******************************************************************
+       dnl *** Checks for the IKVM JNI interface library                  ***
+       dnl ******************************************************************
+       AC_ARG_WITH(ikvm-native, [  --with-ikvm-native=yes,no      build the IKVM JNI interface library (defaults to yes)],[with_ikvm_native=$withval],[with_ikvm_native=$ikvm_native])
+
+       ikvm_native_dir=
+       if test x$with_ikvm_native = xyes; then
+               ikvm_native_dir=ikvm-native
+               jdk_headers_found="IKVM Native"
+       fi
+
+       AC_SUBST(ikvm_native_dir)
+
+       AC_CHECK_HEADERS(execinfo.h)
+
+       AC_CHECK_HEADERS(sys/auxv.h)
+
+       AC_CHECK_FUNCS(getgrgid_r)
+       AC_CHECK_FUNCS(getgrnam_r)
+       AC_CHECK_FUNCS(getpwnam_r)
+       AC_CHECK_FUNCS(getpwuid_r)
+       AC_CHECK_FUNCS(getresuid)
+       AC_CHECK_FUNCS(setresuid)
+       AC_CHECK_FUNCS(kqueue)
+       AC_CHECK_FUNCS(backtrace_symbols)
+       AC_CHECK_FUNCS(mkstemp)
+       AC_CHECK_FUNCS(mmap)
+       AC_CHECK_FUNCS(madvise)
+       AC_CHECK_FUNCS(getrusage)
+       AC_CHECK_FUNCS(getpriority)
+       AC_CHECK_FUNCS(setpriority)
+       AC_CHECK_FUNCS(dl_iterate_phdr)
+       AC_CHECK_FUNCS(dladdr)
+       AC_CHECK_FUNCS(sysconf)
+
+       AC_CHECK_FUNCS(sched_setaffinity)
+       AC_CHECK_FUNCS(sched_getcpu)
+
+       dnl ****************************************************************
+       dnl *** Check for sched_setaffinity from glibc versions before   ***
+       dnl *** 2.3.4. The older versions of the function only take 2    ***
+       dnl *** parameters, not 3.                                       ***
+       dnl ***                                                          ***
+       dnl *** Because the interface change was not made in a minor     ***
+       dnl *** version rev, the __GLIBC__ and __GLIBC_MINOR__ macros    ***
+       dnl *** won't always indicate the interface sched_affinity has.  ***
+       dnl ****************************************************************
+       AC_MSG_CHECKING(for sched_setaffinity from glibc < 2.3.4)
+       AC_TRY_COMPILE([#include <sched.h>], [
+            int mask = 1; 
+            sched_setaffinity(0, &mask);
+                       return 0;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY, 1, [Have GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY])
+       ], [
+               # We have the new, three-parameter version
+               AC_MSG_RESULT(no)
+       ])
+
+
+       dnl ******************************************************************
+       dnl *** Check for large file support                               ***
+       dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) ***
+       dnl ******************************************************************
+       
+       # Check that off_t can represent 2**63 - 1 correctly, working around
+       # potential compiler bugs.  Defines LARGE_FILE_SUPPORT, adds $1 to
+       # CPPFLAGS and sets $large_offt to yes if the test succeeds
+       large_offt=no
+       AC_DEFUN([LARGE_FILES], [
+               large_CPPFLAGS=$CPPFLAGS
+               CPPFLAGS="$CPPFLAGS $1"
+               AC_TRY_COMPILE([
+                       #include <sys/types.h>
+                       #include <limits.h>
+               ], [
+                       /* Lifted this compile time assert method from: http://www.jaggersoft.com/pubs/CVu11_3.html */
+                       #define COMPILE_TIME_ASSERT(pred) \
+                               switch(0){case 0:case pred:;}
+                       COMPILE_TIME_ASSERT(sizeof(off_t) * CHAR_BIT == 64);
+               ], [
+                       AC_MSG_RESULT(ok)
+                       AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support])
+                       large_CPPFLAGS="$large_CPPFLAGS $1"
+                       large_offt=yes
+               ], [
+                       AC_MSG_RESULT(no)
+               ])
+               CPPFLAGS=$large_CPPFLAGS
+       ])
+
+       AC_MSG_CHECKING(if off_t is 64 bits wide)
+       LARGE_FILES("")
+       if test $large_offt = no; then
+               AC_MSG_CHECKING(if _FILE_OFFSET_BITS=64 gives 64 bit off_t)
+               LARGE_FILES("-D_FILE_OFFSET_BITS=64")
+       fi
+       if test $large_offt = no; then
+               AC_MSG_WARN([No 64 bit file size support available])
+       fi
+       
+       dnl *****************************
+       dnl *** Checks for libsocket  ***
+       dnl *****************************
+       AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
+
+       case "$host" in
+               *-*-*freebsd*)
+                       dnl *****************************
+                       dnl *** Checks for libinotify ***
+                       dnl *****************************
+                       AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify")
+       esac
+
+       dnl *******************************
+       dnl *** Checks for MSG_NOSIGNAL ***
+       dnl *******************************
+       AC_MSG_CHECKING(for MSG_NOSIGNAL)
+       AC_TRY_COMPILE([#include <sys/socket.h>], [
+               int f = MSG_NOSIGNAL;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_MSG_NOSIGNAL, 1, [Have MSG_NOSIGNAL])
+       ], [
+               # We'll have to use signals
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *****************************
+       dnl *** Checks for IPPROTO_IP ***
+       dnl *****************************
+       AC_MSG_CHECKING(for IPPROTO_IP)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               int level = IPPROTO_IP;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *******************************
+       dnl *** Checks for IPPROTO_IPV6 ***
+       dnl *******************************
+       AC_MSG_CHECKING(for IPPROTO_IPV6)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               int level = IPPROTO_IPV6;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl ******************************
+       dnl *** Checks for IPPROTO_TCP ***
+       dnl ******************************
+       AC_MSG_CHECKING(for IPPROTO_TCP)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               int level = IPPROTO_TCP;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IPPROTO_TCP, 1, [Have IPPROTO_TCP])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *****************************
+       dnl *** Checks for SOL_IP     ***
+       dnl *****************************
+       AC_MSG_CHECKING(for SOL_IP)
+       AC_TRY_COMPILE([#include <netdb.h>], [
+               int level = SOL_IP;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SOL_IP, 1, [Have SOL_IP])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *****************************
+       dnl *** Checks for SOL_IPV6     ***
+       dnl *****************************
+       AC_MSG_CHECKING(for SOL_IPV6)
+       AC_TRY_COMPILE([#include <netdb.h>], [
+               int level = SOL_IPV6;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SOL_IPV6, 1, [Have SOL_IPV6])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *****************************
+       dnl *** Checks for SOL_TCP    ***
+       dnl *****************************
+       AC_MSG_CHECKING(for SOL_TCP)
+       AC_TRY_COMPILE([#include <netdb.h>], [
+               int level = SOL_TCP;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SOL_TCP, 1, [Have SOL_TCP])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *****************************
+       dnl *** Checks for IP_PKTINFO ***
+       dnl *****************************
+       AC_MSG_CHECKING(for IP_PKTINFO)
+       AC_TRY_COMPILE([#include <linux/in.h>], [
+               int level = IP_PKTINFO;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *****************************
+       dnl *** Checks for IPV6_PKTINFO ***
+       dnl *****************************
+       AC_MSG_CHECKING(for IPV6_PKTINFO)
+       AC_TRY_COMPILE([#include <netdb.h>], [
+               int level = IPV6_PKTINFO;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IPV6_PKTINFO, 1, [Have IPV6_PKTINFO])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Checks for IP_DONTFRAG     ***
+       dnl **********************************
+       AC_MSG_CHECKING(for IP_DONTFRAG)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               int level = IP_DONTFRAG;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_DONTFRAG, 1, [Have IP_DONTFRAG])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Checks for IP_DONTFRAGMENT ***
+       dnl **********************************
+       AC_MSG_CHECKING(for IP_DONTFRAGMENT)
+       AC_TRY_COMPILE([#include <Ws2ipdef.h>], [
+               int level = IP_DONTFRAGMENT;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_DONTFRAGMENT, 1, [Have IP_DONTFRAGMENT])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Checks for IP_MTU_DISCOVER ***
+       dnl **********************************
+       AC_MSG_CHECKING(for IP_MTU_DISCOVER)
+       AC_TRY_COMPILE([#include <linux/in.h>], [
+               int level = IP_MTU_DISCOVER;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_MTU_DISCOVER, 1, [Have IP_MTU_DISCOVER])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Checks for  IP_PMTUDISC_DO ***
+       dnl **********************************
+       AC_MSG_CHECKING(for IP_PMTUDISC_DO)
+       AC_TRY_COMPILE([#include <linux/in.h>], [
+               int level = IP_PMTUDISC_DO;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_PMTUDISC_DO, 1, [Have IP_PMTUDISC_DO])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *********************************
+       dnl *** Check for struct ip_mreqn ***
+       dnl *********************************
+       AC_MSG_CHECKING(for struct ip_mreqn)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               struct ip_mreqn mreq;
+               mreq.imr_address.s_addr = 0;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_STRUCT_IP_MREQN, 1, [Have struct ip_mreqn])
+       ], [
+               # We'll just have to try and use struct ip_mreq
+               AC_MSG_RESULT(no)
+               AC_MSG_CHECKING(for struct ip_mreq)
+               AC_TRY_COMPILE([#include <netinet/in.h>], [
+                       struct ip_mreq mreq;
+                       mreq.imr_interface.s_addr = 0;
+               ], [
+                       # Yes, we have it...
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_STRUCT_IP_MREQ, 1, [Have struct ip_mreq])
+               ], [
+                       # No multicast support
+                       AC_MSG_RESULT(no)
+               ])
+       ])
+       
+       dnl **********************************
+       dnl *** Check for gethostbyname2_r ***
+       dnl **********************************
+       AC_MSG_CHECKING(for gethostbyname2_r)
+               AC_TRY_LINK([#include <netdb.h>], [
+               gethostbyname2_r(NULL,0,NULL,NULL,0,NULL,NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETHOSTBYNAME2_R, 1, [Have gethostbyname2_r])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *****************************
+       dnl *** Checks for libnsl     ***
+       dnl *****************************
+       AC_CHECK_FUNC(gethostbyaddr, , AC_CHECK_LIB(nsl, gethostbyaddr, LIBS="$LIBS -lnsl"))
+
+       AC_CHECK_FUNCS(inet_pton inet_aton)
+
+       dnl ***********************************************
+       dnl *** Checks for size of sockaddr_un.sun_path ***
+       dnl ***********************************************
+       # AC_CHECK_SIZEOF can't cope with struct members :-(
+       AC_MSG_CHECKING(size of sockaddr_un.sun_path)
+       AC_CACHE_VAL(mono_cv_sizeof_sunpath,
+               [AC_TRY_RUN([
+                       #include <sys/types.h>
+                       #include <stdio.h>
+                       #include <sys/un.h>
+
+                       int main(void) {
+                               struct sockaddr_un sock_un;
+                               FILE *f=fopen("conftestval", "w");
+                               if(!f) exit(1);
+                               fprintf(f, "%d\n", sizeof(sock_un.sun_path));
+                               exit(0);
+                       }
+               ], mono_cv_sizeof_sunpath=`cat conftestval`,
+                  mono_cv_sizeof_sunpath=0,
+                  mono_cv_sizeof_sunpath=0)])dnl
+       AC_MSG_RESULT($mono_cv_sizeof_sunpath)
+       AC_DEFINE_UNQUOTED(MONO_SIZEOF_SUNPATH, $mono_cv_sizeof_sunpath, [Sizeof sock_un.sun_path])
+
+       dnl *****************************
+       dnl *** Checks for libxnet    ***
+       dnl *****************************
+       case "${host}" in
+               *solaris* )
+                       AC_MSG_CHECKING(for Solaris XPG4 support)
+                       if test -f /usr/lib/libxnet.so; then
+                               CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500"
+                               CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
+                               CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=1"
+                               LIBS="$LIBS -lxnet"
+                               AC_MSG_RESULT(yes)
+                       else
+                               AC_MSG_RESULT(no)
+                       fi
+
+                       if test "$GCC" = "yes"; then
+                               CFLAGS="$CFLAGS -Wno-char-subscripts"
+                       fi
+               ;;
+       esac
+
+       dnl *****************************
+       dnl *** Checks for libpthread ***
+       dnl *****************************
+# on FreeBSD -STABLE, the pthreads functions all reside in libc_r
+# and libpthread does not exist
+#
+       case "${host}" in
+               *-*-*freebsd*)
+                       AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread")
+               ;;
+               *-*-*openbsd*)
+                       AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread")
+               ;;
+               *)
+                       AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread")
+               ;;
+       esac
+       AC_CHECK_HEADERS(pthread.h)
+       AC_CHECK_HEADERS(pthread_np.h)
+       AC_CHECK_FUNCS(pthread_mutex_timedlock)
+       AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np pthread_setname_np)
+       AC_CHECK_FUNCS(pthread_kill)
+       AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE)
+       AC_TRY_COMPILE([ #include <pthread.h>], [
+               pthread_mutexattr_t attr;
+               pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+       ], [
+               AC_MSG_RESULT(ok)
+       ], [
+               AC_MSG_RESULT(no)
+               AC_ERROR(Posix system lacks support for recursive mutexes)
+       ])
+       AC_CHECK_FUNCS(pthread_attr_setstacksize)
+       AC_CHECK_FUNCS(pthread_attr_getstack pthread_attr_getstacksize)
+       AC_CHECK_FUNCS(pthread_get_stacksize_np pthread_get_stackaddr_np)
+
+       dnl ***********************************
+       dnl *** Checks for signals
+       dnl ***********************************
+       AC_CHECK_HEADERS(signal.h)
+       AC_CHECK_FUNCS(sigaction)
+
+       dnl ***********************************
+       dnl *** Checks for working __thread ***
+       dnl ***********************************
+       AC_MSG_CHECKING(for working __thread)
+       if test "x$with_tls" != "x__thread"; then
+               AC_MSG_RESULT(disabled)
+       elif test "x$cross_compiling" = "xyes"; then
+               AC_MSG_RESULT(cross compiling, assuming yes)
+       else
+               AC_TRY_RUN([
+                       #if defined(__APPLE__) && defined(__clang__)
+                       #error "__thread does not currently work with clang on Mac OS X"
+                       #endif
+                       
+                       #include <pthread.h>
+                       __thread int i;
+                       static int res1, res2;
+
+                       void thread_main (void *arg)
+                       {
+                               i = arg;
+                               sleep (1);
+                               if (arg == 1)
+                                       res1 = (i == arg);
+                               else
+                                       res2 = (i == arg);
+                       }
+
+                       int main () {
+                               pthread_t t1, t2;
+
+                               i = 5;
+
+                               pthread_create (&t1, NULL, thread_main, 1);
+                               pthread_create (&t2, NULL, thread_main, 2);
+
+                               pthread_join (t1, NULL);
+                               pthread_join (t2, NULL);
+
+                               return !(res1 + res2 == 2);
+                       }
+               ], [
+                               AC_MSG_RESULT(yes)
+               ], [
+                               AC_MSG_RESULT(no)
+                               with_tls=pthread
+               ])
+       fi
+
+       dnl **************************************
+       dnl *** Checks for working sigaltstack ***
+       dnl **************************************
+       AC_MSG_CHECKING(for working sigaltstack)
+       if test "x$with_sigaltstack" != "xyes"; then
+               AC_MSG_RESULT(disabled)
+       elif test "x$cross_compiling" = "xyes"; then
+               AC_MSG_RESULT(cross compiling, assuming yes)
+       else
+               AC_TRY_RUN([
+                       #include <stdio.h>
+                       #include <stdlib.h>
+                       #include <unistd.h>
+                       #include <signal.h>
+                       #include <pthread.h>
+                       #include <sys/wait.h>
+                       #if defined(__FreeBSD__) || defined(__NetBSD__)
+                       #define SA_STACK SA_ONSTACK
+                       #endif
+                       static void
+                       sigsegv_signal_handler (int _dummy, siginfo_t *info, void *context)
+                       {
+                               exit (0);
+                       }
+
+                       volatile char*__ptr = NULL;
+                       static void *
+                       loop (void *ignored)
+                       {
+                               *__ptr = 0;
+                               return NULL;
+                       }
+
+                       static void
+                       child ()
+                       {
+                               struct sigaction sa;
+                       #ifdef __APPLE__
+                               stack_t sas;
+                       #else
+                               struct sigaltstack sas;
+                       #endif
+                               pthread_t id;
+                               pthread_attr_t attr;
+
+                               sa.sa_sigaction = sigsegv_signal_handler;
+                               sigemptyset (&sa.sa_mask);
+                               sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
+                               if (sigaction (SIGSEGV, &sa, NULL) == -1) {
+                                       perror ("sigaction");
+                                       return;
+                               }
+
+                               /* x86 darwin deliver segfaults using SIGBUS */
+                               if (sigaction (SIGBUS, &sa, NULL) == -1) {
+                                       perror ("sigaction");
+                                       return;
+                               }
+                               sas.ss_sp = malloc (SIGSTKSZ);
+                               sas.ss_size = SIGSTKSZ;
+                               sas.ss_flags = 0;
+                               if (sigaltstack (&sas, NULL) == -1) {
+                                       perror ("sigaltstack");
+                                       return;
+                               }
+
+                               pthread_attr_init (&attr);
+                               if (pthread_create(&id, &attr, loop, &attr) != 0) {
+                                       printf ("pthread_create\n");
+                                       return;
+                               }
+
+                               sleep (100);
+                       }
+
+                       int
+                       main ()
+                       {
+                               pid_t son;
+                               int status;
+                               int i;
+
+                               son = fork ();
+                               if (son == -1) {
+                                       return 1;
+                               }
+
+                               if (son == 0) {
+                                       child ();
+                                       return 0;
+                               }
+
+                               for (i = 0; i < 300; ++i) {
+                                       waitpid (son, &status, WNOHANG);
+                                       if (WIFEXITED (status) && WEXITSTATUS (status) == 0)
+                                               return 0;
+                                       usleep (10000);
+                               }
+
+                               kill (son, SIGKILL);
+                               return 1;
+                       }
+
+               ], [
+                               AC_MSG_RESULT(yes)
+                               AC_DEFINE(HAVE_WORKING_SIGALTSTACK, 1, [Have a working sigaltstack])
+               ], [
+                               with_sigaltstack=no
+                               AC_MSG_RESULT(no)
+               ])
+       fi
+
+       dnl ********************************
+       dnl *** Checks for semaphore lib ***
+       dnl ********************************
+       # 'Real Time' functions on Solaris
+       # posix4 on Solaris 2.6
+       # pthread (first!) on Linux
+       AC_SEARCH_LIBS(sem_init, pthread rt posix4) 
+
+       AC_SEARCH_LIBS(shm_open, pthread rt posix4) 
+       AC_CHECK_FUNCS(shm_open)
+
+       dnl ********************************
+       dnl *** Checks for timezone stuff **
+       dnl ********************************
+       AC_CACHE_CHECK(for tm_gmtoff in struct tm, ac_cv_struct_tm_gmtoff,
+               AC_TRY_COMPILE([
+                       #include <time.h>
+                       ], [
+                       struct tm tm;
+                       tm.tm_gmtoff = 1;
+                       ], ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no))
+       if test $ac_cv_struct_tm_gmtoff = yes; then
+               AC_DEFINE(HAVE_TM_GMTOFF, 1, [Have tm_gmtoff])
+       else
+               AC_CACHE_CHECK(for timezone variable, ac_cv_var_timezone,
+                       AC_TRY_COMPILE([
+                               #include <time.h>
+                       ], [
+                               timezone = 1;
+                       ], ac_cv_var_timezone=yes, ac_cv_var_timezone=no))
+               if test $ac_cv_var_timezone = yes; then
+                       AC_DEFINE(HAVE_TIMEZONE, 1, [Have timezone variable])
+               else
+                       AC_ERROR(unable to find a way to determine timezone)
+               fi
+       fi
+
+       dnl *********************************
+       dnl *** Checks for math functions ***
+       dnl *********************************
+       AC_SEARCH_LIBS(sqrtf, m)
+       if test "x$has_broken_apple_cpp" != "xyes"; then
+               AC_CHECK_FUNCS(finite, , AC_MSG_CHECKING(for finite in math.h)
+                       AC_TRY_LINK([#include <math.h>], 
+                       [ finite(0.0); ], 
+                       AC_DEFINE(HAVE_FINITE, 1, [Have finite in -lm]) AC_MSG_RESULT(yes),
+                       AC_MSG_RESULT(no)))
+       fi
+        AC_CHECK_FUNCS(isfinite, , AC_MSG_CHECKING(for isfinite in math.h)
+                AC_TRY_LINK([#include <math.h>], 
+                [ isfinite(0.0); ], 
+                AC_DEFINE(HAVE_ISFINITE, 1, [Have isfinite]) AC_MSG_RESULT(yes),
+                AC_MSG_RESULT(no)))
+
+       dnl ****************************************************************
+       dnl *** Checks for working poll() (macosx defines it but doesn't ***
+       dnl *** have it in the library (duh))                            ***
+       dnl ****************************************************************
+       AC_CHECK_FUNCS(poll)
+
+       dnl *************************
+       dnl *** Check for signbit ***
+       dnl *************************
+       AC_MSG_CHECKING(for signbit)
+       AC_TRY_LINK([#include <math.h>], [
+               int s = signbit(1.0);
+       ], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SIGNBIT, 1, [Have signbit])
+       ], [
+               AC_MSG_RESULT(no)
+       ]) 
+
+       dnl **********************************
+       dnl *** epoll                      ***
+       dnl **********************************
+       if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xno"; then
+               AC_CHECK_HEADERS(sys/epoll.h)
+               haveepoll=no
+               AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
+               if test "x$haveepoll" = "xyes" -a "x$ac_cv_header_sys_epoll_h" = "xyes"; then
+                       AC_DEFINE(HAVE_EPOLL, 1, [epoll supported])
+               fi
+       fi
+
+       havekqueue=no
+
+       AC_CHECK_HEADERS(sys/event.h)
+       AC_CHECK_FUNCS(kqueue, [havekqueue=yes], )
+
+       dnl **************************************
+       dnl * Darwin has a race that prevents us from using reliably:
+       dnl * http://lists.apple.com/archives/darwin-dev/2011/Jun/msg00016.html
+       dnl * Since kqueue is mostly used for scaling large web servers, 
+       dnl * and very few folks run Mono on large web servers on OSX, falling
+       dnl * back 
+       dnl **************************************
+       if test "x$havekqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes"; then
+               if test "x$platform_darwin" = "xno"; then
+                       AC_DEFINE(USE_KQUEUE_FOR_THREADPOOL, 1, [Use kqueue for the threadpool])
+               fi
+       fi
+
+       dnl ******************************
+       dnl *** Checks for SIOCGIFCONF ***
+       dnl ******************************
+       AC_CHECK_HEADERS(sys/ioctl.h)
+       AC_CHECK_HEADERS(net/if.h, [], [],
+          [
+          #ifdef HAVE_SYS_TYPES_H
+          # include <sys/types.h>
+          #endif
+          #ifdef HAVE_SYS_SOCKET_H
+          # include <sys/socket.h>
+          #endif
+          ])
+       AC_MSG_CHECKING(for ifreq)
+       AC_TRY_COMPILE([
+               #include <stdio.h>
+               #include <sys/ioctl.h>
+               #include <net/if.h>
+               ], [
+               struct ifconf ifc;
+               struct ifreq *ifr;
+               void *x;
+               ifc.ifc_len = 0;
+               ifc.ifc_buf = NULL;
+               x = (void *) &ifr->ifr_addr;
+               ],[
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_SIOCGIFCONF, 1, [Can get interface list])
+               ], [
+                       AC_MSG_RESULT(no)
+               ])
+       dnl **********************************
+       dnl ***     Checks for sin_len     ***
+       dnl **********************************
+       AC_MSG_CHECKING(for sockaddr_in.sin_len)
+       AC_TRY_COMPILE([
+               #include <netinet/in.h>
+               ], [
+               struct sockaddr_in saddr;
+               saddr.sin_len = sizeof (saddr);
+               ],[
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [sockaddr_in has sin_len])
+               ], [
+                       AC_MSG_RESULT(no)
+               ])      
+       dnl **********************************
+       dnl ***    Checks for sin6_len     ***
+       dnl **********************************
+       AC_MSG_CHECKING(for sockaddr_in6.sin6_len)
+       AC_TRY_COMPILE([
+               #include <netinet/in.h>
+               ], [
+               struct sockaddr_in6 saddr6;
+               saddr6.sin6_len = sizeof (saddr6);
+               ],[
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_SOCKADDR_IN6_SIN_LEN, 1, [sockaddr_in6 has sin6_len])
+               ], [
+                       AC_MSG_RESULT(no)
+               ])
+       dnl **********************************
+       dnl *** Check for getifaddrs       ***
+       dnl **********************************
+       AC_MSG_CHECKING(for getifaddrs)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <sys/types.h>
+               #include <sys/socket.h>
+               #include <ifaddrs.h>
+       ], [
+               getifaddrs(NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETIFADDRS, 1, [Have getifaddrs])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+       dnl **********************************
+       dnl *** Check for if_nametoindex   ***
+       dnl **********************************
+       AC_MSG_CHECKING(for if_nametoindex)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <sys/types.h>
+               #include <sys/socket.h>
+               #include <net/if.h>
+       ], [
+               if_nametoindex(NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IF_NAMETOINDEX, 1, [Have if_nametoindex])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+                       
+       dnl **********************************
+       dnl *** Checks for MonoPosixHelper ***
+       dnl **********************************
+       AC_CHECK_HEADERS(checklist.h)
+       AC_CHECK_HEADERS(pathconf.h)
+       AC_CHECK_HEADERS(fstab.h)
+       AC_CHECK_HEADERS(attr/xattr.h)
+       AC_CHECK_HEADERS(sys/extattr.h)
+       AC_CHECK_HEADERS(sys/sendfile.h)
+       AC_CHECK_HEADERS(sys/statvfs.h)
+       AC_CHECK_HEADERS(sys/statfs.h)
+       AC_CHECK_HEADERS(sys/vfstab.h)
+       AC_CHECK_HEADERS(sys/xattr.h)
+       AC_CHECK_HEADERS(sys/mman.h)
+       AC_CHECK_HEADERS(sys/param.h)
+       AC_CHECK_HEADERS(sys/mount.h, [], [],
+               [
+               #ifdef HAVE_SYS_PARAM_H
+               # include <sys/param.h>
+               #endif
+               ])
+       AC_CHECK_HEADERS(sys/mount.h)
+       AC_CHECK_FUNCS(confstr)
+       AC_CHECK_FUNCS(seekdir telldir)
+       AC_CHECK_FUNCS(getdomainname)
+       AC_CHECK_FUNCS(setdomainname)
+       AC_CHECK_FUNCS(endgrent getgrent fgetgrent setgrent)
+       AC_CHECK_FUNCS(setgroups)
+       AC_CHECK_FUNCS(endpwent getpwent fgetpwent setpwent)
+       AC_CHECK_FUNCS(getfsstat)
+       AC_CHECK_FUNCS(lutimes futimes)
+       AC_CHECK_FUNCS(mremap)
+       AC_CHECK_FUNCS(remap_file_pages)
+       AC_CHECK_FUNCS(posix_fadvise)
+       AC_CHECK_FUNCS(posix_fallocate)
+       AC_CHECK_FUNCS(posix_madvise)
+       AC_CHECK_FUNCS(vsnprintf)
+       AC_CHECK_FUNCS(sendfile)
+       AC_CHECK_FUNCS(gethostid sethostid)
+       AC_CHECK_FUNCS(sethostname)
+       AC_CHECK_FUNCS(statfs)
+       AC_CHECK_FUNCS(fstatfs)
+       AC_CHECK_FUNCS(statvfs)
+       AC_CHECK_FUNCS(fstatvfs)
+       AC_CHECK_FUNCS(stime)
+       AC_CHECK_FUNCS(strerror_r)
+       AC_CHECK_FUNCS(ttyname_r)
+       AC_CHECK_FUNCS(psignal)
+       AC_CHECK_FUNCS(getlogin_r)
+       AC_CHECK_FUNCS(lockf)
+       AC_CHECK_FUNCS(swab)
+       AC_CHECK_FUNCS(setusershell endusershell)
+       AC_CHECK_FUNCS(futimens utimensat)
+       AC_CHECK_FUNCS(fstatat mknodat readlinkat)
+       AC_CHECK_FUNCS(readv writev preadv pwritev)
+       AC_CHECK_FUNCS(setpgid)
+       AC_CHECK_SIZEOF(size_t)
+       AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , 
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
+       AC_CHECK_TYPES([blkcnt_t], [AC_DEFINE(HAVE_BLKCNT_T)], ,
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
+       AC_CHECK_TYPES([suseconds_t], [AC_DEFINE(HAVE_SUSECONDS_T)], ,
+               [#include <sys/time.h>])
+       AC_CHECK_TYPES([struct flock], [AC_DEFINE(HAVE_STRUCT_FLOCK)], ,
+               [#include <unistd.h>
+                #include <fcntl.h>])
+       AC_CHECK_TYPES([struct iovec], [AC_DEFINE(HAVE_STRUCT_IOVEC)], ,
+               [#include <sys/uio.h>])
+       AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], ,
+               [#include <sys/poll.h>])
+       AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], ,
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
+       AC_CHECK_TYPES([struct timespec], [AC_DEFINE(HAVE_STRUCT_TIMESPEC)], ,
+               [#include <time.h>])
+       AC_CHECK_TYPES([struct timeval], [AC_DEFINE(HAVE_STRUCT_TIMEVAL)], ,
+               [#include <sys/time.h>
+                #include <sys/types.h>
+                #include <utime.h>])
+       AC_CHECK_TYPES([struct timezone], [AC_DEFINE(HAVE_STRUCT_TIMEZONE)], ,
+               [#include <sys/time.h>])
+       AC_CHECK_TYPES([struct utimbuf], [AC_DEFINE(HAVE_STRUCT_UTIMBUF)], ,
+               [#include <sys/types.h>
+                #include <utime.h>])
+       AC_CHECK_MEMBERS(
+               [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, 
+               [#include <sys/types.h>
+                #include <dirent.h>])
+       AC_CHECK_MEMBERS(
+               [struct passwd.pw_gecos],,, 
+               [#include <sys/types.h>
+                #include <pwd.h>])
+       AC_CHECK_MEMBERS(
+               [struct statfs.f_flags],,, 
+               [#include <sys/types.h>
+                #include <sys/vfs.h>])
+       AC_CHECK_MEMBERS(
+               [struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim],,, 
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
+
+       dnl Favour xattr through glibc, but use libattr if we have to
+       AC_CHECK_FUNC(lsetxattr, ,
+               AC_CHECK_LIB(attr, lsetxattr, XATTR_LIB="-lattr",)
+       )
+       AC_SUBST(XATTR_LIB)
+
+       dnl kinfo_proc.kp_proc works on darwin but fails on other simil-bsds
+       AC_CHECK_MEMBERS(
+               [struct kinfo_proc.kp_proc],,, 
+               [#include <sys/types.h>
+                #include <sys/param.h>
+                #include <sys/sysctl.h>
+                #include <sys/proc.h>
+                ])
+
+       dnl *********************************
+       dnl *** Checks for Windows compilation ***
+       dnl *********************************
+       AC_CHECK_HEADERS(sys/time.h)
+       AC_CHECK_HEADERS(sys/param.h)
+       AC_CHECK_HEADERS(dirent.h)
+
+       dnl ******************************************
+       dnl *** Checks for OSX and iOS compilation ***
+       dnl ******************************************
+       AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h)
+
+       dnl *********************************
+       dnl *** Check for Console 2.0 I/O ***
+       dnl *********************************
+       AC_CHECK_HEADERS([curses.h])
+       AC_CHECK_HEADERS([term.h], [], [],
+       [#if HAVE_CURSES_H
+        #include <curses.h>
+        #endif
+       ])
+       AC_CHECK_HEADERS([termios.h])
+
+       dnl * This is provided in io-layer, but on windows it's only available
+       dnl * on xp+
+       AC_DEFINE(HAVE_GETPROCESSID, 1, [Define if GetProcessId is available])
+else
+       dnl *********************************
+       dnl *** Checks for Windows compilation ***
+       dnl *********************************
+       AC_CHECK_HEADERS(winternl.h)
+
+       jdk_headers_found=no
+       AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?))
+       AC_CHECK_LIB(psapi, main, LIBS="$LIBS -lpsapi", AC_ERROR(bad mingw install?))
+       AC_CHECK_LIB(ole32, main, LIBS="$LIBS -lole32", AC_ERROR(bad mingw install?))
+       AC_CHECK_LIB(winmm, main, LIBS="$LIBS -lwinmm", AC_ERROR(bad mingw install?))
+       AC_CHECK_LIB(oleaut32, main, LIBS="$LIBS -loleaut32", AC_ERROR(bad mingw install?))
+       AC_CHECK_LIB(advapi32, main, LIBS="$LIBS -ladvapi32", AC_ERROR(bad mingw install?))
+       AC_CHECK_LIB(version, main, LIBS="$LIBS -lversion", AC_ERROR(bad mingw install?))
+
+       dnl *********************************
+       dnl *** Check for struct ip_mreqn ***
+       dnl *********************************
+       AC_MSG_CHECKING(for struct ip_mreqn)
+       AC_TRY_COMPILE([#include <ws2tcpip.h>], [
+               struct ip_mreqn mreq;
+               mreq.imr_address.s_addr = 0;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_STRUCT_IP_MREQN)
+       ], [
+               # We'll just have to try and use struct ip_mreq
+               AC_MSG_RESULT(no)
+               AC_MSG_CHECKING(for struct ip_mreq)
+               AC_TRY_COMPILE([#include <ws2tcpip.h>], [
+                       struct ip_mreq mreq;
+                       mreq.imr_interface.s_addr = 0;
+               ], [
+                       # Yes, we have it...
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_STRUCT_IP_MREQ)
+               ], [
+                       # No multicast support
+                       AC_MSG_RESULT(no)
+               ])
+       ])
+       AC_CHECK_FUNCS(GetProcessId)
+       AC_CHECK_DECLS(InterlockedExchange64, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedCompareExchange64, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedDecrement64, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedIncrement64, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedAdd, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedAdd64, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(__readfsdword, [], [], [[#include <windows.h>]])
+fi
+
+dnl socklen_t check
+AC_MSG_CHECKING(for socklen_t)
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+],[
+  socklen_t foo;
+],[
+ac_cv_c_socklen_t=yes
+       AC_DEFINE(HAVE_SOCKLEN_T, 1, [Have socklen_t])
+       AC_MSG_RESULT(yes)
+],[
+       AC_MSG_RESULT(no)
+])
+
+AC_MSG_CHECKING(for array element initializer support)
+AC_TRY_COMPILE([#include <sys/socket.h>], [
+       const int array[] = {[1] = 2,};
+], [
+       # Yes, we have it...
+       AC_MSG_RESULT(yes)
+       AC_DEFINE(HAVE_ARRAY_ELEM_INIT,1,[Supports C99 array initialization])
+], [
+       # We'll have to use signals
+       AC_MSG_RESULT(no)
+])
+
+AC_CHECK_FUNCS(trunc, , AC_MSG_CHECKING(for trunc in math.h)
+       # Simply calling trunc (0.0) is no good since gcc will optimize the call away
+       AC_TRY_LINK([#include <math.h>], 
+       [ static void *p = &trunc; ],
+       [
+               AC_DEFINE(HAVE_TRUNC) 
+               AC_MSG_RESULT(yes)
+               ac_cv_trunc=yes
+       ],
+       AC_MSG_RESULT(no)))
+
+if test "x$ac_cv_truncl" != "xyes"; then
+   AC_CHECK_LIB(sunmath, aintl, [ AC_DEFINE(HAVE_AINTL, 1, [Has the 'aintl' function]) LIBS="$LIBS -lsunmath"])
+fi
+
+AC_CHECK_FUNCS(round)
+AC_CHECK_FUNCS(rint)
+AC_CHECK_FUNCS(execvp)
+
+dnl ****************************
+dnl *** Look for /dev/random ***
+dnl ****************************
+
+AC_MSG_CHECKING([if usage of random device is requested])
+AC_ARG_ENABLE(dev-random,
+[  --disable-dev-random    disable the use of the random device (enabled by default)],
+try_dev_random=$enableval, try_dev_random=yes)
+
+AC_MSG_RESULT($try_dev_random)
+
+case "{$build}" in
+    *-openbsd*)
+    NAME_DEV_RANDOM="/dev/srandom"
+    ;;
+
+dnl Win32 does not have /dev/random, they have their own method...
+
+    *-mingw*|*-*-cygwin*)
+    ac_cv_have_dev_random=no
+    ;;
+
+dnl Everywhere else, it's /dev/random
+
+    *)
+    NAME_DEV_RANDOM="/dev/random"
+    ;;
+esac
+
+AC_DEFINE_UNQUOTED(NAME_DEV_RANDOM, "$NAME_DEV_RANDOM", [Name of /dev/random])
+
+dnl Now check if the device actually exists
+
+if test "x$try_dev_random" = "xyes"; then
+    AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
+    [if test -r "$NAME_DEV_RANDOM" ; then
+        ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
+    if test "x$ac_cv_have_dev_random" = "xyes"; then
+        AC_DEFINE(HAVE_CRYPT_RNG, 1, [Have /dev/random])
+    fi
+else
+    AC_MSG_CHECKING(for random device)
+    ac_cv_have_dev_random=no
+    AC_MSG_RESULT(has been disabled)
+fi
+
+if test "x$host_win32" = "xyes"; then
+    AC_DEFINE(HAVE_CRYPT_RNG)
+fi
+
+if test "x$ac_cv_have_dev_random" = "xno" \
+    && test "x$host_win32" = "xno"; then
+    AC_MSG_WARN([[
+***
+*** A system-provided entropy source was not found on this system.
+*** Because of this, the System.Security.Cryptography random number generator
+*** will throw a NotImplemented exception.
+***
+*** If you are seeing this message, and you know your system DOES have an
+*** entropy collection in place, please contact <crichton@gimp.org> and
+*** provide information about the system and how to access the random device.
+***
+*** Otherwise you can install either egd or prngd and set the environment
+*** variable MONO_EGD_SOCKET to point to the daemon's socket to use that.
+***]])
+fi
+AC_MSG_CHECKING([if inter-process shared handles are requested])
+AC_ARG_ENABLE(shared-handles, [  --disable-shared-handles disable inter-process shared handles], try_shared_handles=$enableval, try_shared_handles=yes)
+AC_MSG_RESULT($try_shared_handles)
+if test "x$try_shared_handles" != "xyes"; then
+       AC_DEFINE(DISABLE_SHARED_HANDLES, 1, [Disable inter-process shared handles])
+       AC_SUBST(DISABLE_SHARED_HANDLES)
+fi
+
+AC_ARG_ENABLE(bcl-opt, [  --disable-bcl-opt    BCL is compiled with no optimizations (allows accurate BCL debugging)], test_bcl_opt=$enableval, test_bcl_opt=yes)
+
+AC_ARG_ENABLE(nunit-tests, [  --enable-nunit-tests     Run the nunit tests of the class library on 'make check'])
+AM_CONDITIONAL(ENABLE_NUNIT_TESTS, [test x$enable_nunit_tests = xyes])
+
+AC_MSG_CHECKING([if big-arrays are to be enabled])
+AC_ARG_ENABLE(big-arrays,  [  --enable-big-arrays      Enable the allocation and indexing of arrays greater than Int32.MaxValue], enable_big_arrays=$enableval, enable_big_arrays=no)
+if test "x$enable_big_arrays" = "xyes" ; then
+    if  test "x$ac_cv_sizeof_void_p" = "x8"; then
+       AC_DEFINE(MONO_BIG_ARRAYS,1,[Enable the allocation and indexing of arrays greater than Int32.MaxValue])
+    else
+        AC_MSG_ERROR([The allocation and indexing of arrays greater than Int32.MaxValue is not supported on this platform.])
+    fi
+fi
+AC_MSG_RESULT($enable_big_arrays)
+
+dnl **************
+dnl *** DTRACE ***
+dnl **************
+
+AC_ARG_ENABLE(dtrace,[  --enable-dtrace        Enable DTrace probes], enable_dtrace=$enableval, enable_dtrace=$has_dtrace)
+
+if test "x$enable_dtrace" = "xyes"; then
+   if test "x$has_dtrace" = "xno"; then
+         AC_MSG_ERROR([DTrace probes are not supported on this platform.])
+   fi
+   AC_PATH_PROG(DTRACE, [dtrace], [no], [$PATH:/usr/sbin])
+   if test "x$DTRACE" = "xno"; then
+         AC_MSG_RESULT([dtrace utility not found, dtrace support disabled.])
+         enable_dtrace=no
+   elif ! $DTRACE -h -s $srcdir/data/mono.d > /dev/null 2>&1; then
+         AC_MSG_RESULT([dtrace doesn't support -h option, dtrace support disabled.])
+         enable_dtrace=no
+   fi
+fi
+
+dtrace_g=no
+if test "x$enable_dtrace" = "xyes"; then
+       AC_DEFINE(ENABLE_DTRACE, 1, [Enable DTrace probes])
+       DTRACEFLAGS=
+       if test "x$ac_cv_sizeof_void_p" = "x8"; then
+               case "$host" in
+                       powerpc-*-darwin*)
+                       DTRACEFLAGS="-arch ppc64"
+                       ;;
+                       i*86-*-darwin*)
+                       DTRACEFLAGS="-arch x86_64"
+                       ;;
+                       *)
+                       DTRACEFLAGS=-64
+                       ;;
+               esac
+       else
+               case "$host" in
+                       powerpc-*-darwin*)
+                       DTRACEFLAGS="-arch ppc"
+                       ;;
+                       i*86-*-darwin*)
+                       DTRACEFLAGS="-arch i386"
+                       ;;
+                       *)
+                       DTRACEFLAGS=-32
+                       ;;
+               esac
+       fi
+       AC_SUBST(DTRACEFLAGS)
+       case "$host" in
+               *-*-solaris*)
+               dtrace_g=yes
+               ;;
+       esac
+       AC_CHECK_HEADERS([sys/sdt.h])
+fi
+AM_CONDITIONAL(ENABLE_DTRACE, [test x$enable_dtrace = xyes])
+AM_CONDITIONAL(DTRACE_G_REQUIRED, [test x$dtrace_g = xyes])
+
+dnl **************
+dnl ***  NaCl  ***
+dnl **************
+
+AC_ARG_ENABLE(nacl_codegen, [  --enable-nacl-codegen      Enable Native Client code generation], enable_nacl_codegen=$enableval, enable_nacl_codegen=no)
+AC_ARG_ENABLE(nacl_gc, [  --enable-nacl-gc           Enable Native Client garbage collection], enable_nacl_gc=$enableval, enable_nacl_gc=no)
+
+AM_CONDITIONAL(NACL_CODEGEN, test x$enable_nacl_codegen != xno)
+
+dnl
+dnl Hack to use system mono for operations in build/install not allowed in NaCl.
+dnl
+nacl_self_host=""
+if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xyes"; then
+   nacl_self_host="nacl_self_host"
+fi
+AC_SUBST(nacl_self_host)
+
+if test "x$enable_nacl_codegen" = "xyes"; then
+   MONO_NACL_ALIGN_MASK_OFF=1
+   AC_DEFINE(TARGET_NACL, 1, [...])
+   AC_DEFINE(__native_client_codegen__, 1, [...])
+else
+   MONO_NACL_ALIGN_MASK_OFF=0
+   AC_DEFINE(__default_codegen__, 1, [...])
+fi
+if test "x$enable_nacl_gc" = "xyes"; then
+   if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
+      INSTRUMENT_CFLAG="-finstrument-for-thread-suspension"
+   else
+      # Not yet implemented
+      INSTRUMENT_CFLAG=""
+   fi
+   CPPFLAGS="$CPPFLAGS $INSTRUMENT_CFLAG -D__native_client_gc__"
+fi
+AC_SUBST(MONO_NACL_ALIGN_MASK_OFF)
+
+dnl **************
+dnl ***  LLVM  ***
+dnl **************
+
+AC_ARG_ENABLE(llvm,[  --enable-llvm    Enable the LLVM back-end], enable_llvm=$enableval, enable_llvm=no)
+AC_ARG_ENABLE(loadedllvm,[  --enable-loadedllvm        Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no)
+AC_ARG_ENABLE(llvm-version-check,[  --enable-llvm-version-check Check that the LLVM matches the version expected by mono], enable_llvm_version_check=$enableval, enable_llvm_version_check=no)
+
+AC_ARG_WITH(llvm, [  --with-llvm=<llvm prefix>    Enable the LLVM back-end], enable_llvm=yes,)
+
+if test "x$enable_llvm" = "xyes"; then
+   if test "x$with_llvm" != "x"; then
+         LLVM_CONFIG=$with_llvm/bin/llvm-config
+         if test ! -x $LLVM_CONFIG; then
+                AC_MSG_ERROR([LLVM executable $LLVM_CONFIG not found.])
+      fi
+   else
+      AC_PATH_PROG(LLVM_CONFIG, llvm-config, no)
+      if test "x$LLVM_CONFIG" = "xno"; then
+            AC_MSG_ERROR([llvm-config not found.])
+      fi
+   fi
+
+   llvm_codegen="x86codegen"
+   case "$target" in
+   arm*)
+               llvm_codegen="armcodegen"
+               ;;
+   esac
+
+   # The output of --cflags seems to include optimizations flags too
+   LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'`
+   # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit
+   # from LLVM classes.
+   LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
+   LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
+   # This might include empty lines
+   LLVM_SYSTEM_LIBS=`$LLVM_CONFIG --system-libs 2>/dev/null | grep -- -`
+   if test "x$host" != "x$target"; then
+      # No need for jit libs
+      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter`
+   else
+      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen`
+   fi
+   LLVM_LIBS="$LLVM_LIBS $LLVM_LDFLAGS $LLVM_SYSTEM_LIBS -lstdc++"
+
+   expected_llvm_version="3.4svn-mono-mono/e656cac"
+
+   # Should be something like '2.6' or '2.7svn'
+   llvm_version=`$LLVM_CONFIG --version`
+   major_version=`echo $llvm_version | cut -c 1`
+   minor_version=`echo $llvm_version | cut -c 3`
+   llvm_api_version=`$LLVM_CONFIG --mono-api-version 2>/dev/null`
+   AC_MSG_CHECKING(LLVM version)
+   AC_MSG_RESULT($llvm_version)
+   if echo $llvm_version | grep -q 'mono'; then
+         if test "x$enable_llvm_version_check" == "xyes"; then
+                if test "$llvm_version" != "$expected_llvm_version"; then
+                       AC_MSG_ERROR([Expected llvm version $expected_llvm_version, but llvm-config --version returned $llvm_version"])
+                fi
+         fi
+         if test "x$llvm_api_version" = "x"; then
+               LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=0"
+               LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=0"
+         else
+               LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=$llvm_api_version"
+               LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=$llvm_api_version"
+         fi
+   else
+         AC_MSG_ERROR([Compiling with stock LLVM is not supported, please use the Mono LLVM repo at https://github.com/mono/llvm, with the GIT branch which matches this version of mono, i.e. 'mono-2-10' for Mono 2.10.])
+   fi
+
+   AC_DEFINE_UNQUOTED(LLVM_MAJOR_VERSION, $major_version, [Major version of LLVM libraries])
+   AC_DEFINE_UNQUOTED(LLVM_MINOR_VERSION, $minor_version, [Minor version of LLVM libraries])
+   AC_DEFINE_UNQUOTED(LLVM_VERSION, "$llvm_version", [Full version of LLVM libraties])
+
+   # Have to pass these on the command line since mini-llvm-cpp.h already includes
+   # llvm's config.h
+   LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MAJOR_VERSION=$major_version -DLLVM_MINOR_VERSION=$minor_version"
+
+   AC_SUBST(LLVM_CFLAGS)
+   AC_SUBST(LLVM_CXXFLAGS)
+   AC_SUBST(LLVM_LIBS)
+   AC_SUBST(LLVM_LDFLAGS)
+   AC_DEFINE(ENABLE_LLVM, 1, [Enable the LLVM back end])
+fi
+
+AM_CONDITIONAL(ENABLE_LLVM, [test x$enable_llvm = xyes])
+if test "x$enable_loadedllvm" = "xyes"; then
+   AC_DEFINE(MONO_LLVM_LOADED, 1, [The LLVM back end is dynamically loaded])
+fi
+AM_CONDITIONAL(LOADED_LLVM, [test x$enable_loadedllvm = xyes])
+
+TARGET="unknown"
+ACCESS_UNALIGNED="yes"
+
+JIT_SUPPORTED=no
+INTERP_SUPPORTED=no
+LIBC="libc.so.6"
+INTL="libc.so.6"
+SQLITE="libsqlite.so.0"
+SQLITE3="libsqlite3.so.0"
+X11="libX11.so"
+GDKX11="libgdk-x11-2.0.so.0"
+GTKX11="libgtk-x11-2.0.so.0"
+XINERAMA="libXinerama.so"
+
+sizeof_register="SIZEOF_VOID_P"
+
+jit_wanted=true
+interp_wanted=false
+sgen_supported=false
+boehm_supported=true
+case "$host" in
+       mips*)
+               TARGET=MIPS;
+               arch_target=mips;
+               sgen_supported=true
+               ACCESS_UNALIGNED="no"
+               JIT_SUPPORTED=yes
+
+               AC_MSG_CHECKING(for mips n32)
+               AC_TRY_COMPILE([],[
+               #if _MIPS_SIM != _ABIN32
+               #error Not mips n32
+               #endif
+               return 0;
+               ],[
+               AC_MSG_RESULT(yes)
+               sizeof_register=8
+               ],[
+               AC_MSG_RESULT(no)
+               ])
+               ;;
+       i*86-*-*)
+               TARGET=X86;
+               arch_target=x86;
+               JIT_SUPPORTED=yes
+               case $host_os in
+                 solaris*)
+                       LIBC="libc.so"
+                       INTL="libintl.so"
+                       if test "x$ac_cv_sizeof_void_p" = "x8"; then
+                               TARGET=AMD64
+                               arch_target=amd64
+                       fi
+
+                       # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. A test case:
+                       # int astruct __attribute__ ((visibility ("hidden")));
+                       # void foo ()
+                       # {
+                       #       void *p = &astruct;
+                       # }
+                       # gcc -fPIC --shared -o libfoo.so foo.c
+                       # yields:
+                       # foo.c:6: warning: visibility attribute not supported in this configuration; ignored
+                       # ld: fatal: relocation error: R_386_GOTOFF: file /var/tmp//ccxYR96k.o: symbol astruct: relocation must bind locally
+                       have_visibility_hidden=no
+                       sgen_supported=true
+                       ;;
+                 mingw*|cygwin*)
+                       sgen_supported=true
+                       have_visibility_hidden=no                 
+                       ;;
+                 haiku*)
+                       LIBC=libroot.so
+                       ;;
+                 linux*)
+                       sgen_supported=true
+                       AOT_SUPPORTED="yes"
+                       ;;
+                 darwin*)
+                       sgen_supported=true
+                       AOT_SUPPORTED="yes"
+                       ;;
+                 darwin*|openbsd*|freebsd*)
+                       sgen_supported=true
+                       ;;
+               esac
+               ;;
+       x86_64-*-* | amd64-*-*)
+               TARGET=AMD64;
+               arch_target=amd64;
+               JIT_SUPPORTED=yes
+               if test "x$ac_cv_sizeof_void_p" = "x4"; then
+                       AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
+                       sizeof_register=8
+               fi
+               case $host_os in
+                 linux*)
+                       sgen_supported=true
+                       AOT_SUPPORTED="yes"
+                       ;;
+                 darwin*|openbsd*|freebsd*)
+                       sgen_supported=true
+                       ;;
+               esac
+               case "$host" in
+                       x86_64-*-nacl*)
+                               AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
+                               sizeof_register=8
+                               ;;
+               esac
+               ;;
+       ia64-*-*)
+               TARGET=IA64
+               arch_target=ia64
+               ACCESS_UNALIGNED="no"
+               JIT_SUPPORTED=yes
+               LIBC="libc.so.6.1"
+               INTL="libc.so.6.1"
+               AC_CHECK_LIB(unwind, _U_dyn_register, [], [AC_MSG_ERROR(library libunwind not found)])
+               libmono_ldflags="-lunwind"
+               ;;
+       sparc*-*-*)
+               if test "x$ac_cv_sizeof_void_p" = "x8"; then
+                  TARGET=SPARC64
+               else
+                       TARGET=SPARC
+               fi
+               arch_target=sparc;
+               JIT_SUPPORTED=yes
+               ACCESS_UNALIGNED="no"
+               case $host_os in
+                 linux*) ;;
+                 *)
+                       LIBC="libc.so"
+                       INTL="libintl.so"
+               esac
+               if test x"$GCC" = xyes; then
+                       # We don't support v8 cpus
+                       CFLAGS="$CFLAGS -Wno-cast-align -mcpu=v9"
+               fi
+               if test x"$AR" = xfalse; then
+                       AC_MSG_ERROR([The required utility 'ar' is not found in your PATH. Usually it can be found in /usr/ccs/bin.])
+               fi
+               sgen_supported=true
+               ;;
+       *-mingw*|*-*-cygwin*)
+               # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
+               have_visibility_hidden=no
+               INTL="intl"
+               ;;
+       macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \
+        powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | powerpc-*-freebsd* )
+               if test "x$ac_cv_sizeof_void_p" = "x8"; then
+                       TARGET=POWERPC64;
+                       CPPFLAGS="$CPPFLAGS -D__mono_ppc__ -D__mono_ppc64__"
+                       CFLAGS="$CFLAGS -mminimal-toc"
+               else
+                       TARGET=POWERPC;
+                       CPPFLAGS="$CPPFLAGS -D__mono_ppc__"
+               fi
+               arch_target=ppc;
+               JIT_SUPPORTED=yes
+               case $host_os in
+                 linux*|darwin*)
+                       sgen_supported=true
+                       ;;
+               esac
+               ;;
+       arm*-darwin*)
+               TARGET=ARM;
+               arch_target=arm;
+               ACCESS_UNALIGNED="no"
+               JIT_SUPPORTED=yes
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+               # libgc's gc_locks.h depends on this
+           CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC"
+               sgen_supported=true
+               ;;
+       arm*-linux*)
+               TARGET=ARM;
+               arch_target=arm;
+               ACCESS_UNALIGNED="no"
+               JIT_SUPPORTED=yes
+               sgen_supported=true
+               AOT_SUPPORTED="yes"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+               ;;
+# TODO: make proper support for NaCl host.
+#        arm*-*nacl)
+#              TARGET=ARM;
+#              arch_target=arm;
+#              ACCESS_UNALIGNED="no"
+#              JIT_SUPPORTED=yes
+#              sgen_supported=true
+#              AOT_SUPPORTED="no"
+#              ;;
+       aarch64-*)
+               # https://lkml.org/lkml/2012/7/15/133
+               TARGET=ARM64
+               arch_target=arm64
+               JIT_SUPPORTED=yes
+               sgen_supported=true
+               boehm_supported=false
+               ;;
+       s390x-*-linux*)
+               TARGET=S390X;
+               arch_target=s390x;
+               ACCESS_UNALIGNED="yes"
+               JIT_SUPPORTED=yes
+               sgen_supported=true
+               CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES"
+               ;;
+esac
+
+HOST=$TARGET
+
+if test "x$host" != "x$target"; then
+   AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode])
+   enable_mcs_build=no
+   case "$target" in
+   arm*-darwin*)
+               TARGET=ARM;
+               arch_target=arm;
+               ACCESS_UNALIGNED="no"
+               JIT_SUPPORTED=yes
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+               jit_wanted=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+               with_tls=pthread
+               ;;
+   powerpc64-ps3-linux-gnu)
+               TARGET=POWERPC64
+               arch_target=powerpc64
+               AC_DEFINE(TARGET_PS3, 1, [...])
+               # It would be better to just use TARGET_POWERPC64, but lots of code already
+               # uses this define
+               AC_DEFINE(__mono_ppc64__, 1, [...])
+               AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
+               sizeof_register=8
+               target_byte_order=G_BIG_ENDIAN
+               ;;
+
+   powerpc64-xbox360-linux-gnu)
+               TARGET=POWERPC64
+               arch_target=powerpc64
+               AC_DEFINE(TARGET_XBOX360, 1, [...])
+               # It would be better to just use TARGET_POWERPC64, but lots of code already
+               # uses this define
+               sizeof_register=8
+               target_byte_order=G_BIG_ENDIAN
+               ;;
+   x86_64-*-nacl)
+               TARGET=AMD64
+               arch_target=amd64
+               AC_DEFINE(TARGET_AMD64, 1, [...])
+               AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
+               sizeof_register=8
+               ;;
+# TODO: make proper support for NaCl target.
+#   arm*-*nacl)
+#              TARGET=ARM
+#              arch_target=arm
+#              AC_DEFINE(TARGET_ARM, 1, [...])
+#              ACCESS_UNALIGNED="no"
+#              JIT_SUPPORTED=yes
+#              sizeof_register=4
+#               CPPFLAGS="$CPPFLAGS \
+#                    -D__ARM_EABI__ \
+#                    -D__arm__ \
+#                    -D__portable_native_client__ \
+#                    -Dtimezone=_timezone \
+#                    -DDISABLE_SOCKETS \
+#                    -DDISABLE_ATTACH \
+#                    -DUSE_NEWLIB"
+#              jit_wanted=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+#              with_tls=pthread
+#              ;;
+   i686-*-nacl)
+               TARGET=X86
+               arch_target=x86
+               AC_DEFINE(TARGET_X86, 1, [...])
+               sizeof_register=4
+               ;;
+   arm*-linux-*)
+               TARGET=ARM;
+               arch_target=arm;
+               AC_DEFINE(TARGET_ARM, 1, [...])
+               AC_DEFINE(TARGET_ANDROID, 1, [...])
+               ACCESS_UNALIGNED="no"
+               JIT_SUPPORTED=yes
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+               jit_wanted=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+               with_tls=pthread
+               target_mach=no
+               case "$target" in
+               armv7l-unknown-linux-gnueabi*)
+                       # TEGRA
+                       CPPFLAGS="$CPPFLAGS"
+                       ;;
+               armv5-*-linux-androideabi*)
+                       CPPFLAGS="$CPPFLAGS"
+                       ;;
+               esac
+               ;;
+       aarch64-*)
+               TARGET=ARM64
+               JIT_SUPPORTED=yes
+               jit_wanted=true
+               ;;
+       *)
+               AC_MSG_ERROR([Cross compiling is not supported for target $target])
+       esac
+fi
+
+case "$TARGET" in
+X86)
+       AC_DEFINE(TARGET_X86, 1, [...])
+       ;;
+AMD64)
+       AC_DEFINE(TARGET_AMD64, 1, [...])
+       ;;
+ARM)
+       AC_DEFINE(TARGET_ARM, 1, [...])
+       ;;
+ARM64)
+       AC_DEFINE(TARGET_ARM64, 1, [...])
+       ;;
+POWERPC)
+       AC_DEFINE(TARGET_POWERPC, 1, [...])
+       ;;
+POWERPC64)
+       AC_DEFINE(TARGET_POWERPC, 1, [...])
+       AC_DEFINE(TARGET_POWERPC64, 1, [...])
+       ;;
+S390X)
+       AC_DEFINE(TARGET_S390X, 1, [...])
+       ;;
+MIPS)
+       AC_DEFINE(TARGET_MIPS, 1, [...])
+       ;;
+IA64)
+       AC_DEFINE(TARGET_IA64, 1, [...])
+       ;;
+SPARC)
+       AC_DEFINE(TARGET_SPARC, 1, [...])
+       ;;
+SPARC64)
+       AC_DEFINE(TARGET_SPARC64, 1, [...])
+       ;;
+esac
+
+dnl Use GCC atomic ops if they work on the target.
+if test x$GCC = "xyes"; then
+       case $TARGET in
+       X86 | AMD64 | ARM | ARM64 | POWERPC | POWERPC64 | MIPS | S390X | SPARC | SPARC64)
+               AC_DEFINE(USE_GCC_ATOMIC_OPS, 1, [...])
+               ;;
+       esac
+fi
+
+if test "x$target_mach" = "xyes"; then
+   if test "x$TARGET" = "xARM" -o "x$TARGET" = "xARM64"; then
+         AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
+         CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS"
+         CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS"
+   else
+       AC_TRY_COMPILE([#include "TargetConditionals.h"],[
+       #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1
+       #error fail this for ios
+       #endif
+       return 0;
+       ], [
+                 AC_DEFINE(TARGET_OSX,1,[The JIT/AOT targets OSX])
+          CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_OSX"
+          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_OSX"
+       ], [
+          AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
+          CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS"
+          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS"
+       ])
+       fi
+   AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms])
+fi
+
+if test "x$sizeof_register" = "x4"; then
+   AC_DEFINE(SIZEOF_REGISTER,4,[size of machine integer registers])
+elif test "x$sizeof_register" = "x8"; then
+   AC_DEFINE(SIZEOF_REGISTER,8,[size of machine integer registers])
+else
+   AC_DEFINE(SIZEOF_REGISTER,SIZEOF_VOID_P,[size of machine integer registers])
+fi
+
+if test "x$target_byte_order" = "xG_BIG_ENDIAN"; then
+   AC_DEFINE(TARGET_BYTE_ORDER,G_BIG_ENDIAN,[byte order of target])
+elif test "x$target_byte_order" = "xG_LITTLE_ENDIAN"; then
+   AC_DEFINE(TARGET_BYTE_ORDER,G_LITTLE_ENDIAN,[byte order of target])
+else
+   AC_DEFINE(TARGET_BYTE_ORDER,G_BYTE_ORDER,[byte order of target])
+fi
+
+if test "x$have_visibility_hidden" = "xyes"; then
+   AC_DEFINE(HAVE_VISIBILITY_HIDDEN, 1, [Support for the visibility ("hidden") attribute])
+fi
+
+if test "x$have_deprecated" = "xyes"; then
+   AC_DEFINE(HAVE_DEPRECATED, 1, [Support for the deprecated attribute])
+fi
+
+dnl 
+dnl Simple Generational checks (sgen)
+dnl
+if $sgen_supported; then
+   build_sgen_default=yes
+else
+   build_sgen_default=no
+fi
+SGEN_DEFINES=
+AC_ARG_WITH(sgen, [  --with-sgen=yes,no             Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=$build_sgen_default])
+if test x$buildsgen = xyes; then
+   if $sgen_supported; then
+       SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR"
+       gc_msg="sgen and $gc_msg"
+   else
+       buildsgen=no
+       AC_MSG_WARN("Sgen is not supported on this platform")
+   fi
+fi
+AC_SUBST(SGEN_DEFINES)
+AM_CONDITIONAL(SUPPORT_SGEN, test x$buildsgen = xyes)
+
+USEJIT=false
+if test x$JIT_SUPPORTED = xyes; then
+   if $jit_wanted; then
+      USEJIT=true
+      jit_status="Building and using the JIT"
+   else
+      if $interp_wanted; then
+         jit_status="Building the JIT, defaulting to the interpreter"
+      else
+         AC_ERROR(No JIT or interpreter support available or selected.)
+      fi
+   fi
+else
+   if test x$interp_wanted = xtrue; then
+      jit_status="interpreter"
+   else
+      AC_ERROR(No JIT or interpreter support available or selected.)
+   fi
+fi
+
+AM_CONDITIONAL(USE_JIT, test x$USEJIT = xtrue)
+
+libsuffix=".so"
+
+case "$host" in
+     *-*-darwin*)
+       libsuffix=".dylib"
+       LIBC="libc.dylib"
+       INTL="libintl.dylib"
+       SQLITE="libsqlite.0.dylib"
+       SQLITE3="libsqlite3.0.dylib"
+       X11="libX11.dylib"
+       GDKX11="libgdk-x11-2.0.dylib"
+       GTKX11="libgtk-x11-2.0.dylib"
+       ;;
+     *-*-*netbsd*)
+       LIBC="libc.so.12"
+       INTL="libintl.so.0"
+       ;;
+    *-*-*freebsd*)
+       LIBC="libc.so"
+       INTL="libintl.so"
+       SQLITE="libsqlite.so"
+       SQLITE3="libsqlite3.so"
+       ;;
+    *-*-*openbsd*)
+       LIBC="libc.so"
+       INTL="libintl.so"
+        SQLITE="libsqlite.so"
+        SQLITE3="libsqlite3.so"
+       ;;
+    *-*-*linux*)
+       AC_PATH_X
+       dlsearch_path=`(libtool --config ; echo eval echo \\$sys_lib_dlsearch_path_spec) | sh`
+       AC_MSG_CHECKING(for the soname of libX11.so)
+       for i in $x_libraries $dlsearch_path; do
+               for r in 4 5 6; do
+                       if test -f $i/libX11.so.$r; then
+                               X11=libX11.so.$r
+                               AC_MSG_RESULT($X11)
+                       fi
+               done
+       done
+       
+       if test "x$X11" = "xlibX11.so"; then
+               AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? Assuming libX11.so.6...]);
+               X11=libX11.so.6
+       fi
+       AC_MSG_CHECKING(for the soname of libXinerama.so)
+       for i in $x_libraries $dlsearch_path; do
+               for r in 1 2 3; do
+                       if test -f $i/libXinerama.so.$r; then
+                               XINERAMA=libXinerama.so.$r
+                               AC_MSG_RESULT($XINERAMA)
+                       fi
+               done
+       done
+       if test "x$XINERAMA" = "xlibXinerama.so"; then
+               AC_MSG_WARN([Could not find Xinerama development libs. Support for multiple monitors might not work...]);
+       fi
+       ;;
+esac
+
+
+AC_SUBST(libsuffix)
+
+if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
+       if test "x$with_tls" = "x__thread"; then
+               #
+               # On some linux distributions, TLS works in executables, but linking 
+               # against a shared library containing TLS fails with:
+               # undefined reference to `__tls_get_addr'
+               #
+               rm -f conftest.c conftest.so conftest
+               echo "static __thread int foo; int main () { foo = 5; return 0; }" > conftest.c
+               $CC -fPIC --shared -o conftest.so conftest.c > /dev/null 2>&1
+               $CC -o conftest conftest.so > /dev/null 2>&1
+               if test ! -f conftest; then
+                  AC_MSG_WARN([Disabling usage of __thread.]);
+                  with_tls=pthread
+               fi
+               rm -f conftest.c conftest.so conftest
+       fi
+fi
+
+AC_ARG_ENABLE(icall-symbol-map,[  --enable-icall-symbol-map Generate tables which map icall functions to their C symbols], icall_symbol_map=$enableval, icall_symbol_map=no)
+if test "x$icall_symbol_map" = "xyes"; then
+   AC_DEFINE(ENABLE_ICALL_SYMBOL_MAP, 1, [Icall symbol map enabled])
+fi
+
+AC_ARG_ENABLE(icall-export,[  --enable-icall-export Export icall functions], icall_export=$enableval, icall_export=no)
+if test "x$icall_export" = "xyes"; then
+   AC_DEFINE(ENABLE_ICALL_EXPORT, 1, [Icall export enabled])
+fi
+
+AC_ARG_ENABLE(icall-tables,[  --disable-icall-tables Disable the runtime lookup of icalls], icall_tables=$enableval, icall_tables=yes)
+if test "x$icall_tables" = "xno"; then
+   AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled])
+fi
+
+if test "x$with_tls" = "x__thread"; then
+       AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword])
+       # Pass the information to libgc
+       CPPFLAGS="$CPPFLAGS -DUSE_COMPILER_TLS"
+       AC_MSG_CHECKING(if the tls_model attribute is supported)
+       AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
+               ], [
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tls_model available])
+               ], [
+                       AC_MSG_RESULT(no)
+       ])
+fi
+
+if test ${TARGET} = ARM; then
+       dnl ******************************************
+       dnl *** Check to see what FPU is available ***
+       dnl ******************************************
+       AC_MSG_CHECKING(which FPU to use)
+
+       #
+       # This is a bit tricky:
+       #
+       # if (__ARM_PCS_VFP) {
+       #       /* mfloat-abi=hard == VFP with hard ABI */
+       # } elif (!__SOFTFP__) {
+       #       /* mfloat-abi=softfp == VFP with soft ABI */
+       # } else {
+       #       /* mfloat-abi=soft == no VFP */
+       # }
+       #
+       # The exception is iOS (w/ GCC) where none of the above
+       # are defined (but iOS always uses the 'softfp' ABI).
+       #
+       # No support for FPA.
+       #
+
+       fpu=NONE
+
+       # iOS GCC always uses the 'softfp' ABI.
+       if test x"$GCC" = xyes && test x$platform_darwin = xyes; then
+               fpu=VFP
+       fi
+
+       # Are we using the 'hard' ABI?
+       if test x$fpu = xNONE; then
+               AC_TRY_COMPILE([], [
+                       #ifndef __ARM_PCS_VFP
+                       #error "Float ABI is not 'hard'"
+                       #endif
+                       return 0;
+               ], [
+                       fpu=VFP_HARD
+               ], [
+                       fpu=NONE
+               ])
+       fi
+
+       # No 'hard' ABI. 'soft' or 'softfp'?
+       if test x$fpu = xNONE; then
+               AC_TRY_COMPILE([], [
+                       #ifdef __SOFTFP__
+                       #error "Float ABI is not 'softfp'"
+                       #endif
+                       return 0;
+               ], [
+                       fpu=VFP
+               ], [
+                       fpu=NONE
+               ])
+       fi
+
+       AC_MSG_RESULT($fpu)
+       CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
+       unset fpu
+
+       dnl *********************************************
+       dnl *** Check which ARM version(s) we can use ***
+       dnl *********************************************
+       AC_MSG_CHECKING(which ARM version to use)
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_5T__) && !defined(__ARM_ARCH_5TE__) && !defined(__ARM_ARCH_5TEJ__)
+               #error Not on ARM v5.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+
+               arm_ver=ARMv5
+       ], [])
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_6J__) && !defined(__ARM_ARCH_6ZK__) && !defined(__ARM_ARCH_6K__) && !defined(__ARM_ARCH_6T2__) && !defined(__ARM_ARCH_6M__)
+               #error Not on ARM v6.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+               arm_v6=yes
+
+               arm_ver=ARMv6
+       ], [])
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_7A__) && !defined(__ARM_ARCH_7R__) && !defined(__ARM_ARCH_7EM__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7S__)
+               #error Not on ARM v7.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+               arm_v6=yes
+               arm_v7=yes
+
+               arm_ver=ARMv7
+       ], [])
+
+       AC_MSG_RESULT($arm_ver)
+
+       if test x$arm_v5 = xyes; then
+               AC_DEFINE(HAVE_ARMV5, 1, [ARM v5])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV5=1"
+       fi
+
+       if test x$arm_v6 = xyes; then
+               AC_DEFINE(HAVE_ARMV6, 1, [ARM v6])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6=1"
+       fi
+
+       if test x$arm_v7 = xyes; then
+               AC_DEFINE(HAVE_ARMV7, 1, [ARM v7])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV7=1"
+       fi
+fi
+
+if test ${TARGET} = ARM; then
+       if test "x${with_jumptables}" = "xyes"; then
+                AC_DEFINE(USE_JUMP_TABLES, 1, Use jump tables in JIT)
+        fi
+fi
+
+if test ${TARGET} = unknown; then
+       CPPFLAGS="$CPPFLAGS -DNO_PORT"
+       AC_MSG_WARN("mono has not been ported to $host: some things may not work.")
+fi
+
+if test ${ACCESS_UNALIGNED} = no; then
+       CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS"
+fi
+
+case "x$gc" in
+       xincluded)
+               # Pass CPPFLAGS to libgc configure
+               # We should use a separate variable for this to avoid passing useless and
+               # potentially problematic defines to libgc (like -D_FILE_OFFSET_BITS=64)
+               # This should be executed late so we pick up the final version of CPPFLAGS
+               # The problem with this approach, is that during a reconfigure, the main
+               # configure scripts gets invoked with these arguments, so we use separate
+               # variables understood by libgc's configure to pass CPPFLAGS and CFLAGS.
+               TMP_CPPFLAGS="$CPPFLAGS $CPPFLAGS_FOR_LIBGC"
+               if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
+                       TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
+               fi
+               # Don't pass -finstrument-for-thread-suspension in, 
+               # if these are instrumented it will be very bad news 
+               # (infinite recursion, undefined parking behavior, etc)
+               TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'`
+               ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$TMP_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
+               AC_CONFIG_SUBDIRS(libgc)
+               ;;
+esac
+
+AC_ARG_WITH(profile2,  [  --with-profile2=yes,no          If you want to install the 2.0/3.5 FX (defaults to yes)],            [], [with_profile2=yes])
+AC_ARG_WITH(profile4,  [  --with-profile4=yes,no          If you want to install the 4.0 FX (defaults to yes)],                [], [with_profile4=yes])
+AC_ARG_WITH(profile4_5,[  --with-profile4_5=yes,no        If you want to install the 4.5 FX (defaults to yes)],                [], [with_profile4_5=yes])
+AC_ARG_WITH(monodroid, [  --with-monodroid=yes,no         If you want to build the MonoDroid assemblies (defaults to no)],     [], [with_monodroid=no])
+AC_ARG_WITH(monotouch, [  --with-monotouch=yes,no,only    If you want to build the MonoTouch assemblies (defaults to no)],     [], [with_monotouch=no])
+AC_ARG_WITH(xammac,    [  --with-xammac=yes,no,only       If you want to build the Xamarin.Mac assemblies (defaults to no)],   [], [with_xammac=no])
+
+OPROFILE=no
+AC_ARG_WITH(oprofile,[  --with-oprofile=no,<oprofile install dir>   Enable oprofile support (defaults to no)],[
+       if test x$with_oprofile != xno; then
+           oprofile_include=$with_oprofile/include
+           if test ! -f $oprofile_include/opagent.h; then
+                 AC_MSG_ERROR([oprofile include file not found at $oprofile_include/opagent.h])
+               fi
+           OPROFILE=yes
+               OPROFILE_CFLAGS="-I$oprofile_include"
+           OPROFILE_LIBS="-L$with_oprofile/lib/oprofile -lopagent"
+           AC_DEFINE(HAVE_OPROFILE,1,[Have oprofile support])
+       fi
+])
+
+MALLOC_MEMPOOLS=no
+AC_ARG_WITH(malloc_mempools,[  --with-malloc-mempools=yes,no  Use malloc for each single mempool allocation (only for runtime debugging, defaults to no)],[
+       if test x$with_malloc_mempools = xyes; then
+               MALLOC_MEMPOOLS=yes
+               AC_DEFINE(USE_MALLOC_FOR_MEMPOOLS,1,[Use malloc for each single mempool allocation])
+       fi
+])
+
+
+DISABLE_MCS_DOCS=no
+AC_ARG_WITH(mcs_docs,[  --with-mcs-docs=yes,no         If you want to build the documentation under mcs (defaults to yes)],[
+       if test x$with_mcs_docs != xyes; then
+               DISABLE_MCS_DOCS=yes
+       fi
+])
+if test x$with_profile4 != xyes; then
+       DISABLE_MCS_DOCS=yes
+fi
+
+AC_ARG_WITH(lazy_gc_thread_creation, [  --with-lazy-gc-thread-creation=yes|no      Enable lazy runtime thread creation, embedding host must do it explicitly (defaults to no)],[
+       if test x$with_lazy_gc_thread_creation != xno ; then
+               AC_DEFINE(LAZY_GC_THREAD_CREATION,1,[Enable lazy gc thread creation by the embedding host.])
+       fi
+], [with_lazy_gc_thread_creation=no])
+
+AC_CHECK_HEADER([malloc.h], 
+               [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], 
+                       [Define to 1 if you have /usr/include/malloc.h.])],,)
+
+if test x"$GCC" = xyes; then
+       # Implicit function declarations are not 64 bit safe
+       # Do this late, since this causes lots of configure tests to fail
+       CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
+       # jay has a lot of implicit declarations
+       JAY_CFLAGS="-Wno-implicit-function-declaration"
+fi
+
+# When --disable-shared is used, libtool transforms libmono-2.0.la into libmono-2.0.so
+# instead of libmono-static.a
+if test "x$enable_shared" = "xno" -a "x$enable_executables" = "xyes"; then
+   LIBMONO_LA=libmini-static.la
+else
+   if test x$buildsgen = xyes; then
+      LIBMONO_LA=libmonosgen-$API_VER.la
+   else
+      LIBMONO_LA=libmonoboehm-$API_VER.la
+   fi
+fi
+AC_SUBST(LIBMONO_LA)
+
+dnl
+dnl Consistency settings
+dnl
+if test x$cross_compiling = xyes -o x$enable_mcs_build = xno; then
+   DISABLE_MCS_DOCS=yes
+   with_profile2=no
+   with_profile4=no
+   with_profile4_5=no
+   with_monodroid=no
+   with_monotouch=no
+   with_xammac=no
+fi
+
+if test x$DISABLE_MCS_DOCS = xyes; then
+   docs_dir=""
+else
+   docs_dir=docs
+fi
+AC_SUBST(docs_dir)
+
+## Maybe should also disable if mcsdir is invalid.  Let's punt the issue for now.
+AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno && test x$enable_mcs_build != xno])
+
+AM_CONDITIONAL(HAVE_OPROFILE, test x$OPROFILE = xyes)
+AC_SUBST(OPROFILE_CFLAGS)
+AC_SUBST(OPROFILE_LIBS)
+
+libmono_ldflags="$libmono_ldflags $LIBS"
+
+AM_CONDITIONAL(INSTALL_2_0, [test "x$with_profile2" = xyes])
+AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
+AM_CONDITIONAL(INSTALL_4_5, [test "x$with_profile4_5" = xyes])
+AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" != "xno"])
+AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" != "xno"])
+AM_CONDITIONAL(INSTALL_XAMMAC, [test "x$with_xammac" != "xno"])
+AM_CONDITIONAL(ONLY_MONOTOUCH, [test "x$with_monotouch" = "xonly"])
+AM_CONDITIONAL(ONLY_XAMMAC, [test "x$with_xammac" = "xonly"])
+
+AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
+AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
+AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
+AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64)
+AM_CONDITIONAL(X86, test x$TARGET = xX86)
+AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64)
+AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
+AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
+AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
+AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64)
+AM_CONDITIONAL(ARM, test x$TARGET = xARM)
+AM_CONDITIONAL(ARM64, test x$TARGET = xARM64)
+AM_CONDITIONAL(S390X, test x$TARGET = xS390X)
+AM_CONDITIONAL(HOST_X86, test x$HOST = xX86)
+AM_CONDITIONAL(HOST_AMD64, test x$HOST = xAMD64)
+AM_CONDITIONAL(HOST_ARM, test x$HOST = xARM)
+AM_CONDITIONAL(HOST_ARM64, test x$HOST = xARM64)
+AM_CONDITIONAL(CROSS_COMPILE, test "x$host" != "x$target")
+
+AM_CONDITIONAL(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes)
+AM_CONDITIONAL(INTERP_SUPPORTED, test x$interp_wanted = xtrue)
+AM_CONDITIONAL(INCLUDED_LIBGC, test x$gc = xincluded)
+
+AC_SUBST(LIBC)
+AC_SUBST(INTL)
+AC_SUBST(SQLITE)
+AC_SUBST(SQLITE3)
+AC_SUBST(X11)
+AC_SUBST(GDKX11)
+AC_SUBST(GTKX11)
+AC_SUBST(XINERAMA)
+AC_DEFINE_UNQUOTED(ARCHITECTURE,"$arch_target",[The architecture this is running on])
+AC_SUBST(arch_target)
+AC_SUBST(CFLAGS)
+AC_SUBST(CPPFLAGS)
+AC_SUBST(LDFLAGS)
+
+mono_build_root=`pwd`
+AC_SUBST(mono_build_root)
+
+if test x$USEJIT = xtrue; then
+  mono_runtime=mono/mini/mono
+else
+  mono_runtime=mono/interpreter/mint
+fi
+AC_SUBST(mono_runtime)
+
+mono_cfg_root=$mono_build_root/runtime
+if test x$host_win32 = xyes; then
+  if test "x$cross_compiling" = "xno"; then
+    mono_cfg_dir=`cygpath -w -a $mono_cfg_root`\\etc
+  else
+    mono_cfg_dir=`echo $mono_cfg_root | tr '/' '\\'`\\etc
+  fi
+else
+  mono_cfg_dir=$mono_cfg_root/etc
+fi
+AC_SUBST(mono_cfg_dir)
+
+AC_CONFIG_FILES([po/mcs/Makefile.in])
+
+AC_CONFIG_FILES([runtime/mono-wrapper],[chmod +x runtime/mono-wrapper])
+AC_CONFIG_FILES([runtime/monodis-wrapper],[chmod +x runtime/monodis-wrapper])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/1.0/machine.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/1.0
+    cd runtime/etc/mono/1.0
+    rm -f machine.config
+    $LN_S $reldir/data/net_1_1/machine.config machine.config
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/machine.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0
+    cd runtime/etc/mono/2.0
+    rm -f machine.config
+    $LN_S $reldir/data/net_2_0/machine.config machine.config
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/web.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0
+    cd runtime/etc/mono/2.0
+    rm -f web.config
+    $LN_S $reldir/data/net_2_0/web.config web.config
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/browscap.ini],
+[   depth=../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/
+    cd runtime/etc/mono/
+    rm -f browscap.ini
+    $LN_S $reldir/data/browscap.ini browscap.ini
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/Browsers/Compat.browser],
+[   depth=../../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0/Browsers/
+    cd runtime/etc/mono/2.0/Browsers
+    rm -f Compat.browser
+    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/Browsers/Compat.browser],
+[   depth=../../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.0/Browsers/
+    cd runtime/etc/mono/4.0/Browsers
+    rm -f Compat.browser
+    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/Browsers/Compat.browser],
+[   depth=../../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5/Browsers/
+    cd runtime/etc/mono/4.5/Browsers
+    rm -f Compat.browser
+    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/machine.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.0
+    cd runtime/etc/mono/4.0
+    rm -f machine.config
+    $LN_S $reldir/data/net_4_0/machine.config machine.config
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/web.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.0
+    cd runtime/etc/mono/4.0
+    rm -f web.config
+    $LN_S $reldir/data/net_4_0/web.config web.config
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/machine.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5
+    cd runtime/etc/mono/4.5
+    rm -f machine.config
+    $LN_S $reldir/data/net_4_5/machine.config machine.config
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/web.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5
+    cd runtime/etc/mono/4.5
+    rm -f web.config
+    $LN_S $reldir/data/net_4_5/web.config web.config
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/echo "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool; sed -e 's/$ECHO "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool])
+
+AC_OUTPUT([
+Makefile
+mono-core.spec
+mono-uninstalled.pc
+scripts/mono-find-provides
+scripts/mono-find-requires
+mono/Makefile
+mono/utils/Makefile
+mono/metadata/Makefile
+mono/dis/Makefile
+mono/cil/Makefile
+mono/arch/Makefile
+mono/arch/x86/Makefile
+mono/arch/amd64/Makefile
+mono/arch/ppc/Makefile
+mono/arch/sparc/Makefile
+mono/arch/s390x/Makefile
+mono/arch/arm/Makefile
+mono/arch/arm64/Makefile
+mono/arch/ia64/Makefile
+mono/arch/mips/Makefile
+mono/interpreter/Makefile
+mono/tests/Makefile
+mono/tests/tests-config
+mono/tests/assemblyresolve/Makefile
+mono/tests/cas/Makefile
+mono/tests/cas/assembly/Makefile
+mono/tests/cas/demand/Makefile
+mono/tests/cas/inheritance/Makefile
+mono/tests/cas/linkdemand/Makefile
+mono/tests/cas/threads/Makefile
+mono/tests/gc-descriptors/Makefile
+mono/unit-tests/Makefile
+mono/benchmark/Makefile
+mono/monograph/Makefile
+mono/io-layer/Makefile
+mono/mini/Makefile
+mono/profiler/Makefile
+m4/Makefile
+ikvm-native/Makefile
+scripts/Makefile
+man/Makefile
+docs/Makefile
+data/Makefile
+data/net_2_0/Makefile
+data/net_4_0/Makefile
+data/net_4_5/Makefile
+data/net_2_0/Browsers/Makefile
+data/net_4_0/Browsers/Makefile
+data/net_4_5/Browsers/Makefile
+data/mint.pc
+data/mono-2.pc
+data/monosgen-2.pc
+data/mono.pc
+data/mono-cairo.pc
+data/mono-nunit.pc
+data/mono-options.pc
+data/mono-lineeditor.pc
+data/monodoc.pc
+data/dotnet.pc
+data/dotnet35.pc
+data/wcf.pc
+data/cecil.pc
+data/system.web.extensions_1.0.pc
+data/system.web.extensions.design_1.0.pc
+data/system.web.mvc.pc
+data/system.web.mvc2.pc
+data/system.web.mvc3.pc
+data/aspnetwebstack.pc
+data/reactive.pc
+samples/Makefile
+support/Makefile
+data/config
+tools/Makefile
+tools/locale-builder/Makefile
+tools/sgen/Makefile
+runtime/Makefile
+msvc/Makefile
+po/Makefile
+])
+
+# Update all submodules recursively to ensure everything is checked out
+$srcdir/scripts/update_submodules
+
+if test x$host_win32 = xyes; then
+   # Get rid of 'cyg' prefixes in library names
+   sed -e "s/\/cyg\//\/\//" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
+   # libtool seems to inherit -mno-cygwin from our CFLAGS, and uses it to compile its executable
+   # wrapper scripts which use exec(). gcc has no problem compiling+linking this, but the resulting
+   # executable doesn't work...
+   sed -e "s,-mno-cygwin,,g" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
+fi
+
+if test x$platform_darwin = xyes; then
+   # This doesn't seem to be required and it slows down parallel builds
+   sed -e 's,lock_old_archive_extraction=yes,lock_old_archive_extraction=no,g' < libtool > libtool.new && mv libtool.new libtool && chmod +x libtool
+fi
+
+(
+  case $prefix in
+  NONE) prefix=$ac_default_prefix ;;
+  esac
+  case $exec_prefix in
+  NONE) exec_prefix='${prefix}' ;;
+  esac
+
+  #
+  # If we are cross compiling, we don't build in the mcs/ tree.  Let us not clobber
+  # any existing config.make.  This allows people to share the same source tree
+  # with different build directories, one native and one cross
+  #
+  if test x$cross_compiling = xno && test x$enable_mcs_build != xno; then
+
+    test -w $mcs_topdir/build || chmod +w $mcs_topdir/build
+
+    echo "prefix=$prefix" > $mcs_topdir/build/config.make
+    echo "exec_prefix=$exec_prefix" >> $mcs_topdir/build/config.make
+    echo "sysconfdir=$sysconfdir" >> $mcs_topdir/build/config.make
+    echo 'mono_libdir=${exec_prefix}/lib' >> $mcs_topdir/build/config.make
+    echo 'IL_FLAGS = /debug' >> $mcs_topdir/build/config.make
+    echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $mcs_topdir/build/config.make
+    echo "ILDISASM = $mono_build_root/runtime/monodis-wrapper" >> $mcs_topdir/build/config.make
+    echo "JAY_CFLAGS = $JAY_CFLAGS" >> $mcs_topdir/build/config.make
+
+    case $INSTALL in
+    [[\\/$]]* | ?:[[\\/]]* ) mcs_INSTALL=$INSTALL ;;
+    *) mcs_INSTALL=$mono_build_root/$INSTALL ;;
+    esac
+
+    echo "INSTALL = $mcs_INSTALL" >> $mcs_topdir/build/config.make
+
+    export VERSION
+    [myver=$($AWK 'BEGIN {
+      split (ENVIRON["VERSION"] ".0.0.0", vsplit, ".")
+      if(length(vsplit [1]) > 4) {
+        split (substr(ENVIRON["VERSION"], 0, 4) "." substr(ENVIRON["VERSION"], 5) ".0.0", vsplit, ".")
+      }
+      print vsplit [1] "." vsplit [2] "." vsplit [3] "." vsplit [4]
+    }')]
+
+    echo "MONO_VERSION = $myver" >> $mcs_topdir/build/config.make
+
+    if test x$platform_darwin = xyes; then
+      echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make
+    fi
+
+       if test x$AOT_SUPPORTED = xyes -a x$enable_system_aot = xdefault; then
+          enable_system_aot=yes
+       fi
+
+       if test "x$enable_loadedllvm" = "xyes"; then
+          # This seems to fail on the x86 buildbots
+          enable_system_aot=no
+       fi
+
+    if test x$host_win32 = xno -a x$enable_system_aot = xyes; then
+      echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make
+    fi
+
+    if test x$DISABLE_MCS_DOCS = xyes; then
+      echo "DISABLE_MCS_DOCS = yes" >> $mcs_topdir/build/config.make
+    fi
+
+    if test x$has_extension_module != xno; then
+        echo "EXTENSION_MODULE = 1" >> $srcdir/$mcsdir/build/config.make
+    fi
+
+       default_profile=net_2_0
+    if test -z "$INSTALL_4_0_TRUE"; then :
+               default_profile=net_4_0
+    fi
+    if test -z "$INSTALL_MONODROID_TRUE"; then :
+               default_profile=monodroid
+    fi
+    if test -z "$INSTALL_MONOTOUCH_TRUE"; then :
+               default_profile=monotouch
+    fi
+       if test -z "$INSTALL_XAMMAC_TRUE"; then :
+               default_profile=xammac
+       fi
+    if test -z "$INSTALL_4_5_TRUE"; then :
+               default_profile=net_4_5
+    fi
+    
+    echo "DEFAULT_PROFILE = $default_profile" >> $srcdir/$mcsdir/build/config.make
+    
+    if test "x$test_bcl_opt" = "xyes"; then    
+      echo "BCL_OPTIMIZE = 1" >> $srcdir/$mcsdir/build/config.make
+    fi
+
+  fi
+
+  # if we have an olive folder, override the default settings
+  if test -d $olivedir; then
+
+    if test x$cross_compiling = xno && test x$enable_olive_build != xno; then
+
+      test -w $srcdir/$olivedir/build || chmod +w $srcdir/$olivedir/build
+
+      echo "prefix=$prefix" > $srcdir/$olivedir/build/config.make
+      echo "exec_prefix=$exec_prefix" >> $srcdir/$olivedir/build/config.make
+      echo 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$olivedir/build/config.make
+      echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $srcdir/$olivedir/build/config.make
+      echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $srcdir/$olivedir/build/config.make
+      echo "MONO_VERSION = $myver" >> $srcdir/$olivedir/build/config.make
+    fi
+  fi
+
+)
+
+libgdiplus_msg=${libgdiplus_loc:-assumed to be installed}
+
+echo "
+        mcs source:    $mcsdir
+
+   Engine:
+       GC:            $gc_msg 
+       TLS:           $with_tls
+       SIGALTSTACK:   $with_sigaltstack
+       Engine:        $jit_status
+       oprofile:      $OPROFILE
+       BigArrays:     $enable_big_arrays
+       DTrace:        $enable_dtrace
+       LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm)
+
+   Libraries:
+       .NET 2.0/3.5:  $with_profile2
+       .NET 4.0:      $with_profile4
+       .NET 4.5:      $with_profile4_5
+       MonoDroid:     $with_monodroid
+       MonoTouch:     $with_monotouch
+       Xamarin.Mac:   $with_xammac
+       JNI support:   $jdk_headers_found
+       libgdiplus:    $libgdiplus_msg
+       zlib:          $zlib_msg
+       $disabled
+"
+if test x$with_static_mono = xno -a "x$host_win32" != "xyes"; then
+   AC_MSG_WARN(Turning off static Mono is a risk, you might run into unexpected bugs)
+fi
diff --git a/configure.in b/configure.in
deleted file mode 100644 (file)
index 32c3efe..0000000
+++ /dev/null
@@ -1,3791 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-#AC_PREREQ([2.62])
-
-AC_INIT(mono, [3.4.1],
-        [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
-
-AC_CONFIG_SRCDIR([README.md])
-AC_CONFIG_MACRO_DIR([m4])
-AC_CANONICAL_SYSTEM
-AC_CANONICAL_HOST
-
-# Gross hack to enable 'make dist' on automake 1.9+tar 1.14.
-# The extra brackets are to foil regex-based scans.
-m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
-
-AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign subdir-objects])
-AC_CONFIG_HEADERS([config.h])
-AM_MAINTAINER_MODE
-
-API_VER=2.0
-AC_SUBST(API_VER)
-
-AC_PROG_LN_S
-
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-case $host_os in
-*cygwin* )
-                echo "Run configure using ./configure --host=i686-pc-mingw32"
-                exit 1
-esac
-
-# In case of cygwin, override LN_S, irrespective of what it determines.
-# The build uses cygwin, but the actual runtime doesn't.
-case $host_os in
-*cygwin* ) LN_S='cp -p';;
-esac
-
-dnl
-dnl libgc checks
-dnl
-
-gc_headers=no
-gc=included
-gc_msg="included Boehm"
-use_included_gc=no
-libgc_configure_args=
-
-if test -d $srcdir/libgc ; then
-  gc_default=included
-else
-  gc_default=boehm
-fi
-
-# These variables are the CPPFLAGS/CFLAGS passed to libgc's configure
-# libgc should inherit the original CFLAGS/CPPFLAGS passed to configure, i.e. -O0
-CPPFLAGS_FOR_LIBGC=$CPPFLAGS
-CFLAGS_FOR_LIBGC=$CFLAGS
-CPPFLAGS_FOR_EGLIB=$CPPFLAGS
-CFLAGS_FOR_EGLIB=$CFLAGS
-
-#
-# These are the flags that need to be stored in the mono.pc file for 
-# compiling code that will embed Mono
-#
-libmono_cflags=""
-libmono_ldflags=""
-AC_SUBST(libmono_cflags)
-AC_SUBST(libmono_ldflags)
-
-# Variable to have relocatable .pc files (lib, or lib64)
-reloc_libdir=`basename ${libdir}`
-AC_SUBST(reloc_libdir)
-
-dnl if linker handles the version script
-no_version_script=no
-
-# Set to yes if Unix sockets cannot be created in an anonymous namespace
-need_link_unlink=no
-
-#Set to extra linker flags to be passed to the runtime binaries (mono /mono-sgen)
-extra_runtime_ldflags=""
-
-# Thread configuration inspired by sleepycat's db
-AC_MSG_CHECKING([host platform characteristics])
-libgc_threads=no
-has_dtrace=no
-parallel_mark=yes
-ikvm_native=yes
-
-case "$host" in
-       powerpc*-*-linux*)
-               # https://bugzilla.novell.com/show_bug.cgi?id=504411
-               disable_munmap=yes
-       ;;
-esac
-
-host_win32=no
-target_win32=no
-platform_android=no
-platform_darwin=no
-case "$host" in
-       *-mingw*|*-*-cygwin*)
-               AC_DEFINE(HOST_WIN32,1,[Host Platform is Win32])
-               AC_DEFINE(DISABLE_PORTABILITY,1,[Disable the io-portability layer])
-               AC_DEFINE(PLATFORM_NO_SYMLINKS,1,[This platform does not support symlinks])
-               host_win32=yes
-               mono_cv_clang=no
-               if test "x$cross_compiling" = "xno"; then
-                       target_win32=yes
-                       if test "x$host" == "x$build" -a "x$host" == "x$target"; then
-                               AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
-                       fi
-               else
-                       target_win32=yes
-                       AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32/MinGW])
-                       AC_DEFINE(MINGW_CROSS_COMPILE,1,[Cross-compiling using MinGW])
-               fi
-               HOST_CC="gcc"
-               # Windows 2000 is required that includes Internet Explorer 5.01
-               CPPFLAGS="$CPPFLAGS -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024"
-               LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm -lkernel32"
-               libmono_cflags="-mms-bitfields -mwindows"
-               libmono_ldflags="-mms-bitfields -mwindows"
-               libdl=
-               libgc_threads=win32
-               gc_default=included
-               with_sigaltstack=no
-               LN_S=cp
-               # This forces libgc to use the DllMain based thread registration code on win32
-               libgc_configure_args="$libgc_configure_args --enable-win32-dllmain=yes"
-               ;;
-       *-*-*netbsd*)
-               host_win32=no
-               CPPFLAGS="$CPPFLAGS -D_REENTRANT -DGC_NETBSD_THREADS -D_GNU_SOURCE"
-               libmono_cflags="-D_REENTRANT"
-               LDFLAGS="$LDFLAGS -pthread"
-               CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD"
-               libmono_ldflags="-pthread"
-               need_link_unlink=yes
-               libdl="-ldl"
-               libgc_threads=pthreads
-               with_sigaltstack=no
-               use_sigposix=yes
-               ;;
-       *-*-*freebsd*)
-               host_win32=no
-               if test "x$PTHREAD_CFLAGS" = "x"; then
-                       CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS"
-                       libmono_cflags=
-               else
-                       CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS -DGC_FREEBSD_THREADS"
-                       libmono_cflags="$PTHREAD_CFLAGS"
-               fi
-               if test "x$PTHREAD_LIBS" = "x"; then
-                       LDFLAGS="$LDFLAGS -pthread -L/usr/local/lib"
-                       libmono_ldflags="-pthread"
-               else
-                       LDFLAGS="$LDFLAGS $PTHREAD_LIBS -L/usr/local/lib"
-                       libmono_ldflags="$PTHREAD_LIBS"
-               fi
-               CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD"
-               need_link_unlink=yes
-               AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer])
-               libdl=
-               libgc_threads=pthreads
-               use_sigposix=yes
-               has_dtrace=yes
-               ;;
-       *-*-*openbsd*)
-               host_win32=no
-               CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DPLATFORM_BSD -D_REENTRANT -DUSE_MMAP"
-               if test "x$disable_munmap" != "xyes"; then
-               CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
-               fi
-               libmono_cflags="-D_THREAD_SAFE -D_REENTRANT"
-               LDFLAGS="$LDFLAGS -pthread"
-               need_link_unlink=yes
-               AC_DEFINE(PTHREAD_POINTER_ID)
-               libdl=
-               gc_default=boehm
-               libgc_threads=pthreads
-               with_sigaltstack=no
-               use_sigposix=yes
-               ;;
-       *-*-linux-android*)
-               host_win32=no
-               platform_android=yes
-               AC_DEFINE(PLATFORM_ANDROID,1,[Targeting the Android platform])
-               AC_DEFINE(TARGET_ANDROID,1,[Targeting the Android platform])
-
-               CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
-               if test "x$disable_munmap" != "xyes"; then
-                       CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
-               fi
-               libmono_cflags="-D_REENTRANT"
-               libdl="-ldl"
-               libgc_threads=pthreads
-               use_sigposix=yes
-
-               with_tls=pthread
-               with_sigaltstack=no
-               with_static_mono=no
-
-               # Android doesn't support boehm, as it's missing <link.h>
-               support_boehm=no
-               with_gc=sgen
-
-               # isinf(3) requires -lm; see isinf check below
-               LDFLAGS="$LDFLAGS -lm"
-
-               # Bionic's <pthread.h> sets PTHREAD_STACK_MIN=2*PAGE_SIZE; doesn't define
-               # PAGE_SIZE; breaks mono/io-layer/collection.c
-               # Bionic doesn't provide S_IWRITE; breaks io-layer/io.c
-               CFLAGS="$CFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR"
-               CXXFLAGS="$CXXFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR"
-
-               # The configure check can't detect this
-               AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support])
-
-               # to bypass the underscore linker check, can't work when cross-compiling
-               mono_cv_uscore=yes
-               mono_cv_clang=no
-               ;;
-       *-*-linux*)
-               host_win32=no
-               CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
-               if test "x$disable_munmap" != "xyes"; then
-                       CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
-               fi
-               libmono_cflags="-D_REENTRANT"
-               libdl="-ldl"
-               libgc_threads=pthreads
-               use_sigposix=yes
-               if test "x$cross_compiling" != "xno"; then
-                       # to bypass the underscore linker check, not
-                       # available during cross-compilation
-                       mono_cv_uscore=no
-                fi
-               case "$host" in
-               aarch64-*)
-                       support_boehm=no
-                       with_gc=sgen
-                       ;;
-               esac
-               ;;
-       *-*-nacl*)
-               host_win32=no
-               CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
-               if test "x$disable_munmap" != "xyes"; then
-                       CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
-               fi
-               libmono_cflags="-D_REENTRANT"
-               libdl=
-               libgc_threads=pthreads
-               gc_default=boehm
-               use_sigposix=yes
-               ikvm_native=no
-               AC_DEFINE(DISABLE_SOCKETS,1,[Disable sockets support])
-               AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support])
-               ;;
-       *-*-hpux*)
-               host_win32=no
-               CPPFLAGS="$CPPFLAGS -DGC_HPUX_THREADS -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_REENTRANT"
-               # +ESdbgasm only valid on bundled cc on RISC
-               # silently ignored for ia64
-               if test $GCC != "yes"; then
-                       CFLAGS="$CFLAGS +ESdbgasm"
-                       # Arrange for run-time dereferencing of null
-                       # pointers to produce a SIGSEGV signal.
-                       LDFLAGS="$LDFLAGS -z"
-               fi
-               CFLAGS="$CFLAGS +ESdbgasm"
-               LDFLAGS="$LDFLAGS -z"
-               libmono_cflags="-D_REENTRANT"
-               libmono_ldflags="-lpthread"
-               libgc_threads=pthreads
-               need_link_unlink=yes
-               use_sigposix=yes
-               ;;
-       *-*-solaris*)
-               host_win32=no
-               CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP -DPLATFORM_SOLARIS"
-               need_link_unlink=yes
-               libmono_cflags="-D_REENTRANT"
-               libgc_threads=pthreads
-               # This doesn't seem to work on solaris/x86, but the configure test runs
-               with_tls=pthread
-               has_dtrace=yes
-               use_sigposix=yes
-               enable_solaris_tar_check=yes
-               ;;
-       *-*-darwin*)
-               parallel_mark="Disabled_Currently_Hangs_On_MacOSX"
-               host_win32=no
-               platform_darwin=yes
-               target_mach=yes
-               CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP"
-               CPPFLAGS="$CPPFLAGS -DGetCurrentProcess=MonoGetCurrentProcess -DGetCurrentThread=MonoGetCurrentThread -DCreateEvent=MonoCreateEvent"
-               libmono_cflags="-D_THREAD_SAFE"
-               need_link_unlink=yes
-               AC_DEFINE(PTHREAD_POINTER_ID)
-               AC_DEFINE(USE_MACH_SEMA, 1, [...])
-               no_version_script=yes
-               libdl=
-               libgc_threads=pthreads
-               has_dtrace=yes
-               if test "x$cross_compiling" = "xyes"; then
-                       has_broken_apple_cpp=yes
-               fi
-               dnl Snow Leopard is horribly broken -- it reports itself as i386-apple-darwin*, but
-               dnl its gcc defaults to 64-bit mode.  They have also deprecated the usage of ucontext
-               dnl we need to set some flags to build our 32-bit binaries on 10.6 properly
-               case "$host" in
-                       dnl Snow Leopard and newer config.guess reports as this
-                       i*86-*-darwin*)
-                               BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE"
-                               BROKEN_DARWIN_CPPFLAGS="-D_XOPEN_SOURCE"
-                               CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_CPPFLAGS"
-                               CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS"
-                               CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS"
-                               CCASFLAGS="$CCASFLAGS $BROKEN_DARWIN_FLAGS"
-                               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_CPPFLAGS"
-                               CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS"
-                               CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_CPPFLAGS"
-                               CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS"
-                               ;;
-                       x*64-*-darwin*)
-                               ;;
-                       arm*-darwin*)
-                               has_dtrace=no
-                               ;;                      
-               esac
-               ;;
-       *-*-haiku*)
-               host_win32=no
-               CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_THREAD_SAFE"
-               libmono_cflags="-D_REENTRANT -D_THREAD_SAFE"
-               libdl=
-               LIBS="$LIBS -lnetwork"
-               need_link_unlink=yes
-               AC_DEFINE(PTHREAD_POINTER_ID)
-               libgc_threads=pthreads
-               use_sigposix=yes
-               ;;
-       *)
-               AC_MSG_WARN([*** Please add $host to configure.in checks!])
-               host_win32=no
-               libdl="-ldl"
-               ;;
-esac
-AC_MSG_RESULT(ok)
-
-if test x$need_link_unlink = xyes; then
-   AC_DEFINE(NEED_LINK_UNLINK, 1, [Define if Unix sockets cannot be created in an anonymous namespace])
-fi
-
-AC_SUBST(extra_runtime_ldflags)
-AM_CONDITIONAL(HOST_WIN32, test x$host_win32 = xyes)
-AM_CONDITIONAL(TARGET_WIN32, test x$target_win32 = xyes)
-AM_CONDITIONAL(PLATFORM_LINUX, echo x$target_os | grep -q linux)
-AM_CONDITIONAL(PLATFORM_DARWIN, test x$platform_darwin = xyes)
-AM_CONDITIONAL(PLATFORM_SIGPOSIX, test x$use_sigposix = xyes)
-AM_CONDITIONAL(PLATFORM_ANDROID, test x$platform_android = xyes)
-
-AC_CHECK_TOOL(CC, gcc, gcc)
-AC_PROG_CC
-AC_CHECK_TOOL(CXX, g++, g++)
-AC_PROG_CXX
-AM_PROG_AS
-AC_PROG_INSTALL
-AC_PROG_AWK
-AM_PROG_CC_C_O
-dnl We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4
-: ${CCAS='$(CC)'}
-# Set ASFLAGS if not already set.
-: ${CCASFLAGS='$(CFLAGS)'}
-AC_SUBST(CCAS)
-AC_SUBST(CCASFLAGS)
-
-# AC_PROG_CXX helpfully sets CXX to g++ even if no c++ compiler is found so check
-# GXX instead. See http://lists.gnu.org/archive/html/bug-autoconf/2002-04/msg00056.html
-if test "x$CXX" = "xg++"; then
-       if test "x$GXX" != "xyes"; then
-               # automake/libtool is so broken, it requires g++ even if the c++ sources
-               # are inside automake conditionals
-               AC_MSG_ERROR([You need to install g++])
-       fi
-fi
-
-dnl may require a specific autoconf version
-dnl AC_PROG_CC_FOR_BUILD
-dnl CC_FOR_BUILD not automatically detected
-CC_FOR_BUILD=$CC
-CFLAGS_FOR_BUILD=$CFLAGS
-BUILD_EXEEXT=
-if test "x$cross_compiling" = "xyes"; then
-       CC_FOR_BUILD=cc
-       CFLAGS_FOR_BUILD=
-       BUILD_EXEEXT=""
-fi
-AC_SUBST(CC_FOR_BUILD)
-AC_SUBST(CFLAGS_FOR_BUILD)
-AC_SUBST(HOST_CC)
-AC_SUBST(BUILD_EXEEXT)
-
-AM_CONDITIONAL(CROSS_COMPILING, [test x$cross_compiling = xyes])
-AM_CONDITIONAL(USE_BATCH_FILES, [test x$host_win32 = xyes -a x$cross_compiling = xyes])
-
-# Set STDC_HEADERS
-AC_HEADER_STDC
-AC_LIBTOOL_WIN32_DLL
-# This causes monodis to not link correctly
-#AC_DISABLE_FAST_INSTALL
-AM_PROG_LIBTOOL
-# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.
-DOLT
-
-export_ldflags=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-AC_SUBST(export_ldflags)
-
-# Test whenever ld supports -version-script
-AC_PROG_LD
-AC_PROG_LD_GNU
-if test "x$lt_cv_prog_gnu_ld" = "xno"; then
-   no_version_script=yes
-fi
-
-AM_ICONV()
-
-AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes)
-
-AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h sys/uio.h sys/param.h libproc.h)
-AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h)
-AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],
-                  [], [], [#include <stddef.h>
-                 #include <sys/socket.h>
-                 #include <linux/socket.h>])
-
-AC_CHECK_HEADERS(sys/user.h, [], [],
-[
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-])
-
-AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
-if test x$have_zlib = xyes; then
-   AC_TRY_COMPILE([#include <zlib.h>], [
-   #if defined(ZLIB_VERNUM) && (ZLIB_VERNUM >= 0x1230)
-   return 0;
-   #else
-   #error No good zlib found
-   #endif
-   ],[
-       AC_MSG_RESULT(Using system zlib)
-       zlib_msg="system zlib"
-       AC_DEFINE(HAVE_SYS_ZLIB,1,[Have system zlib])
-   ],[
-       AC_MSG_RESULT(Using embedded zlib)
-       have_zlib=no
-       zlib_msg="bundled zlib"
-   ])
-fi
-
-AM_CONDITIONAL(HAVE_ZLIB, test x$have_zlib = xyes)
-AC_DEFINE(HAVE_ZLIB,1,[Have system zlib])
-
-# for mono/metadata/debug-symfile.c
-AC_CHECK_HEADERS(elf.h)
-
-# for support
-AC_CHECK_HEADERS(poll.h)
-AC_CHECK_HEADERS(sys/poll.h)
-AC_CHECK_HEADERS(sys/wait.h)
-AC_CHECK_HEADERS(grp.h)
-AC_CHECK_HEADERS(syslog.h)
-
-# for mono/dis
-AC_CHECK_HEADERS(wchar.h)
-AC_CHECK_HEADERS(ieeefp.h)
-AC_MSG_CHECKING(for isinf)
-AC_TRY_LINK([#include <math.h>], [
-       int f = isinf (1);
-], [
-       AC_MSG_RESULT(yes)
-       AC_DEFINE(HAVE_ISINF, 1, [isinf available])
-], [
-       # We'll have to use signals
-       AC_MSG_RESULT(no)
-])
-# mingw
-AC_CHECK_FUNCS(_finite, , AC_MSG_CHECKING(for _finite in math.h)
-       AC_TRY_LINK([#include <math.h>], 
-       [ _finite(0.0); ], 
-       AC_DEFINE(HAVE__FINITE, 1, [Have _finite in -lm]) AC_MSG_RESULT(yes),
-       AC_MSG_RESULT(no)))
-
-# for Linux statfs support
-AC_CHECK_HEADERS(linux/magic.h)
-
-# not 64 bit clean in cross-compile
-AC_CHECK_SIZEOF(void *, 4)
-
-AC_CACHE_CHECK([for clang],
-       mono_cv_clang,[
-       AC_TRY_COMPILE([], [
-               #ifdef __clang__
-               #else
-               #error "FAILED"
-               #endif
-               return 0;
-       ],
-       [mono_cv_clang=yes],
-       [mono_cv_clang=no],
-       [])
-])
-
-WARN=''
-if test x"$GCC" = xyes; then
-        WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value'
-               # The runtime code does not respect ANSI C strict aliasing rules
-               CFLAGS="$CFLAGS -fno-strict-aliasing"
-
-               # We rely on signed overflow to behave
-               CFLAGS="$CFLAGS -fwrapv"
-
-               ORIG_CFLAGS=$CFLAGS
-               CFLAGS="$CFLAGS -Wdeclaration-after-statement"
-               AC_MSG_CHECKING(for -Wdeclaration-after-statement option to gcc)
-               AC_TRY_COMPILE([],[
-                               return 0;
-               ], [
-                  AC_MSG_RESULT(yes)
-               ], [
-                  AC_MSG_RESULT(no)
-                  CFLAGS=$ORIG_CFLAGS
-               ])
-
-               ORIG_CFLAGS=$CFLAGS
-               # Check for the normal version, since gcc ignores unknown -Wno options
-               CFLAGS="$CFLAGS -Wunused-but-set-variable -Werror"
-               AC_MSG_CHECKING(for -Wno-unused-but-set-variable option to gcc)
-               AC_TRY_COMPILE([],[
-                               return 0;
-               ], [
-                  AC_MSG_RESULT(yes)
-                  CFLAGS="$ORIG_CFLAGS -Wno-unused-but-set-variable"
-               ], [
-                  AC_MSG_RESULT(no)
-                  CFLAGS=$ORIG_CFLAGS
-               ])
-
-               if test "x$mono_cv_clang" = "xyes"; then
-                  # https://bugzilla.samba.org/show_bug.cgi?id=8118
-                  WARN="$WARN -Qunused-arguments"
-                  WARN="$WARN -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign"
-               fi
-else
-       # The Sun Forte compiler complains about inline functions that access static variables
-       # so disable all inlining.
-       case "$host" in
-       *-*-solaris*)
-               CFLAGS="$CFLAGS -Dinline="
-               ;;
-       esac
-fi
-CFLAGS="$CFLAGS -g $WARN"
-CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g"
-
-# Where's the 'mcs' source tree?
-if test -d $srcdir/mcs; then
-  mcsdir=mcs
-else
-  mcsdir=../mcs
-fi
-
-AC_ARG_WITH(mcs-path, [  --with-mcs-path=/path/to/mcs      Specify an alternate mcs source tree],
-       if test x$with_mcs_path != "x" -a -d $with_mcs_path ; then
-               mcsdir=$with_mcs_path
-       fi
-)
-
-AC_ARG_WITH(jumptables, [  --with-jumptables=yes,no      enable/disable support for jumptables (ARM-only for now) (defaults to no)],[],[with_jumptables=no])
-
-#
-# A sanity check to catch cases where the package was unpacked
-# with an ancient tar program (Solaris)
-#
-AC_ARG_ENABLE(solaris-tar-check,
-[  --disable-solaris-tar-check    disable solaris tar check],
-   do_solaris_tar_check=no, do_solaris_tar_check=yes)
-
-if test x"$do_solaris_tar_check" = xyes -a x"$enable_solaris_tar_check" = xyes; then
-       AC_MSG_CHECKING(integrity of package)
-       if test -f $mcsdir/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapTypeMapper.cs
-       then
-               AC_MSG_RESULT(ok)
-       else
-               errorm="Your mono distribution is incomplete;  if unpacking from a tar file, make sure you use GNU tar;  see http://www.mono-project.com/IncompletePackage for more details"
-               AC_MSG_ERROR([$errorm])
-       fi
-fi
-
-if test "x$with_mcs_path" != "x"; then
-mcs_topdir=$(cd "$mcsdir" && pwd)
-mcs_topdir_from_srcdir=$mcs_topdir
-else
-mcs_topdir=$(cd "$srcdir/$mcsdir" && pwd)
-mcs_topdir_from_srcdir='$(top_builddir)'/$mcsdir
-fi
-
-# Convert mcs_topdir* paths to Windows syntax.
-if test x$cross_compiling$host_win32 = xnoyes; then
-  mcs_topdir=$(cygpath -m $mcs_topdir)
-  case $mcs_topdir_from_srcdir in
-    /cygdrive/*)
-       mcs_topdir_from_srcdir=$(cygpath -m $mcs_topdir_from_srcdir)
-       ;;
-  esac
-fi
-
-AC_SUBST([mcs_topdir])
-AC_SUBST([mcs_topdir_from_srcdir])
-
-# Where's the 'olive' source tree?
-if test -d $srcdir/olive; then
-  olivedir=olive
-else
-  olivedir=../olive
-fi
-
-if test -d $srcdir/$olivedir; then
-olive_topdir='$(top_srcdir)/'$olivedir
-fi
-
-# gettext: prepare the translation directories. 
-# we do not configure the full gettext, as we consume it dynamically from C#
-AM_PO_SUBDIRS
-
-if test "x$USE_NLS" = "xyes"; then
-   AC_CHECK_PROG(HAVE_MSGFMT, msgfmt,yes,no)
-
-   if test "x$HAVE_MSGFMT" = "xno"; then
-         AC_MSG_ERROR([msgfmt not found. You need to install the 'gettext' package, or pass --enable-nls=no to configure.])
-   fi
-fi
-
-AC_ARG_WITH([libgdiplus], 
-       [  --with-libgdiplus=installed|sibling|<path>   Override the libgdiplus used for System.Drawing tests (defaults to installed)], 
-       [], [with_libgdiplus=installed])
-
-case $with_libgdiplus in
-no|installed) libgdiplus_loc= ;;
-yes|sibling) libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la ;;
-/*) libgdiplus_loc=$with_libgdiplus ;;
-*) libgdiplus_loc=`pwd`/$with_libgdiplus ;;
-esac
-AC_SUBST([libgdiplus_loc])
-
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
-pkg_config_path=
-AC_ARG_WITH(crosspkgdir, [  --with-crosspkgdir=/path/to/pkg-config/dir      Change pkg-config dir to custom dir],
-       if test x$with_crosspkgdir = "x"; then
-               if test -s $PKG_CONFIG_PATH; then
-                       pkg_config_path=$PKG_CONFIG_PATH
-               fi
-       else
-               pkg_config_path=$with_crosspkgdir
-               PKG_CONFIG_PATH=$pkg_config_path
-               export PKG_CONFIG_PATH
-       fi
-)
-
-ac_configure_args="$ac_configure_args \"CPPFLAGS_FOR_EGLIB=$EGLIB_CPPFLAGS\" \"CFLAGS_FOR_EGLIB=$CFLAGS_FOR_EGLIB\""
-AC_CONFIG_SUBDIRS(eglib)
-
-GLIB_CFLAGS='-I$(top_srcdir)/eglib/src -I$(top_builddir)/eglib/src'
-GLIB_LIBS='-L$(top_builddir)/eglib/src -leglib -lm'
-BUILD_GLIB_CFLAGS="$GLIB_CFLAGS"
-BUILD_GLIB_LIBS="$GLIB_LIBS"
-GMODULE_CFLAGS="$GLIB_CFLAGS"
-GMODULE_LIBS="$GLIB_LIBS"
-  
-AC_SUBST(GLIB_CFLAGS)
-AC_SUBST(GLIB_LIBS)
-AC_SUBST(GMODULE_CFLAGS)
-AC_SUBST(GMODULE_LIBS)
-AC_SUBST(BUILD_GLIB_CFLAGS)
-AC_SUBST(BUILD_GLIB_LIBS)
-
-AC_ARG_WITH(gc,   [  --with-gc=boehm,included,none  Controls the Boehm GC config, default=included],[gc=$with_gc],[gc=$gc_default])
-
-# Enable support for fast thread-local storage
-# Some systems have broken support, so we allow to disable it.
-AC_ARG_WITH(tls, [  --with-tls=__thread,pthread    select Thread Local Storage implementation (defaults to __thread)],[],[with_tls=__thread])
-
-# Enable support for using sigaltstack for SIGSEGV and stack overflow handling
-# This does not work on some platforms (bug #55253)
-AC_ARG_WITH(sigaltstack, [  --with-sigaltstack=yes,no      enable/disable support for sigaltstack (defaults to yes)],[],[with_sigaltstack=yes])
-
-AC_ARG_WITH(static_mono, [  --with-static_mono=yes,no      link mono statically to libmono (faster) (defaults to yes)],[],[with_static_mono=yes])
-AC_ARG_WITH(shared_mono, [  --with-shared_mono=yes,no      build a shared libmono library (defaults to yes)],[],[with_shared_mono=yes])
-# Same as --with-shared_mono=no
-AC_ARG_ENABLE(libraries, [  --disable-libraries disable the build of libmono], enable_libraries=$enableval, enable_libraries=yes)
-
-if test "x$enable_static" = "xno"; then
-   with_static_mono=no
-fi
-
-if test "x$enable_shared" = "xno"; then
-   with_shared_mono=no
-fi
-
-if test "x$enable_libraries" = "xno"; then
-   with_shared_mono=no
-fi
-
-AM_CONDITIONAL(DISABLE_LIBRARIES, test x$enable_libraries = xno)
-
-case $host in
-*nacl* ) with_shared_mono=yes;;
-esac
-
-if test "x$host_win32" = "xyes"; then
-   # Boehm GC requires the runtime to be in its own dll
-   with_static_mono=no
-fi
-
-AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno)
-AM_CONDITIONAL(SHARED_MONO, test x$with_shared_mono != xno)
-AC_ARG_ENABLE(mcs-build, [  --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes)
-
-AC_ARG_WITH(xen_opt,   [  --with-xen_opt=yes,no          Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes])
-if test "x$with_xen_opt" = "xyes" -a "x$mono_cv_clang" = "xno"; then
-       AC_DEFINE(MONO_XEN_OPT, 1, [Xen-specific behaviour])
-       ORIG_CFLAGS=$CFLAGS
-       CFLAGS="$CFLAGS -mno-tls-direct-seg-refs"
-       AC_MSG_CHECKING(for -mno-tls-direct-seg-refs option to gcc)
-       AC_TRY_COMPILE([], [
-               return 0;
-       ], [
-          AC_MSG_RESULT(yes)
-          # Pass it to libgc as well
-          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -mno-tls-direct-seg-refs"
-       ], [
-          AC_MSG_RESULT(no)
-          CFLAGS=$ORIG_CFLAGS
-       ])
-fi
-
-AC_ARG_ENABLE(small-config, [  --enable-small-config Enable tweaks to reduce requirements (and capabilities)], enable_small_config=$enableval, enable_small_config=no)
-
-if test x$enable_small_config = xyes; then
-       AC_DEFINE(MONO_SMALL_CONFIG,1,[Reduce runtime requirements (and capabilities)])
-       CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DSMALL_CONFIG"
-fi
-
-AC_ARG_ENABLE(system-aot, [  --enable-system-aot  Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=default)
-
-DISABLED_FEATURES=none
-
-AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
-     LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, appdomains, verifier, 
-     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, perfcounters, normalization, assembly_remapping, shared_perfcounters, remoting,
-        security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.],
-[
-       for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
-               eval "mono_feature_disable_$feature='yes'"
-       done
-       DISABLED_FEATURES=$enable_minimal
-       disabled="Disabled:      $enable_minimal"
-],[])
-
-AC_DEFINE_UNQUOTED(DISABLED_FEATURES, "$DISABLED_FEATURES", [String of disabled features])
-
-if test "x$mono_feature_disable_aot" = "xyes"; then
-       AC_DEFINE(DISABLE_AOT_COMPILER, 1, [Disable AOT Compiler])
-       AC_MSG_NOTICE([Disabled AOT compiler])
-fi
-
-if test "x$mono_feature_disable_profiler" = "xyes"; then
-       AC_DEFINE(DISABLE_PROFILER, 1, [Disable default profiler support])
-       AC_MSG_NOTICE([Disabled support for the profiler])
-fi
-AM_CONDITIONAL(DISABLE_PROFILER, test x$mono_feature_disable_profiler = xyes)
-
-if test "x$mono_feature_disable_decimal" = "xyes"; then
-       AC_DEFINE(DISABLE_DECIMAL, 1, [Disable System.Decimal support])
-       AC_MSG_NOTICE([Disabled support for decimal])
-fi
-
-if test "x$mono_feature_disable_pinvoke" = "xyes"; then
-       AC_DEFINE(DISABLE_PINVOKE, 1, [Disable P/Invoke support])
-       AC_MSG_NOTICE([Disabled support for P/Invoke])
-fi
-
-if test "x$mono_feature_disable_debug" = "xyes"; then
-       AC_DEFINE(DISABLE_DEBUG, 1, [Disable runtime debugging support])
-       AC_MSG_NOTICE([Disabled support for runtime debugging])
-fi
-
-if test "x$mono_feature_disable_reflection_emit" = "xyes"; then
-       AC_DEFINE(DISABLE_REFLECTION_EMIT, 1, [Disable reflection emit support])
-       mono_feature_disable_reflection_emit_save=yes
-       AC_MSG_NOTICE([Disabled support for Reflection.Emit])
-fi
-
-if test "x$mono_feature_disable_reflection_emit_save" = "xyes"; then
-       AC_DEFINE(DISABLE_REFLECTION_EMIT_SAVE, 1, [Disable assembly saving support in reflection emit])
-       AC_MSG_NOTICE([Disabled support for Reflection.Emit.Save])
-fi
-
-if test "x$mono_feature_disable_large_code" = "xyes"; then
-       AC_DEFINE(DISABLE_LARGE_CODE, 1, [Disable support for huge assemblies])
-       AC_MSG_NOTICE([Disabled support for large assemblies])
-fi
-
-if test "x$mono_feature_disable_logging" = "xyes"; then
-       AC_DEFINE(DISABLE_LOGGING, 1, [Disable support debug logging])
-       AC_MSG_NOTICE([Disabled support for logging])
-fi
-
-if test "x$mono_feature_disable_com" = "xyes"; then
-       AC_DEFINE(DISABLE_COM, 1, [Disable COM support])
-       AC_MSG_NOTICE([Disabled COM support])
-fi
-
-if test "x$mono_feature_disable_ssa" = "xyes"; then
-       AC_DEFINE(DISABLE_SSA, 1, [Disable advanced SSA JIT optimizations])
-       AC_MSG_NOTICE([Disabled SSA JIT optimizations])
-fi
-
-if test "x$mono_feature_disable_generics" = "xyes"; then
-       AC_DEFINE(DISABLE_GENERICS, 1, [Disable generics support])
-       AC_MSG_NOTICE([Disabled Generics Support])
-fi
-
-if test "x$mono_feature_disable_shadowcopy" = "xyes"; then
-       AC_DEFINE(DISABLE_SHADOW_COPY, 1, [Disable Shadow Copy for AppDomains])
-       AC_MSG_NOTICE([Disabled Shadow copy for AppDomains])
-fi
-
-if test "x$mono_feature_disable_portability" = "xyes"; then
-       AC_DEFINE(DISABLE_PORTABILITY, 1, [Disables the IO portability layer])
-       AC_MSG_NOTICE([Disabled IO Portability layer])
-fi
-
-if test "x$mono_feature_disable_attach" = "xyes"; then
-       AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support])
-       AC_MSG_NOTICE([Disabled agent attach])
-fi
-
-if test "x$mono_feature_disable_full_messages" = "xyes"; then
-       AC_DEFINE(DISABLE_FULL_MESSAGES, 1, [Disables building in the full table of WAPI messages])
-       AC_MSG_NOTICE([Disabled full messages for Win32 errors, only core message strings shipped])
-fi
-
-if test "x$mono_feature_disable_verifier" = "xyes"; then
-       AC_DEFINE(DISABLE_VERIFIER, 1, [Disables the verifier])
-       AC_MSG_NOTICE([Disabled the metadata and IL verifiers])
-fi
-
-if test "x$mono_feature_disable_jit" = "xyes"; then
-       AC_DEFINE(DISABLE_JIT, 1, [Disable the JIT, only full-aot mode will be supported by the runtime.])
-       AC_MSG_NOTICE([Disabled the JIT engine, only full AOT will be supported])
-fi
-
-AM_CONDITIONAL(DISABLE_JIT, test x$mono_feature_disable_jit = xyes)
-
-if test "x$mono_feature_disable_simd" = "xyes"; then
-       AC_DEFINE(DISABLE_SIMD, 1, [Disable SIMD intrinsics related optimizations.])
-       AC_MSG_NOTICE([Disabled SIMD support])
-fi
-
-if test "x$mono_feature_disable_soft_debug" = "xyes"; then
-       AC_DEFINE(DISABLE_SOFT_DEBUG, 1, [Disable Soft Debugger Agent.])
-       AC_MSG_NOTICE([Disabled Soft Debugger.])
-fi
-
-if test "x$mono_feature_disable_perfcounters" = "xyes"; then
-       AC_DEFINE(DISABLE_PERFCOUNTERS, 1, [Disable Performance Counters.])
-       AC_MSG_NOTICE([Disabled Performance Counters.])
-fi
-if test "x$mono_feature_disable_normalization" = "xyes"; then
-       AC_DEFINE(DISABLE_NORMALIZATION, 1, [Disable String normalization support.])
-       AC_MSG_NOTICE([Disabled String normalization support.])
-fi
-
-if test "x$mono_feature_disable_assembly_remapping" = "xyes"; then
-       AC_DEFINE(DISABLE_ASSEMBLY_REMAPPING, 1, [Disable assembly remapping.])
-       AC_MSG_NOTICE([Disabled Assembly remapping.])
-fi
-
-if test "x$mono_feature_disable_shared_perfcounters" = "xyes"; then
-       AC_DEFINE(DISABLE_SHARED_PERFCOUNTERS, 1, [Disable shared perfcounters.])
-       AC_MSG_NOTICE([Disabled Shared perfcounters.])
-fi
-
-if test "x$mono_feature_disable_appdomains" = "xyes"; then
-       AC_DEFINE(DISABLE_APPDOMAINS, 1, [Disable support for multiple appdomains.])
-       AC_MSG_NOTICE([Disabled support for multiple appdomains.])
-fi
-
-if test "x$mono_feature_disable_remoting" = "xyes"; then
-       AC_DEFINE(DISABLE_REMOTING, 1, [Disable remoting support (This disables type proxies and make com non-functional)])
-       AC_MSG_NOTICE([Disabled remoting])
-fi
-
-if test "x$mono_feature_disable_security" = "xyes"; then
-       AC_DEFINE(DISABLE_SECURITY, 1, [Disable CAS/CoreCLR security])
-       AC_MSG_NOTICE([Disabled CAS/CoreCLR security manager (used e.g. for Moonlight)])
-fi
-
-if test "x$mono_feature_disable_sgen_remset" = "xyes"; then
-       AC_DEFINE(DISABLE_SGEN_REMSET, 1, [Disable wbarrier=remset support in SGEN.])
-       AC_MSG_NOTICE([Disabled wbarrier=remset support in SGEN.])
-fi
-
-if test "x$mono_feature_disable_sgen_marksweep_par" = "xyes"; then
-       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_PAR, 1, [Disable major=marksweep-par support in SGEN.])
-       AC_MSG_NOTICE([Disabled major=marksweep-par support in SGEN.])
-fi
-
-if test "x$mono_feature_disable_sgen_marksweep_fixed" = "xyes"; then
-       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED, 1, [Disable major=marksweep-fixed support in SGEN.])
-       AC_MSG_NOTICE([Disabled major=marksweep-fixed support in SGEN.])
-fi
-
-if test "x$mono_feature_disable_sgen_marksweep_fixed_par" = "xyes"; then
-       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED_PAR, 1, [Disable major=marksweep-fixed-par support in SGEN.])
-       AC_MSG_NOTICE([Disabled major=marksweep-fixed-par support in SGEN.])
-fi
-
-if test "x$mono_feature_disable_sgen_copying" = "xyes"; then
-       AC_DEFINE(DISABLE_SGEN_MAJOR_COPYING, 1, [Disable major=copying support in SGEN.])
-       AC_MSG_NOTICE([Disabled major=copying support in SGEN.])
-fi
-
-AC_ARG_ENABLE(executables, [  --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes)
-AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno)
-
-has_extension_module=no
-AC_ARG_ENABLE(extension-module, [  --enable-extension-module=LIST enable the core-extensions from LIST],
-[
-       for extension in `echo "$enable_extension_module" | sed -e "s/,/ /g"`; do
-               if test x$extension = xdefault ; then
-                       has_extension_module=yes;
-               fi
-       done
-       if test x$enable_extension_module = xyes; then
-               has_extension_module=yes;
-       fi
-], [])
-
-AM_CONDITIONAL([HAS_EXTENSION_MODULE], [test x$has_extension_module != xno])
-
-if test x$has_extension_module != xno ; then
-       AC_DEFINE([ENABLE_EXTENSION_MODULE], 1, [Extension module enabled])
-       AC_MSG_NOTICE([Enabling mono extension module.])
-fi
-
-AC_ARG_ENABLE(gsharing, [  --enable-gsharing Enable gsharing], enable_gsharing=$enableval, enable_gsharing=no)
-if test x$enable_gsharing = xyes; then
-       AC_DEFINE(ENABLE_GSHAREDVT,1,[Gsharing])
-fi
-
-AC_ARG_ENABLE(native-types, [  --enable-native-types Enable native types], enable_native_types=$enableval, enable_native_types=no)
-if test x$enable_native_types = xyes; then
-       AC_DEFINE(MONO_NATIVE_TYPES,1,[native types])
-fi
-
-AC_MSG_CHECKING(for visibility __attribute__)
-AC_COMPILE_IFELSE([
-       AC_LANG_SOURCE([[
-               void __attribute__ ((visibility ("hidden"))) doit (void) {}
-               int main () { doit (); return 0; }
-       ]])
-], [
-   have_visibility_hidden=yes
-   AC_MSG_RESULT(yes)
-], [
-   have_visibility_hidden=no
-   AC_MSG_RESULT(no)
-])
-
-AC_MSG_CHECKING(for deprecated __attribute__)
-AC_TRY_COMPILE([
-     int doit (void) __attribute__ ((deprecated));
-     int doit (void) { return 0; }
-], [
-       return 0;
-], [
-   have_deprecated=yes
-   AC_MSG_RESULT(yes)
-], [
-   have_deprecated=no
-   AC_MSG_RESULT(no)
-])
-
-AC_ARG_ENABLE(parallel-mark, [  --enable-parallel-mark     Enables GC Parallel Marking], enable_parallel_mark=$enableval, enable_parallel_mark=$parallel_mark)
-if test x$enable_parallel_mark = xyes; then
-       libgc_configure_args="$libgc_configure_args --enable-parallel-mark"
-fi
-
-AC_ARG_ENABLE(boehm, [  --disable-boehm            Disable the Boehm GC.], support_boehm=$enableval,support_boehm=${support_boehm:-yes})
-AM_CONDITIONAL(SUPPORT_BOEHM, test x$support_boehm = xyes)
-
-dnl
-dnl Boehm GC configuration
-dnl
-LIBGC_CPPFLAGS=
-LIBGC_LIBS=
-LIBGC_STATIC_LIBS=
-libgc_dir=
-case "x$gc" in
-       xboehm|xbohem|xyes)
-               AC_CHECK_HEADERS(gc.h gc/gc.h, gc_headers=yes)
-               AC_CHECK_LIB(gc, GC_malloc, found_boehm="yes",,$libdl)
-
-               if test "x$found_boehm" != "xyes"; then
-                       AC_MSG_ERROR("GC requested but libgc not found! Install libgc or run configure with --with-gc=none.")
-               fi
-               if test "x$gc_headers" != "xyes"; then
-                       AC_MSG_ERROR("GC requested but header files not found! You may need to install them by hand.")
-               fi
-
-               LIBGC_LIBS="-lgc $libdl"
-               LIBGC_STATIC_LIBS="$LIBGC_LIBS"
-               libmono_ldflags="$libmono_ldflags -lgc"
-               BOEHM_DEFINES="-DHAVE_BOEHM_GC"
-
-               # AC_CHECK_FUNCS does not work for some reason...
-               AC_CHECK_LIB(gc, GC_gcj_malloc, found_gcj_malloc="yes",,$libdl)
-               if test "x$found_gcj_malloc" = "xyes"; then
-                       BOEHM_DEFINES="-DHAVE_GC_GCJ_MALLOC $BOEHM_DEFINES"
-                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (with typed GC)", [GC description])
-                       gc_msg="System Boehm with typed GC"
-               else
-                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (no typed GC)", [GC description])
-                       gc_msg="System Boehm (without typed GC)"
-               fi
-               AC_CHECK_LIB(gc, GC_enable, found_gc_enable="yes",,$libdl)
-               if test "x$found_gc_enable" = "xyes"; then
-                       BOEHM_DEFINES="-DHAVE_GC_ENABLE $BOEHM_DEFINES"
-               fi
-
-               # check whether we need to explicitly allow
-                       # thread registering
-                       AC_CHECK_LIB(gc, GC_allow_register_threads, found_allow_register_threads="yes",,$libdl)
-                       if test "x$found_allow_register_threads" = "xyes"; then
-                        AC_DEFINE(HAVE_GC_ALLOW_REGISTER_THREADS, 1, [GC requires thread registration])
-                       fi
-
-               ;;
-
-       xincluded)
-               use_included_gc=yes
-               libgc_dir=libgc
-
-               LIBGC_CPPFLAGS='-I$(top_srcdir)/libgc/include'
-               LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la'
-               LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la'
-
-               BOEHM_DEFINES="-DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE"
-
-               if test x$target_win32 = xyes; then
-                       BOEHM_DEFINES="$BOEHM_DEFINES -DGC_NOT_DLL"
-                       CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DGC_BUILD -DGC_NOT_DLL"
-               fi
-
-               gc_msg="bundled Boehm GC with typed GC"
-               if test x$enable_parallel_mark = xyes; then
-                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description])
-                       gc_msg="$gc_msg and parallel mark"
-               else
-                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC)", [GC description])
-               fi
-               ;;
-
-       xsgen)
-               AC_MSG_WARN("Use --with-sgen instead, --with-gc= controls Boehm configuration")
-               ;;
-
-       xnone)
-               AC_MSG_WARN("Compiling mono without GC.")
-               AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "none", [GC description])
-               AC_DEFINE(HAVE_NULL_GC,1,[No GC support.])
-               ;;
-       *)
-               AC_MSG_ERROR([Invalid argument to --with-gc.])
-               ;;
-esac
-
-AC_ARG_WITH(large-heap, [  --with-large-heap=yes,no       Enable support for GC heaps larger than 3GB (defaults to no)], [large_heap=$withval], [large_heap=no])
-if test "x$large_heap" = "xyes"; then
-   CPPFLAGS="$CPPFLAGS -DLARGE_CONFIG"
-fi
-
-AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes)
-AC_SUBST(LIBGC_CPPFLAGS)
-AC_SUBST(LIBGC_LIBS)
-AC_SUBST(LIBGC_STATIC_LIBS)
-AC_SUBST(libgc_dir)
-AC_SUBST(BOEHM_DEFINES)
-
-dnl
-dnl End of libgc checks
-dnl
-
-dnl *************************************
-dnl *** Checks for zero length arrays ***
-dnl *************************************
-AC_MSG_CHECKING(whether $CC supports zero length arrays)
-AC_TRY_COMPILE([
-       struct s {
-               int  length;
-               char data [0];
-       };
-], [], [
-       AC_MSG_RESULT(yes)
-       AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 0, [Length of zero length arrays])
-], [
-       AC_MSG_RESULT(no)
-       AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 1, [Length of zero length arrays])
-])
-
-AC_CHECK_HEADERS(nacl/nacl_dyncode.h)
-
-if test x$target_win32 = xno; then
-
-       dnl hires monotonic clock support
-       AC_SEARCH_LIBS(clock_gettime, rt)
-
-       dnl dynamic loader support
-       AC_CHECK_FUNC(dlopen, DL_LIB="",
-               AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", dl_support=no)
-       )
-       if test x$dl_support = xno; then
-               AC_MSG_WARN([No dynamic loading support available])
-       else
-               LIBS="$LIBS $DL_LIB"
-               AC_DEFINE(HAVE_DL_LOADER,1,[dlopen-based dynamic loader available])
-               dnl from glib's configure.in
-               AC_CACHE_CHECK([for preceeding underscore in symbols],
-                       mono_cv_uscore,[
-                       AC_TRY_RUN([#include <dlfcn.h>
-                       int mono_underscore_test (void) { return 42; }
-                       int main() {
-                         void *f1 = (void*)0, *f2 = (void*)0, *handle;
-                         handle = dlopen ((void*)0, 0);
-                         if (handle) {
-                           f1 = dlsym (handle, "mono_underscore_test");
-                           f2 = dlsym (handle, "_mono_underscore_test");
-                         } return (!f2 || f1);
-                       }],
-                               [mono_cv_uscore=yes],
-                               [mono_cv_uscore=no],
-                       [])
-               ])
-               if test "x$mono_cv_uscore" = "xyes"; then
-                       MONO_DL_NEED_USCORE=1
-               else
-                       MONO_DL_NEED_USCORE=0
-               fi
-               AC_SUBST(MONO_DL_NEED_USCORE)
-               AC_CHECK_FUNC(dlerror)
-       fi
-
-       dnl ******************************************************************
-       dnl *** Checks for the IKVM JNI interface library                  ***
-       dnl ******************************************************************
-       AC_ARG_WITH(ikvm-native, [  --with-ikvm-native=yes,no      build the IKVM JNI interface library (defaults to yes)],[with_ikvm_native=$withval],[with_ikvm_native=$ikvm_native])
-
-       ikvm_native_dir=
-       if test x$with_ikvm_native = xyes; then
-               ikvm_native_dir=ikvm-native
-               jdk_headers_found="IKVM Native"
-       fi
-
-       AC_SUBST(ikvm_native_dir)
-
-       AC_CHECK_HEADERS(execinfo.h)
-
-       AC_CHECK_HEADERS(sys/auxv.h)
-
-       AC_CHECK_FUNCS(getgrgid_r)
-       AC_CHECK_FUNCS(getgrnam_r)
-       AC_CHECK_FUNCS(getpwnam_r)
-       AC_CHECK_FUNCS(getpwuid_r)
-       AC_CHECK_FUNCS(getresuid)
-       AC_CHECK_FUNCS(setresuid)
-       AC_CHECK_FUNCS(kqueue)
-       AC_CHECK_FUNCS(backtrace_symbols)
-       AC_CHECK_FUNCS(mkstemp)
-       AC_CHECK_FUNCS(mmap)
-       AC_CHECK_FUNCS(madvise)
-       AC_CHECK_FUNCS(getrusage)
-       AC_CHECK_FUNCS(getpriority)
-       AC_CHECK_FUNCS(setpriority)
-       AC_CHECK_FUNCS(dl_iterate_phdr)
-       AC_CHECK_FUNCS(dladdr)
-       AC_CHECK_FUNCS(sysconf)
-
-       AC_CHECK_FUNCS(sched_setaffinity)
-       AC_CHECK_FUNCS(sched_getcpu)
-
-       dnl ****************************************************************
-       dnl *** Check for sched_setaffinity from glibc versions before   ***
-       dnl *** 2.3.4. The older versions of the function only take 2    ***
-       dnl *** parameters, not 3.                                       ***
-       dnl ***                                                          ***
-       dnl *** Because the interface change was not made in a minor     ***
-       dnl *** version rev, the __GLIBC__ and __GLIBC_MINOR__ macros    ***
-       dnl *** won't always indicate the interface sched_affinity has.  ***
-       dnl ****************************************************************
-       AC_MSG_CHECKING(for sched_setaffinity from glibc < 2.3.4)
-       AC_TRY_COMPILE([#include <sched.h>], [
-            int mask = 1; 
-            sched_setaffinity(0, &mask);
-                       return 0;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY, 1, [Have GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY])
-       ], [
-               # We have the new, three-parameter version
-               AC_MSG_RESULT(no)
-       ])
-
-
-       dnl ******************************************************************
-       dnl *** Check for large file support                               ***
-       dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) ***
-       dnl ******************************************************************
-       
-       # Check that off_t can represent 2**63 - 1 correctly, working around
-       # potential compiler bugs.  Defines LARGE_FILE_SUPPORT, adds $1 to
-       # CPPFLAGS and sets $large_offt to yes if the test succeeds
-       large_offt=no
-       AC_DEFUN([LARGE_FILES], [
-               large_CPPFLAGS=$CPPFLAGS
-               CPPFLAGS="$CPPFLAGS $1"
-               AC_TRY_COMPILE([
-                       #include <sys/types.h>
-                       #include <limits.h>
-               ], [
-                       /* Lifted this compile time assert method from: http://www.jaggersoft.com/pubs/CVu11_3.html */
-                       #define COMPILE_TIME_ASSERT(pred) \
-                               switch(0){case 0:case pred:;}
-                       COMPILE_TIME_ASSERT(sizeof(off_t) * CHAR_BIT == 64);
-               ], [
-                       AC_MSG_RESULT(ok)
-                       AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support])
-                       large_CPPFLAGS="$large_CPPFLAGS $1"
-                       large_offt=yes
-               ], [
-                       AC_MSG_RESULT(no)
-               ])
-               CPPFLAGS=$large_CPPFLAGS
-       ])
-
-       AC_MSG_CHECKING(if off_t is 64 bits wide)
-       LARGE_FILES("")
-       if test $large_offt = no; then
-               AC_MSG_CHECKING(if _FILE_OFFSET_BITS=64 gives 64 bit off_t)
-               LARGE_FILES("-D_FILE_OFFSET_BITS=64")
-       fi
-       if test $large_offt = no; then
-               AC_MSG_WARN([No 64 bit file size support available])
-       fi
-       
-       dnl *****************************
-       dnl *** Checks for libsocket  ***
-       dnl *****************************
-       AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
-
-       case "$host" in
-               *-*-*freebsd*)
-                       dnl *****************************
-                       dnl *** Checks for libinotify ***
-                       dnl *****************************
-                       AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify")
-       esac
-
-       dnl *******************************
-       dnl *** Checks for MSG_NOSIGNAL ***
-       dnl *******************************
-       AC_MSG_CHECKING(for MSG_NOSIGNAL)
-       AC_TRY_COMPILE([#include <sys/socket.h>], [
-               int f = MSG_NOSIGNAL;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_MSG_NOSIGNAL, 1, [Have MSG_NOSIGNAL])
-       ], [
-               # We'll have to use signals
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *****************************
-       dnl *** Checks for IPPROTO_IP ***
-       dnl *****************************
-       AC_MSG_CHECKING(for IPPROTO_IP)
-       AC_TRY_COMPILE([#include <netinet/in.h>], [
-               int level = IPPROTO_IP;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP])
-       ], [
-               # We'll have to use getprotobyname
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *******************************
-       dnl *** Checks for IPPROTO_IPV6 ***
-       dnl *******************************
-       AC_MSG_CHECKING(for IPPROTO_IPV6)
-       AC_TRY_COMPILE([#include <netinet/in.h>], [
-               int level = IPPROTO_IPV6;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6])
-       ], [
-               # We'll have to use getprotobyname
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl ******************************
-       dnl *** Checks for IPPROTO_TCP ***
-       dnl ******************************
-       AC_MSG_CHECKING(for IPPROTO_TCP)
-       AC_TRY_COMPILE([#include <netinet/in.h>], [
-               int level = IPPROTO_TCP;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IPPROTO_TCP, 1, [Have IPPROTO_TCP])
-       ], [
-               # We'll have to use getprotobyname
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *****************************
-       dnl *** Checks for SOL_IP     ***
-       dnl *****************************
-       AC_MSG_CHECKING(for SOL_IP)
-       AC_TRY_COMPILE([#include <netdb.h>], [
-               int level = SOL_IP;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_SOL_IP, 1, [Have SOL_IP])
-       ], [
-               # We'll have to use getprotobyname
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *****************************
-       dnl *** Checks for SOL_IPV6     ***
-       dnl *****************************
-       AC_MSG_CHECKING(for SOL_IPV6)
-       AC_TRY_COMPILE([#include <netdb.h>], [
-               int level = SOL_IPV6;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_SOL_IPV6, 1, [Have SOL_IPV6])
-       ], [
-               # We'll have to use getprotobyname
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *****************************
-       dnl *** Checks for SOL_TCP    ***
-       dnl *****************************
-       AC_MSG_CHECKING(for SOL_TCP)
-       AC_TRY_COMPILE([#include <netdb.h>], [
-               int level = SOL_TCP;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_SOL_TCP, 1, [Have SOL_TCP])
-       ], [
-               # We'll have to use getprotobyname
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *****************************
-       dnl *** Checks for IP_PKTINFO ***
-       dnl *****************************
-       AC_MSG_CHECKING(for IP_PKTINFO)
-       AC_TRY_COMPILE([#include <linux/in.h>], [
-               int level = IP_PKTINFO;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *****************************
-       dnl *** Checks for IPV6_PKTINFO ***
-       dnl *****************************
-       AC_MSG_CHECKING(for IPV6_PKTINFO)
-       AC_TRY_COMPILE([#include <netdb.h>], [
-               int level = IPV6_PKTINFO;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IPV6_PKTINFO, 1, [Have IPV6_PKTINFO])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl **********************************
-       dnl *** Checks for IP_DONTFRAG     ***
-       dnl **********************************
-       AC_MSG_CHECKING(for IP_DONTFRAG)
-       AC_TRY_COMPILE([#include <netinet/in.h>], [
-               int level = IP_DONTFRAG;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IP_DONTFRAG, 1, [Have IP_DONTFRAG])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl **********************************
-       dnl *** Checks for IP_DONTFRAGMENT ***
-       dnl **********************************
-       AC_MSG_CHECKING(for IP_DONTFRAGMENT)
-       AC_TRY_COMPILE([#include <Ws2ipdef.h>], [
-               int level = IP_DONTFRAGMENT;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IP_DONTFRAGMENT, 1, [Have IP_DONTFRAGMENT])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl **********************************
-       dnl *** Checks for IP_MTU_DISCOVER ***
-       dnl **********************************
-       AC_MSG_CHECKING(for IP_MTU_DISCOVER)
-       AC_TRY_COMPILE([#include <linux/in.h>], [
-               int level = IP_MTU_DISCOVER;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IP_MTU_DISCOVER, 1, [Have IP_MTU_DISCOVER])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl **********************************
-       dnl *** Checks for  IP_PMTUDISC_DO ***
-       dnl **********************************
-       AC_MSG_CHECKING(for IP_PMTUDISC_DO)
-       AC_TRY_COMPILE([#include <linux/in.h>], [
-               int level = IP_PMTUDISC_DO;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IP_PMTUDISC_DO, 1, [Have IP_PMTUDISC_DO])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *********************************
-       dnl *** Check for struct ip_mreqn ***
-       dnl *********************************
-       AC_MSG_CHECKING(for struct ip_mreqn)
-       AC_TRY_COMPILE([#include <netinet/in.h>], [
-               struct ip_mreqn mreq;
-               mreq.imr_address.s_addr = 0;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_STRUCT_IP_MREQN, 1, [Have struct ip_mreqn])
-       ], [
-               # We'll just have to try and use struct ip_mreq
-               AC_MSG_RESULT(no)
-               AC_MSG_CHECKING(for struct ip_mreq)
-               AC_TRY_COMPILE([#include <netinet/in.h>], [
-                       struct ip_mreq mreq;
-                       mreq.imr_interface.s_addr = 0;
-               ], [
-                       # Yes, we have it...
-                       AC_MSG_RESULT(yes)
-                       AC_DEFINE(HAVE_STRUCT_IP_MREQ, 1, [Have struct ip_mreq])
-               ], [
-                       # No multicast support
-                       AC_MSG_RESULT(no)
-               ])
-       ])
-       
-       dnl **********************************
-       dnl *** Check for gethostbyname2_r ***
-       dnl **********************************
-       AC_MSG_CHECKING(for gethostbyname2_r)
-               AC_TRY_LINK([#include <netdb.h>], [
-               gethostbyname2_r(NULL,0,NULL,NULL,0,NULL,NULL);
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_GETHOSTBYNAME2_R, 1, [Have gethostbyname2_r])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-
-       dnl *****************************
-       dnl *** Checks for libnsl     ***
-       dnl *****************************
-       AC_CHECK_FUNC(gethostbyaddr, , AC_CHECK_LIB(nsl, gethostbyaddr, LIBS="$LIBS -lnsl"))
-
-       AC_CHECK_FUNCS(inet_pton inet_aton)
-
-       dnl ***********************************************
-       dnl *** Checks for size of sockaddr_un.sun_path ***
-       dnl ***********************************************
-       # AC_CHECK_SIZEOF can't cope with struct members :-(
-       AC_MSG_CHECKING(size of sockaddr_un.sun_path)
-       AC_CACHE_VAL(mono_cv_sizeof_sunpath,
-               [AC_TRY_RUN([
-                       #include <sys/types.h>
-                       #include <stdio.h>
-                       #include <sys/un.h>
-
-                       int main(void) {
-                               struct sockaddr_un sock_un;
-                               FILE *f=fopen("conftestval", "w");
-                               if(!f) exit(1);
-                               fprintf(f, "%d\n", sizeof(sock_un.sun_path));
-                               exit(0);
-                       }
-               ], mono_cv_sizeof_sunpath=`cat conftestval`,
-                  mono_cv_sizeof_sunpath=0,
-                  mono_cv_sizeof_sunpath=0)])dnl
-       AC_MSG_RESULT($mono_cv_sizeof_sunpath)
-       AC_DEFINE_UNQUOTED(MONO_SIZEOF_SUNPATH, $mono_cv_sizeof_sunpath, [Sizeof sock_un.sun_path])
-
-       dnl *****************************
-       dnl *** Checks for libxnet    ***
-       dnl *****************************
-       case "${host}" in
-               *solaris* )
-                       AC_MSG_CHECKING(for Solaris XPG4 support)
-                       if test -f /usr/lib/libxnet.so; then
-                               CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500"
-                               CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
-                               CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=1"
-                               LIBS="$LIBS -lxnet"
-                               AC_MSG_RESULT(yes)
-                       else
-                               AC_MSG_RESULT(no)
-                       fi
-
-                       if test "$GCC" = "yes"; then
-                               CFLAGS="$CFLAGS -Wno-char-subscripts"
-                       fi
-               ;;
-       esac
-
-       dnl *****************************
-       dnl *** Checks for libpthread ***
-       dnl *****************************
-# on FreeBSD -STABLE, the pthreads functions all reside in libc_r
-# and libpthread does not exist
-#
-       case "${host}" in
-               *-*-*freebsd*)
-                       AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread")
-               ;;
-               *-*-*openbsd*)
-                       AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread")
-               ;;
-               *)
-                       AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread")
-               ;;
-       esac
-       AC_CHECK_HEADERS(pthread.h)
-       AC_CHECK_HEADERS(pthread_np.h)
-       AC_CHECK_FUNCS(pthread_mutex_timedlock)
-       AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np pthread_setname_np)
-       AC_CHECK_FUNCS(pthread_kill)
-       AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE)
-       AC_TRY_COMPILE([ #include <pthread.h>], [
-               pthread_mutexattr_t attr;
-               pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
-       ], [
-               AC_MSG_RESULT(ok)
-       ], [
-               AC_MSG_RESULT(no)
-               AC_ERROR(Posix system lacks support for recursive mutexes)
-       ])
-       AC_CHECK_FUNCS(pthread_attr_setstacksize)
-       AC_CHECK_FUNCS(pthread_attr_getstack pthread_attr_getstacksize)
-       AC_CHECK_FUNCS(pthread_get_stacksize_np pthread_get_stackaddr_np)
-
-       dnl ***********************************
-       dnl *** Checks for signals
-       dnl ***********************************
-       AC_CHECK_HEADERS(signal.h)
-       AC_CHECK_FUNCS(sigaction)
-
-       dnl ***********************************
-       dnl *** Checks for working __thread ***
-       dnl ***********************************
-       AC_MSG_CHECKING(for working __thread)
-       if test "x$with_tls" != "x__thread"; then
-               AC_MSG_RESULT(disabled)
-       elif test "x$cross_compiling" = "xyes"; then
-               AC_MSG_RESULT(cross compiling, assuming yes)
-       else
-               AC_TRY_RUN([
-                       #if defined(__APPLE__) && defined(__clang__)
-                       #error "__thread does not currently work with clang on Mac OS X"
-                       #endif
-                       
-                       #include <pthread.h>
-                       __thread int i;
-                       static int res1, res2;
-
-                       void thread_main (void *arg)
-                       {
-                               i = arg;
-                               sleep (1);
-                               if (arg == 1)
-                                       res1 = (i == arg);
-                               else
-                                       res2 = (i == arg);
-                       }
-
-                       int main () {
-                               pthread_t t1, t2;
-
-                               i = 5;
-
-                               pthread_create (&t1, NULL, thread_main, 1);
-                               pthread_create (&t2, NULL, thread_main, 2);
-
-                               pthread_join (t1, NULL);
-                               pthread_join (t2, NULL);
-
-                               return !(res1 + res2 == 2);
-                       }
-               ], [
-                               AC_MSG_RESULT(yes)
-               ], [
-                               AC_MSG_RESULT(no)
-                               with_tls=pthread
-               ])
-       fi
-
-       dnl **************************************
-       dnl *** Checks for working sigaltstack ***
-       dnl **************************************
-       AC_MSG_CHECKING(for working sigaltstack)
-       if test "x$with_sigaltstack" != "xyes"; then
-               AC_MSG_RESULT(disabled)
-       elif test "x$cross_compiling" = "xyes"; then
-               AC_MSG_RESULT(cross compiling, assuming yes)
-       else
-               AC_TRY_RUN([
-                       #include <stdio.h>
-                       #include <stdlib.h>
-                       #include <unistd.h>
-                       #include <signal.h>
-                       #include <pthread.h>
-                       #include <sys/wait.h>
-                       #if defined(__FreeBSD__) || defined(__NetBSD__)
-                       #define SA_STACK SA_ONSTACK
-                       #endif
-                       static void
-                       sigsegv_signal_handler (int _dummy, siginfo_t *info, void *context)
-                       {
-                               exit (0);
-                       }
-
-                       volatile char*__ptr = NULL;
-                       static void *
-                       loop (void *ignored)
-                       {
-                               *__ptr = 0;
-                               return NULL;
-                       }
-
-                       static void
-                       child ()
-                       {
-                               struct sigaction sa;
-                       #ifdef __APPLE__
-                               stack_t sas;
-                       #else
-                               struct sigaltstack sas;
-                       #endif
-                               pthread_t id;
-                               pthread_attr_t attr;
-
-                               sa.sa_sigaction = sigsegv_signal_handler;
-                               sigemptyset (&sa.sa_mask);
-                               sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
-                               if (sigaction (SIGSEGV, &sa, NULL) == -1) {
-                                       perror ("sigaction");
-                                       return;
-                               }
-
-                               /* x86 darwin deliver segfaults using SIGBUS */
-                               if (sigaction (SIGBUS, &sa, NULL) == -1) {
-                                       perror ("sigaction");
-                                       return;
-                               }
-                               sas.ss_sp = malloc (SIGSTKSZ);
-                               sas.ss_size = SIGSTKSZ;
-                               sas.ss_flags = 0;
-                               if (sigaltstack (&sas, NULL) == -1) {
-                                       perror ("sigaltstack");
-                                       return;
-                               }
-
-                               pthread_attr_init (&attr);
-                               if (pthread_create(&id, &attr, loop, &attr) != 0) {
-                                       printf ("pthread_create\n");
-                                       return;
-                               }
-
-                               sleep (100);
-                       }
-
-                       int
-                       main ()
-                       {
-                               pid_t son;
-                               int status;
-                               int i;
-
-                               son = fork ();
-                               if (son == -1) {
-                                       return 1;
-                               }
-
-                               if (son == 0) {
-                                       child ();
-                                       return 0;
-                               }
-
-                               for (i = 0; i < 300; ++i) {
-                                       waitpid (son, &status, WNOHANG);
-                                       if (WIFEXITED (status) && WEXITSTATUS (status) == 0)
-                                               return 0;
-                                       usleep (10000);
-                               }
-
-                               kill (son, SIGKILL);
-                               return 1;
-                       }
-
-               ], [
-                               AC_MSG_RESULT(yes)
-                               AC_DEFINE(HAVE_WORKING_SIGALTSTACK, 1, [Have a working sigaltstack])
-               ], [
-                               with_sigaltstack=no
-                               AC_MSG_RESULT(no)
-               ])
-       fi
-
-       dnl ********************************
-       dnl *** Checks for semaphore lib ***
-       dnl ********************************
-       # 'Real Time' functions on Solaris
-       # posix4 on Solaris 2.6
-       # pthread (first!) on Linux
-       AC_SEARCH_LIBS(sem_init, pthread rt posix4) 
-
-       AC_SEARCH_LIBS(shm_open, pthread rt posix4) 
-       AC_CHECK_FUNCS(shm_open)
-
-       dnl ********************************
-       dnl *** Checks for timezone stuff **
-       dnl ********************************
-       AC_CACHE_CHECK(for tm_gmtoff in struct tm, ac_cv_struct_tm_gmtoff,
-               AC_TRY_COMPILE([
-                       #include <time.h>
-                       ], [
-                       struct tm tm;
-                       tm.tm_gmtoff = 1;
-                       ], ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no))
-       if test $ac_cv_struct_tm_gmtoff = yes; then
-               AC_DEFINE(HAVE_TM_GMTOFF, 1, [Have tm_gmtoff])
-       else
-               AC_CACHE_CHECK(for timezone variable, ac_cv_var_timezone,
-                       AC_TRY_COMPILE([
-                               #include <time.h>
-                       ], [
-                               timezone = 1;
-                       ], ac_cv_var_timezone=yes, ac_cv_var_timezone=no))
-               if test $ac_cv_var_timezone = yes; then
-                       AC_DEFINE(HAVE_TIMEZONE, 1, [Have timezone variable])
-               else
-                       AC_ERROR(unable to find a way to determine timezone)
-               fi
-       fi
-
-       dnl *********************************
-       dnl *** Checks for math functions ***
-       dnl *********************************
-       AC_SEARCH_LIBS(sqrtf, m)
-       if test "x$has_broken_apple_cpp" != "xyes"; then
-               AC_CHECK_FUNCS(finite, , AC_MSG_CHECKING(for finite in math.h)
-                       AC_TRY_LINK([#include <math.h>], 
-                       [ finite(0.0); ], 
-                       AC_DEFINE(HAVE_FINITE, 1, [Have finite in -lm]) AC_MSG_RESULT(yes),
-                       AC_MSG_RESULT(no)))
-       fi
-        AC_CHECK_FUNCS(isfinite, , AC_MSG_CHECKING(for isfinite in math.h)
-                AC_TRY_LINK([#include <math.h>], 
-                [ isfinite(0.0); ], 
-                AC_DEFINE(HAVE_ISFINITE, 1, [Have isfinite]) AC_MSG_RESULT(yes),
-                AC_MSG_RESULT(no)))
-
-       dnl ****************************************************************
-       dnl *** Checks for working poll() (macosx defines it but doesn't ***
-       dnl *** have it in the library (duh))                            ***
-       dnl ****************************************************************
-       AC_CHECK_FUNCS(poll)
-
-       dnl *************************
-       dnl *** Check for signbit ***
-       dnl *************************
-       AC_MSG_CHECKING(for signbit)
-       AC_TRY_LINK([#include <math.h>], [
-               int s = signbit(1.0);
-       ], [
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_SIGNBIT, 1, [Have signbit])
-       ], [
-               AC_MSG_RESULT(no)
-       ]) 
-
-       dnl **********************************
-       dnl *** epoll                      ***
-       dnl **********************************
-       if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xno"; then
-               AC_CHECK_HEADERS(sys/epoll.h)
-               haveepoll=no
-               AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
-               if test "x$haveepoll" = "xyes" -a "x$ac_cv_header_sys_epoll_h" = "xyes"; then
-                       AC_DEFINE(HAVE_EPOLL, 1, [epoll supported])
-               fi
-       fi
-
-       havekqueue=no
-
-       AC_CHECK_HEADERS(sys/event.h)
-       AC_CHECK_FUNCS(kqueue, [havekqueue=yes], )
-
-       dnl **************************************
-       dnl * Darwin has a race that prevents us from using reliably:
-       dnl * http://lists.apple.com/archives/darwin-dev/2011/Jun/msg00016.html
-       dnl * Since kqueue is mostly used for scaling large web servers, 
-       dnl * and very few folks run Mono on large web servers on OSX, falling
-       dnl * back 
-       dnl **************************************
-       if test "x$havekqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes"; then
-               if test "x$platform_darwin" = "xno"; then
-                       AC_DEFINE(USE_KQUEUE_FOR_THREADPOOL, 1, [Use kqueue for the threadpool])
-               fi
-       fi
-
-       dnl ******************************
-       dnl *** Checks for SIOCGIFCONF ***
-       dnl ******************************
-       AC_CHECK_HEADERS(sys/ioctl.h)
-       AC_CHECK_HEADERS(net/if.h, [], [],
-          [
-          #ifdef HAVE_SYS_TYPES_H
-          # include <sys/types.h>
-          #endif
-          #ifdef HAVE_SYS_SOCKET_H
-          # include <sys/socket.h>
-          #endif
-          ])
-       AC_MSG_CHECKING(for ifreq)
-       AC_TRY_COMPILE([
-               #include <stdio.h>
-               #include <sys/ioctl.h>
-               #include <net/if.h>
-               ], [
-               struct ifconf ifc;
-               struct ifreq *ifr;
-               void *x;
-               ifc.ifc_len = 0;
-               ifc.ifc_buf = NULL;
-               x = (void *) &ifr->ifr_addr;
-               ],[
-                       AC_MSG_RESULT(yes)
-                       AC_DEFINE(HAVE_SIOCGIFCONF, 1, [Can get interface list])
-               ], [
-                       AC_MSG_RESULT(no)
-               ])
-       dnl **********************************
-       dnl ***     Checks for sin_len     ***
-       dnl **********************************
-       AC_MSG_CHECKING(for sockaddr_in.sin_len)
-       AC_TRY_COMPILE([
-               #include <netinet/in.h>
-               ], [
-               struct sockaddr_in saddr;
-               saddr.sin_len = sizeof (saddr);
-               ],[
-                       AC_MSG_RESULT(yes)
-                       AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [sockaddr_in has sin_len])
-               ], [
-                       AC_MSG_RESULT(no)
-               ])      
-       dnl **********************************
-       dnl ***    Checks for sin6_len     ***
-       dnl **********************************
-       AC_MSG_CHECKING(for sockaddr_in6.sin6_len)
-       AC_TRY_COMPILE([
-               #include <netinet/in.h>
-               ], [
-               struct sockaddr_in6 saddr6;
-               saddr6.sin6_len = sizeof (saddr6);
-               ],[
-                       AC_MSG_RESULT(yes)
-                       AC_DEFINE(HAVE_SOCKADDR_IN6_SIN_LEN, 1, [sockaddr_in6 has sin6_len])
-               ], [
-                       AC_MSG_RESULT(no)
-               ])
-       dnl **********************************
-       dnl *** Check for getifaddrs       ***
-       dnl **********************************
-       AC_MSG_CHECKING(for getifaddrs)
-               AC_TRY_LINK([
-               #include <stdio.h>
-               #include <sys/types.h>
-               #include <sys/socket.h>
-               #include <ifaddrs.h>
-       ], [
-               getifaddrs(NULL);
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_GETIFADDRS, 1, [Have getifaddrs])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-       dnl **********************************
-       dnl *** Check for if_nametoindex   ***
-       dnl **********************************
-       AC_MSG_CHECKING(for if_nametoindex)
-               AC_TRY_LINK([
-               #include <stdio.h>
-               #include <sys/types.h>
-               #include <sys/socket.h>
-               #include <net/if.h>
-       ], [
-               if_nametoindex(NULL);
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_IF_NAMETOINDEX, 1, [Have if_nametoindex])
-       ], [
-               AC_MSG_RESULT(no)
-       ])
-                       
-       dnl **********************************
-       dnl *** Checks for MonoPosixHelper ***
-       dnl **********************************
-       AC_CHECK_HEADERS(checklist.h)
-       AC_CHECK_HEADERS(pathconf.h)
-       AC_CHECK_HEADERS(fstab.h)
-       AC_CHECK_HEADERS(attr/xattr.h)
-       AC_CHECK_HEADERS(sys/extattr.h)
-       AC_CHECK_HEADERS(sys/sendfile.h)
-       AC_CHECK_HEADERS(sys/statvfs.h)
-       AC_CHECK_HEADERS(sys/statfs.h)
-       AC_CHECK_HEADERS(sys/vfstab.h)
-       AC_CHECK_HEADERS(sys/xattr.h)
-       AC_CHECK_HEADERS(sys/mman.h)
-       AC_CHECK_HEADERS(sys/param.h)
-       AC_CHECK_HEADERS(sys/mount.h, [], [],
-               [
-               #ifdef HAVE_SYS_PARAM_H
-               # include <sys/param.h>
-               #endif
-               ])
-       AC_CHECK_HEADERS(sys/mount.h)
-       AC_CHECK_FUNCS(confstr)
-       AC_CHECK_FUNCS(seekdir telldir)
-       AC_CHECK_FUNCS(getdomainname)
-       AC_CHECK_FUNCS(setdomainname)
-       AC_CHECK_FUNCS(endgrent getgrent fgetgrent setgrent)
-       AC_CHECK_FUNCS(setgroups)
-       AC_CHECK_FUNCS(endpwent getpwent fgetpwent setpwent)
-       AC_CHECK_FUNCS(getfsstat)
-       AC_CHECK_FUNCS(lutimes futimes)
-       AC_CHECK_FUNCS(mremap)
-       AC_CHECK_FUNCS(remap_file_pages)
-       AC_CHECK_FUNCS(posix_fadvise)
-       AC_CHECK_FUNCS(posix_fallocate)
-       AC_CHECK_FUNCS(posix_madvise)
-       AC_CHECK_FUNCS(vsnprintf)
-       AC_CHECK_FUNCS(sendfile)
-       AC_CHECK_FUNCS(gethostid sethostid)
-       AC_CHECK_FUNCS(sethostname)
-       AC_CHECK_FUNCS(statfs)
-       AC_CHECK_FUNCS(fstatfs)
-       AC_CHECK_FUNCS(statvfs)
-       AC_CHECK_FUNCS(fstatvfs)
-       AC_CHECK_FUNCS(stime)
-       AC_CHECK_FUNCS(strerror_r)
-       AC_CHECK_FUNCS(ttyname_r)
-       AC_CHECK_FUNCS(psignal)
-       AC_CHECK_FUNCS(getlogin_r)
-       AC_CHECK_FUNCS(lockf)
-       AC_CHECK_FUNCS(swab)
-       AC_CHECK_FUNCS(setusershell endusershell)
-       AC_CHECK_FUNCS(futimens utimensat)
-       AC_CHECK_FUNCS(fstatat mknodat readlinkat)
-       AC_CHECK_FUNCS(readv writev preadv pwritev)
-       AC_CHECK_FUNCS(setpgid)
-       AC_CHECK_SIZEOF(size_t)
-       AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , 
-               [#include <sys/types.h>
-                #include <sys/stat.h>
-                #include <unistd.h>])
-       AC_CHECK_TYPES([blkcnt_t], [AC_DEFINE(HAVE_BLKCNT_T)], ,
-               [#include <sys/types.h>
-                #include <sys/stat.h>
-                #include <unistd.h>])
-       AC_CHECK_TYPES([suseconds_t], [AC_DEFINE(HAVE_SUSECONDS_T)], ,
-               [#include <sys/time.h>])
-       AC_CHECK_TYPES([struct flock], [AC_DEFINE(HAVE_STRUCT_FLOCK)], ,
-               [#include <unistd.h>
-                #include <fcntl.h>])
-       AC_CHECK_TYPES([struct iovec], [AC_DEFINE(HAVE_STRUCT_IOVEC)], ,
-               [#include <sys/uio.h>])
-       AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], ,
-               [#include <sys/poll.h>])
-       AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], ,
-               [#include <sys/types.h>
-                #include <sys/stat.h>
-                #include <unistd.h>])
-       AC_CHECK_TYPES([struct timespec], [AC_DEFINE(HAVE_STRUCT_TIMESPEC)], ,
-               [#include <time.h>])
-       AC_CHECK_TYPES([struct timeval], [AC_DEFINE(HAVE_STRUCT_TIMEVAL)], ,
-               [#include <sys/time.h>
-                #include <sys/types.h>
-                #include <utime.h>])
-       AC_CHECK_TYPES([struct timezone], [AC_DEFINE(HAVE_STRUCT_TIMEZONE)], ,
-               [#include <sys/time.h>])
-       AC_CHECK_TYPES([struct utimbuf], [AC_DEFINE(HAVE_STRUCT_UTIMBUF)], ,
-               [#include <sys/types.h>
-                #include <utime.h>])
-       AC_CHECK_MEMBERS(
-               [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, 
-               [#include <sys/types.h>
-                #include <dirent.h>])
-       AC_CHECK_MEMBERS(
-               [struct passwd.pw_gecos],,, 
-               [#include <sys/types.h>
-                #include <pwd.h>])
-       AC_CHECK_MEMBERS(
-               [struct statfs.f_flags],,, 
-               [#include <sys/types.h>
-                #include <sys/vfs.h>])
-       AC_CHECK_MEMBERS(
-               [struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim],,, 
-               [#include <sys/types.h>
-                #include <sys/stat.h>
-                #include <unistd.h>])
-
-       dnl Favour xattr through glibc, but use libattr if we have to
-       AC_CHECK_FUNC(lsetxattr, ,
-               AC_CHECK_LIB(attr, lsetxattr, XATTR_LIB="-lattr",)
-       )
-       AC_SUBST(XATTR_LIB)
-
-       dnl kinfo_proc.kp_proc works on darwin but fails on other simil-bsds
-       AC_CHECK_MEMBERS(
-               [struct kinfo_proc.kp_proc],,, 
-               [#include <sys/types.h>
-                #include <sys/param.h>
-                #include <sys/sysctl.h>
-                #include <sys/proc.h>
-                ])
-
-       dnl *********************************
-       dnl *** Checks for Windows compilation ***
-       dnl *********************************
-       AC_CHECK_HEADERS(sys/time.h)
-       AC_CHECK_HEADERS(sys/param.h)
-       AC_CHECK_HEADERS(dirent.h)
-
-       dnl ******************************************
-       dnl *** Checks for OSX and iOS compilation ***
-       dnl ******************************************
-       AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h)
-
-       dnl *********************************
-       dnl *** Check for Console 2.0 I/O ***
-       dnl *********************************
-       AC_CHECK_HEADERS([curses.h])
-       AC_CHECK_HEADERS([term.h], [], [],
-       [#if HAVE_CURSES_H
-        #include <curses.h>
-        #endif
-       ])
-       AC_CHECK_HEADERS([termios.h])
-
-       dnl * This is provided in io-layer, but on windows it's only available
-       dnl * on xp+
-       AC_DEFINE(HAVE_GETPROCESSID, 1, [Define if GetProcessId is available])
-else
-       dnl *********************************
-       dnl *** Checks for Windows compilation ***
-       dnl *********************************
-       AC_CHECK_HEADERS(winternl.h)
-
-       jdk_headers_found=no
-       AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?))
-       AC_CHECK_LIB(psapi, main, LIBS="$LIBS -lpsapi", AC_ERROR(bad mingw install?))
-       AC_CHECK_LIB(ole32, main, LIBS="$LIBS -lole32", AC_ERROR(bad mingw install?))
-       AC_CHECK_LIB(winmm, main, LIBS="$LIBS -lwinmm", AC_ERROR(bad mingw install?))
-       AC_CHECK_LIB(oleaut32, main, LIBS="$LIBS -loleaut32", AC_ERROR(bad mingw install?))
-       AC_CHECK_LIB(advapi32, main, LIBS="$LIBS -ladvapi32", AC_ERROR(bad mingw install?))
-       AC_CHECK_LIB(version, main, LIBS="$LIBS -lversion", AC_ERROR(bad mingw install?))
-
-       dnl *********************************
-       dnl *** Check for struct ip_mreqn ***
-       dnl *********************************
-       AC_MSG_CHECKING(for struct ip_mreqn)
-       AC_TRY_COMPILE([#include <ws2tcpip.h>], [
-               struct ip_mreqn mreq;
-               mreq.imr_address.s_addr = 0;
-       ], [
-               # Yes, we have it...
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_STRUCT_IP_MREQN)
-       ], [
-               # We'll just have to try and use struct ip_mreq
-               AC_MSG_RESULT(no)
-               AC_MSG_CHECKING(for struct ip_mreq)
-               AC_TRY_COMPILE([#include <ws2tcpip.h>], [
-                       struct ip_mreq mreq;
-                       mreq.imr_interface.s_addr = 0;
-               ], [
-                       # Yes, we have it...
-                       AC_MSG_RESULT(yes)
-                       AC_DEFINE(HAVE_STRUCT_IP_MREQ)
-               ], [
-                       # No multicast support
-                       AC_MSG_RESULT(no)
-               ])
-       ])
-       AC_CHECK_FUNCS(GetProcessId)
-       AC_CHECK_DECLS(InterlockedExchange64, [], [], [[#include <windows.h>]])
-       AC_CHECK_DECLS(InterlockedCompareExchange64, [], [], [[#include <windows.h>]])
-       AC_CHECK_DECLS(InterlockedDecrement64, [], [], [[#include <windows.h>]])
-       AC_CHECK_DECLS(InterlockedIncrement64, [], [], [[#include <windows.h>]])
-       AC_CHECK_DECLS(InterlockedAdd, [], [], [[#include <windows.h>]])
-       AC_CHECK_DECLS(InterlockedAdd64, [], [], [[#include <windows.h>]])
-       AC_CHECK_DECLS(__readfsdword, [], [], [[#include <windows.h>]])
-fi
-
-dnl socklen_t check
-AC_MSG_CHECKING(for socklen_t)
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/socket.h>
-],[
-  socklen_t foo;
-],[
-ac_cv_c_socklen_t=yes
-       AC_DEFINE(HAVE_SOCKLEN_T, 1, [Have socklen_t])
-       AC_MSG_RESULT(yes)
-],[
-       AC_MSG_RESULT(no)
-])
-
-AC_MSG_CHECKING(for array element initializer support)
-AC_TRY_COMPILE([#include <sys/socket.h>], [
-       const int array[] = {[1] = 2,};
-], [
-       # Yes, we have it...
-       AC_MSG_RESULT(yes)
-       AC_DEFINE(HAVE_ARRAY_ELEM_INIT,1,[Supports C99 array initialization])
-], [
-       # We'll have to use signals
-       AC_MSG_RESULT(no)
-])
-
-AC_CHECK_FUNCS(trunc, , AC_MSG_CHECKING(for trunc in math.h)
-       # Simply calling trunc (0.0) is no good since gcc will optimize the call away
-       AC_TRY_LINK([#include <math.h>], 
-       [ static void *p = &trunc; ],
-       [
-               AC_DEFINE(HAVE_TRUNC) 
-               AC_MSG_RESULT(yes)
-               ac_cv_trunc=yes
-       ],
-       AC_MSG_RESULT(no)))
-
-if test "x$ac_cv_truncl" != "xyes"; then
-   AC_CHECK_LIB(sunmath, aintl, [ AC_DEFINE(HAVE_AINTL, 1, [Has the 'aintl' function]) LIBS="$LIBS -lsunmath"])
-fi
-
-AC_CHECK_FUNCS(round)
-AC_CHECK_FUNCS(rint)
-AC_CHECK_FUNCS(execvp)
-
-dnl ****************************
-dnl *** Look for /dev/random ***
-dnl ****************************
-
-AC_MSG_CHECKING([if usage of random device is requested])
-AC_ARG_ENABLE(dev-random,
-[  --disable-dev-random    disable the use of the random device (enabled by default)],
-try_dev_random=$enableval, try_dev_random=yes)
-
-AC_MSG_RESULT($try_dev_random)
-
-case "{$build}" in
-    *-openbsd*)
-    NAME_DEV_RANDOM="/dev/srandom"
-    ;;
-
-dnl Win32 does not have /dev/random, they have their own method...
-
-    *-mingw*|*-*-cygwin*)
-    ac_cv_have_dev_random=no
-    ;;
-
-dnl Everywhere else, it's /dev/random
-
-    *)
-    NAME_DEV_RANDOM="/dev/random"
-    ;;
-esac
-
-AC_DEFINE_UNQUOTED(NAME_DEV_RANDOM, "$NAME_DEV_RANDOM", [Name of /dev/random])
-
-dnl Now check if the device actually exists
-
-if test "x$try_dev_random" = "xyes"; then
-    AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
-    [if test -r "$NAME_DEV_RANDOM" ; then
-        ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
-    if test "x$ac_cv_have_dev_random" = "xyes"; then
-        AC_DEFINE(HAVE_CRYPT_RNG, 1, [Have /dev/random])
-    fi
-else
-    AC_MSG_CHECKING(for random device)
-    ac_cv_have_dev_random=no
-    AC_MSG_RESULT(has been disabled)
-fi
-
-if test "x$host_win32" = "xyes"; then
-    AC_DEFINE(HAVE_CRYPT_RNG)
-fi
-
-if test "x$ac_cv_have_dev_random" = "xno" \
-    && test "x$host_win32" = "xno"; then
-    AC_MSG_WARN([[
-***
-*** A system-provided entropy source was not found on this system.
-*** Because of this, the System.Security.Cryptography random number generator
-*** will throw a NotImplemented exception.
-***
-*** If you are seeing this message, and you know your system DOES have an
-*** entropy collection in place, please contact <crichton@gimp.org> and
-*** provide information about the system and how to access the random device.
-***
-*** Otherwise you can install either egd or prngd and set the environment
-*** variable MONO_EGD_SOCKET to point to the daemon's socket to use that.
-***]])
-fi
-AC_MSG_CHECKING([if inter-process shared handles are requested])
-AC_ARG_ENABLE(shared-handles, [  --disable-shared-handles disable inter-process shared handles], try_shared_handles=$enableval, try_shared_handles=yes)
-AC_MSG_RESULT($try_shared_handles)
-if test "x$try_shared_handles" != "xyes"; then
-       AC_DEFINE(DISABLE_SHARED_HANDLES, 1, [Disable inter-process shared handles])
-       AC_SUBST(DISABLE_SHARED_HANDLES)
-fi
-
-AC_ARG_ENABLE(bcl-opt, [  --disable-bcl-opt    BCL is compiled with no optimizations (allows accurate BCL debugging)], test_bcl_opt=$enableval, test_bcl_opt=yes)
-
-AC_ARG_ENABLE(nunit-tests, [  --enable-nunit-tests     Run the nunit tests of the class library on 'make check'])
-AM_CONDITIONAL(ENABLE_NUNIT_TESTS, [test x$enable_nunit_tests = xyes])
-
-AC_MSG_CHECKING([if big-arrays are to be enabled])
-AC_ARG_ENABLE(big-arrays,  [  --enable-big-arrays      Enable the allocation and indexing of arrays greater than Int32.MaxValue], enable_big_arrays=$enableval, enable_big_arrays=no)
-if test "x$enable_big_arrays" = "xyes" ; then
-    if  test "x$ac_cv_sizeof_void_p" = "x8"; then
-       AC_DEFINE(MONO_BIG_ARRAYS,1,[Enable the allocation and indexing of arrays greater than Int32.MaxValue])
-    else
-        AC_MSG_ERROR([The allocation and indexing of arrays greater than Int32.MaxValue is not supported on this platform.])
-    fi
-fi
-AC_MSG_RESULT($enable_big_arrays)
-
-dnl **************
-dnl *** DTRACE ***
-dnl **************
-
-AC_ARG_ENABLE(dtrace,[  --enable-dtrace        Enable DTrace probes], enable_dtrace=$enableval, enable_dtrace=$has_dtrace)
-
-if test "x$enable_dtrace" = "xyes"; then
-   if test "x$has_dtrace" = "xno"; then
-         AC_MSG_ERROR([DTrace probes are not supported on this platform.])
-   fi
-   AC_PATH_PROG(DTRACE, [dtrace], [no], [$PATH:/usr/sbin])
-   if test "x$DTRACE" = "xno"; then
-         AC_MSG_RESULT([dtrace utility not found, dtrace support disabled.])
-         enable_dtrace=no
-   elif ! $DTRACE -h -s $srcdir/data/mono.d > /dev/null 2>&1; then
-         AC_MSG_RESULT([dtrace doesn't support -h option, dtrace support disabled.])
-         enable_dtrace=no
-   fi
-fi
-
-dtrace_g=no
-if test "x$enable_dtrace" = "xyes"; then
-       AC_DEFINE(ENABLE_DTRACE, 1, [Enable DTrace probes])
-       DTRACEFLAGS=
-       if test "x$ac_cv_sizeof_void_p" = "x8"; then
-               case "$host" in
-                       powerpc-*-darwin*)
-                       DTRACEFLAGS="-arch ppc64"
-                       ;;
-                       i*86-*-darwin*)
-                       DTRACEFLAGS="-arch x86_64"
-                       ;;
-                       *)
-                       DTRACEFLAGS=-64
-                       ;;
-               esac
-       else
-               case "$host" in
-                       powerpc-*-darwin*)
-                       DTRACEFLAGS="-arch ppc"
-                       ;;
-                       i*86-*-darwin*)
-                       DTRACEFLAGS="-arch i386"
-                       ;;
-                       *)
-                       DTRACEFLAGS=-32
-                       ;;
-               esac
-       fi
-       AC_SUBST(DTRACEFLAGS)
-       case "$host" in
-               *-*-solaris*)
-               dtrace_g=yes
-               ;;
-       esac
-       AC_CHECK_HEADERS([sys/sdt.h])
-fi
-AM_CONDITIONAL(ENABLE_DTRACE, [test x$enable_dtrace = xyes])
-AM_CONDITIONAL(DTRACE_G_REQUIRED, [test x$dtrace_g = xyes])
-
-dnl **************
-dnl ***  NaCl  ***
-dnl **************
-
-AC_ARG_ENABLE(nacl_codegen, [  --enable-nacl-codegen      Enable Native Client code generation], enable_nacl_codegen=$enableval, enable_nacl_codegen=no)
-AC_ARG_ENABLE(nacl_gc, [  --enable-nacl-gc           Enable Native Client garbage collection], enable_nacl_gc=$enableval, enable_nacl_gc=no)
-
-AM_CONDITIONAL(NACL_CODEGEN, test x$enable_nacl_codegen != xno)
-
-dnl
-dnl Hack to use system mono for operations in build/install not allowed in NaCl.
-dnl
-nacl_self_host=""
-if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xyes"; then
-   nacl_self_host="nacl_self_host"
-fi
-AC_SUBST(nacl_self_host)
-
-if test "x$enable_nacl_codegen" = "xyes"; then
-   MONO_NACL_ALIGN_MASK_OFF=1
-   AC_DEFINE(TARGET_NACL, 1, [...])
-   AC_DEFINE(__native_client_codegen__, 1, [...])
-else
-   MONO_NACL_ALIGN_MASK_OFF=0
-   AC_DEFINE(__default_codegen__, 1, [...])
-fi
-if test "x$enable_nacl_gc" = "xyes"; then
-   if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
-      INSTRUMENT_CFLAG="-finstrument-for-thread-suspension"
-   else
-      # Not yet implemented
-      INSTRUMENT_CFLAG=""
-   fi
-   CPPFLAGS="$CPPFLAGS $INSTRUMENT_CFLAG -D__native_client_gc__"
-fi
-AC_SUBST(MONO_NACL_ALIGN_MASK_OFF)
-
-dnl **************
-dnl ***  LLVM  ***
-dnl **************
-
-AC_ARG_ENABLE(llvm,[  --enable-llvm    Enable the LLVM back-end], enable_llvm=$enableval, enable_llvm=no)
-AC_ARG_ENABLE(loadedllvm,[  --enable-loadedllvm        Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no)
-AC_ARG_ENABLE(llvm-version-check,[  --enable-llvm-version-check Check that the LLVM matches the version expected by mono], enable_llvm_version_check=$enableval, enable_llvm_version_check=no)
-
-AC_ARG_WITH(llvm, [  --with-llvm=<llvm prefix>    Enable the LLVM back-end], enable_llvm=yes,)
-
-if test "x$enable_llvm" = "xyes"; then
-   if test "x$with_llvm" != "x"; then
-         LLVM_CONFIG=$with_llvm/bin/llvm-config
-         if test ! -x $LLVM_CONFIG; then
-                AC_MSG_ERROR([LLVM executable $LLVM_CONFIG not found.])
-      fi
-   else
-      AC_PATH_PROG(LLVM_CONFIG, llvm-config, no)
-      if test "x$LLVM_CONFIG" = "xno"; then
-            AC_MSG_ERROR([llvm-config not found.])
-      fi
-   fi
-
-   llvm_codegen="x86codegen"
-   case "$target" in
-   arm*)
-               llvm_codegen="armcodegen"
-               ;;
-   esac
-
-   # The output of --cflags seems to include optimizations flags too
-   LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'`
-   # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit
-   # from LLVM classes.
-   LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
-   LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
-   # This might include empty lines
-   LLVM_SYSTEM_LIBS=`$LLVM_CONFIG --system-libs 2>/dev/null | grep -- -`
-   if test "x$host" != "x$target"; then
-      # No need for jit libs
-      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter`
-   else
-      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen`
-   fi
-   LLVM_LIBS="$LLVM_LIBS $LLVM_LDFLAGS $LLVM_SYSTEM_LIBS -lstdc++"
-
-   expected_llvm_version="3.4svn-mono-mono/e656cac"
-
-   # Should be something like '2.6' or '2.7svn'
-   llvm_version=`$LLVM_CONFIG --version`
-   major_version=`echo $llvm_version | cut -c 1`
-   minor_version=`echo $llvm_version | cut -c 3`
-   llvm_api_version=`$LLVM_CONFIG --mono-api-version 2>/dev/null`
-   AC_MSG_CHECKING(LLVM version)
-   AC_MSG_RESULT($llvm_version)
-   if echo $llvm_version | grep -q 'mono'; then
-         if test "x$enable_llvm_version_check" == "xyes"; then
-                if test "$llvm_version" != "$expected_llvm_version"; then
-                       AC_MSG_ERROR([Expected llvm version $expected_llvm_version, but llvm-config --version returned $llvm_version"])
-                fi
-         fi
-         if test "x$llvm_api_version" = "x"; then
-               LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=0"
-               LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=0"
-         else
-               LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=$llvm_api_version"
-               LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=$llvm_api_version"
-         fi
-   else
-         AC_MSG_ERROR([Compiling with stock LLVM is not supported, please use the Mono LLVM repo at https://github.com/mono/llvm, with the GIT branch which matches this version of mono, i.e. 'mono-2-10' for Mono 2.10.])
-   fi
-
-   AC_DEFINE_UNQUOTED(LLVM_MAJOR_VERSION, $major_version, [Major version of LLVM libraries])
-   AC_DEFINE_UNQUOTED(LLVM_MINOR_VERSION, $minor_version, [Minor version of LLVM libraries])
-   AC_DEFINE_UNQUOTED(LLVM_VERSION, "$llvm_version", [Full version of LLVM libraties])
-
-   # Have to pass these on the command line since mini-llvm-cpp.h already includes
-   # llvm's config.h
-   LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MAJOR_VERSION=$major_version -DLLVM_MINOR_VERSION=$minor_version"
-
-   AC_SUBST(LLVM_CFLAGS)
-   AC_SUBST(LLVM_CXXFLAGS)
-   AC_SUBST(LLVM_LIBS)
-   AC_SUBST(LLVM_LDFLAGS)
-   AC_DEFINE(ENABLE_LLVM, 1, [Enable the LLVM back end])
-fi
-
-AM_CONDITIONAL(ENABLE_LLVM, [test x$enable_llvm = xyes])
-if test "x$enable_loadedllvm" = "xyes"; then
-   AC_DEFINE(MONO_LLVM_LOADED, 1, [The LLVM back end is dynamically loaded])
-fi
-AM_CONDITIONAL(LOADED_LLVM, [test x$enable_loadedllvm = xyes])
-
-TARGET="unknown"
-ACCESS_UNALIGNED="yes"
-
-JIT_SUPPORTED=no
-INTERP_SUPPORTED=no
-LIBC="libc.so.6"
-INTL="libc.so.6"
-SQLITE="libsqlite.so.0"
-SQLITE3="libsqlite3.so.0"
-X11="libX11.so"
-XINERAMA="libXinerama.so"
-
-sizeof_register="SIZEOF_VOID_P"
-
-jit_wanted=true
-interp_wanted=false
-sgen_supported=false
-boehm_supported=true
-case "$host" in
-       mips*)
-               TARGET=MIPS;
-               arch_target=mips;
-               sgen_supported=true
-               ACCESS_UNALIGNED="no"
-               JIT_SUPPORTED=yes
-
-               AC_MSG_CHECKING(for mips n32)
-               AC_TRY_COMPILE([],[
-               #if _MIPS_SIM != _ABIN32
-               #error Not mips n32
-               #endif
-               return 0;
-               ],[
-               AC_MSG_RESULT(yes)
-               sizeof_register=8
-               ],[
-               AC_MSG_RESULT(no)
-               ])
-               ;;
-       i*86-*-*)
-               TARGET=X86;
-               arch_target=x86;
-               JIT_SUPPORTED=yes
-               case $host_os in
-                 solaris*)
-                       LIBC="libc.so"
-                       INTL="libintl.so"
-                       if test "x$ac_cv_sizeof_void_p" = "x8"; then
-                               TARGET=AMD64
-                               arch_target=amd64
-                       fi
-
-                       # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. A test case:
-                       # int astruct __attribute__ ((visibility ("hidden")));
-                       # void foo ()
-                       # {
-                       #       void *p = &astruct;
-                       # }
-                       # gcc -fPIC --shared -o libfoo.so foo.c
-                       # yields:
-                       # foo.c:6: warning: visibility attribute not supported in this configuration; ignored
-                       # ld: fatal: relocation error: R_386_GOTOFF: file /var/tmp//ccxYR96k.o: symbol astruct: relocation must bind locally
-                       have_visibility_hidden=no
-                       sgen_supported=true
-                       ;;
-                 mingw*|cygwin*)
-                       sgen_supported=true
-                       have_visibility_hidden=no                 
-                       ;;
-                 haiku*)
-                       LIBC=libroot.so
-                       ;;
-                 linux*)
-                       sgen_supported=true
-                       AOT_SUPPORTED="yes"
-                       ;;
-                 darwin*)
-                       sgen_supported=true
-                       AOT_SUPPORTED="yes"
-                       ;;
-                 darwin*|openbsd*|freebsd*)
-                       sgen_supported=true
-                       ;;
-               esac
-               ;;
-       x86_64-*-* | amd64-*-*)
-               TARGET=AMD64;
-               arch_target=amd64;
-               JIT_SUPPORTED=yes
-               if test "x$ac_cv_sizeof_void_p" = "x4"; then
-                       AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
-                       sizeof_register=8
-               fi
-               case $host_os in
-                 linux*)
-                       sgen_supported=true
-                       AOT_SUPPORTED="yes"
-                       ;;
-                 darwin*|openbsd*|freebsd*)
-                       sgen_supported=true
-                       ;;
-               esac
-               case "$host" in
-                       x86_64-*-nacl*)
-                               AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
-                               sizeof_register=8
-                               ;;
-               esac
-               ;;
-       ia64-*-*)
-               TARGET=IA64
-               arch_target=ia64
-               ACCESS_UNALIGNED="no"
-               JIT_SUPPORTED=yes
-               LIBC="libc.so.6.1"
-               INTL="libc.so.6.1"
-               AC_CHECK_LIB(unwind, _U_dyn_register, [], [AC_MSG_ERROR(library libunwind not found)])
-               libmono_ldflags="-lunwind"
-               ;;
-       sparc*-*-*)
-               if test "x$ac_cv_sizeof_void_p" = "x8"; then
-                  TARGET=SPARC64
-               else
-                       TARGET=SPARC
-               fi
-               arch_target=sparc;
-               JIT_SUPPORTED=yes
-               ACCESS_UNALIGNED="no"
-               case $host_os in
-                 linux*) ;;
-                 *)
-                       LIBC="libc.so"
-                       INTL="libintl.so"
-               esac
-               if test x"$GCC" = xyes; then
-                       # We don't support v8 cpus
-                       CFLAGS="$CFLAGS -Wno-cast-align -mcpu=v9"
-               fi
-               if test x"$AR" = xfalse; then
-                       AC_MSG_ERROR([The required utility 'ar' is not found in your PATH. Usually it can be found in /usr/ccs/bin.])
-               fi
-               sgen_supported=true
-               ;;
-       *-mingw*|*-*-cygwin*)
-               # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
-               have_visibility_hidden=no
-               INTL="intl"
-               ;;
-       macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \
-        powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | powerpc-*-freebsd* )
-               if test "x$ac_cv_sizeof_void_p" = "x8"; then
-                       TARGET=POWERPC64;
-                       CPPFLAGS="$CPPFLAGS -D__mono_ppc__ -D__mono_ppc64__"
-                       CFLAGS="$CFLAGS -mminimal-toc"
-               else
-                       TARGET=POWERPC;
-                       CPPFLAGS="$CPPFLAGS -D__mono_ppc__"
-               fi
-               arch_target=ppc;
-               JIT_SUPPORTED=yes
-               case $host_os in
-                 linux*|darwin*)
-                       sgen_supported=true
-                       ;;
-               esac
-               ;;
-       arm*-darwin*)
-               TARGET=ARM;
-               arch_target=arm;
-               ACCESS_UNALIGNED="no"
-               JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
-               # libgc's gc_locks.h depends on this
-           CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC"
-               sgen_supported=true
-               ;;
-       arm*-linux*)
-               TARGET=ARM;
-               arch_target=arm;
-               ACCESS_UNALIGNED="no"
-               JIT_SUPPORTED=yes
-               sgen_supported=true
-               AOT_SUPPORTED="yes"
-               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
-               ;;
-# TODO: make proper support for NaCl host.
-#        arm*-*nacl)
-#              TARGET=ARM;
-#              arch_target=arm;
-#              ACCESS_UNALIGNED="no"
-#              JIT_SUPPORTED=yes
-#              sgen_supported=true
-#              AOT_SUPPORTED="no"
-#              ;;
-       aarch64-*)
-               # https://lkml.org/lkml/2012/7/15/133
-               TARGET=ARM64
-               arch_target=arm64
-               JIT_SUPPORTED=yes
-               sgen_supported=true
-               boehm_supported=false
-               ;;
-       s390x-*-linux*)
-               TARGET=S390X;
-               arch_target=s390x;
-               ACCESS_UNALIGNED="yes"
-               JIT_SUPPORTED=yes
-               sgen_supported=true
-               CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES"
-               ;;
-esac
-
-HOST=$TARGET
-
-if test "x$host" != "x$target"; then
-   AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode])
-   enable_mcs_build=no
-   case "$target" in
-   arm*-darwin*)
-               TARGET=ARM;
-               arch_target=arm;
-               ACCESS_UNALIGNED="no"
-               JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
-               jit_wanted=true
-               # Can't use tls, since it depends on the runtime detection of tls offsets
-               # in mono-compiler.h
-               with_tls=pthread
-               ;;
-   powerpc64-ps3-linux-gnu)
-               TARGET=POWERPC64
-               arch_target=powerpc64
-               AC_DEFINE(TARGET_PS3, 1, [...])
-               # It would be better to just use TARGET_POWERPC64, but lots of code already
-               # uses this define
-               AC_DEFINE(__mono_ppc64__, 1, [...])
-               AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
-               sizeof_register=8
-               target_byte_order=G_BIG_ENDIAN
-               ;;
-
-   powerpc64-xbox360-linux-gnu)
-               TARGET=POWERPC64
-               arch_target=powerpc64
-               AC_DEFINE(TARGET_XBOX360, 1, [...])
-               # It would be better to just use TARGET_POWERPC64, but lots of code already
-               # uses this define
-               sizeof_register=8
-               target_byte_order=G_BIG_ENDIAN
-               ;;
-   x86_64-*-nacl)
-               TARGET=AMD64
-               arch_target=amd64
-               AC_DEFINE(TARGET_AMD64, 1, [...])
-               AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
-               sizeof_register=8
-               ;;
-# TODO: make proper support for NaCl target.
-#   arm*-*nacl)
-#              TARGET=ARM
-#              arch_target=arm
-#              AC_DEFINE(TARGET_ARM, 1, [...])
-#              ACCESS_UNALIGNED="no"
-#              JIT_SUPPORTED=yes
-#              sizeof_register=4
-#               CPPFLAGS="$CPPFLAGS \
-#                    -D__ARM_EABI__ \
-#                    -D__arm__ \
-#                    -D__portable_native_client__ \
-#                    -Dtimezone=_timezone \
-#                    -DDISABLE_SOCKETS \
-#                    -DDISABLE_ATTACH \
-#                    -DUSE_NEWLIB"
-#              jit_wanted=true
-               # Can't use tls, since it depends on the runtime detection of tls offsets
-               # in mono-compiler.h
-#              with_tls=pthread
-#              ;;
-   i686-*-nacl)
-               TARGET=X86
-               arch_target=x86
-               AC_DEFINE(TARGET_X86, 1, [...])
-               sizeof_register=4
-               ;;
-   arm*-linux-*)
-               TARGET=ARM;
-               arch_target=arm;
-               AC_DEFINE(TARGET_ARM, 1, [...])
-               AC_DEFINE(TARGET_ANDROID, 1, [...])
-               ACCESS_UNALIGNED="no"
-               JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
-               jit_wanted=true
-               # Can't use tls, since it depends on the runtime detection of tls offsets
-               # in mono-compiler.h
-               with_tls=pthread
-               target_mach=no
-               case "$target" in
-               armv7l-unknown-linux-gnueabi*)
-                       # TEGRA
-                       CPPFLAGS="$CPPFLAGS"
-                       ;;
-               armv5-*-linux-androideabi*)
-                       CPPFLAGS="$CPPFLAGS"
-                       ;;
-               esac
-               ;;
-       aarch64-*)
-               TARGET=ARM64
-               JIT_SUPPORTED=yes
-               jit_wanted=true
-               ;;
-       *)
-               AC_MSG_ERROR([Cross compiling is not supported for target $target])
-       esac
-fi
-
-case "$TARGET" in
-X86)
-       AC_DEFINE(TARGET_X86, 1, [...])
-       ;;
-AMD64)
-       AC_DEFINE(TARGET_AMD64, 1, [...])
-       ;;
-ARM)
-       AC_DEFINE(TARGET_ARM, 1, [...])
-       ;;
-ARM64)
-       AC_DEFINE(TARGET_ARM64, 1, [...])
-       ;;
-POWERPC)
-       AC_DEFINE(TARGET_POWERPC, 1, [...])
-       ;;
-POWERPC64)
-       AC_DEFINE(TARGET_POWERPC, 1, [...])
-       AC_DEFINE(TARGET_POWERPC64, 1, [...])
-       ;;
-S390X)
-       AC_DEFINE(TARGET_S390X, 1, [...])
-       ;;
-MIPS)
-       AC_DEFINE(TARGET_MIPS, 1, [...])
-       ;;
-IA64)
-       AC_DEFINE(TARGET_IA64, 1, [...])
-       ;;
-SPARC)
-       AC_DEFINE(TARGET_SPARC, 1, [...])
-       ;;
-SPARC64)
-       AC_DEFINE(TARGET_SPARC64, 1, [...])
-       ;;
-esac
-
-dnl Use GCC atomic ops if they work on the target.
-if test x$GCC = "xyes"; then
-       case $TARGET in
-       X86 | AMD64 | ARM | ARM64 | POWERPC | POWERPC64 | MIPS | S390X | SPARC | SPARC64)
-               AC_DEFINE(USE_GCC_ATOMIC_OPS, 1, [...])
-               ;;
-       esac
-fi
-
-if test "x$target_mach" = "xyes"; then
-   if test "x$TARGET" = "xARM" -o "x$TARGET" = "xARM64"; then
-         AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
-         CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS"
-         CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS"
-   else
-       AC_TRY_COMPILE([#include "TargetConditionals.h"],[
-       #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1
-       #error fail this for ios
-       #endif
-       return 0;
-       ], [
-                 AC_DEFINE(TARGET_OSX,1,[The JIT/AOT targets OSX])
-          CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_OSX"
-          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_OSX"
-       ], [
-          AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
-          CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS"
-          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS"
-       ])
-       fi
-   AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms])
-fi
-
-if test "x$sizeof_register" = "x4"; then
-   AC_DEFINE(SIZEOF_REGISTER,4,[size of machine integer registers])
-elif test "x$sizeof_register" = "x8"; then
-   AC_DEFINE(SIZEOF_REGISTER,8,[size of machine integer registers])
-else
-   AC_DEFINE(SIZEOF_REGISTER,SIZEOF_VOID_P,[size of machine integer registers])
-fi
-
-if test "x$target_byte_order" = "xG_BIG_ENDIAN"; then
-   AC_DEFINE(TARGET_BYTE_ORDER,G_BIG_ENDIAN,[byte order of target])
-elif test "x$target_byte_order" = "xG_LITTLE_ENDIAN"; then
-   AC_DEFINE(TARGET_BYTE_ORDER,G_LITTLE_ENDIAN,[byte order of target])
-else
-   AC_DEFINE(TARGET_BYTE_ORDER,G_BYTE_ORDER,[byte order of target])
-fi
-
-if test "x$have_visibility_hidden" = "xyes"; then
-   AC_DEFINE(HAVE_VISIBILITY_HIDDEN, 1, [Support for the visibility ("hidden") attribute])
-fi
-
-if test "x$have_deprecated" = "xyes"; then
-   AC_DEFINE(HAVE_DEPRECATED, 1, [Support for the deprecated attribute])
-fi
-
-dnl 
-dnl Simple Generational checks (sgen)
-dnl
-if $sgen_supported; then
-   build_sgen_default=yes
-else
-   build_sgen_default=no
-fi
-SGEN_DEFINES=
-AC_ARG_WITH(sgen, [  --with-sgen=yes,no             Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=$build_sgen_default])
-if test x$buildsgen = xyes; then
-   if $sgen_supported; then
-       SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR"
-       gc_msg="sgen and $gc_msg"
-   else
-       buildsgen=no
-       AC_MSG_WARN("Sgen is not supported on this platform")
-   fi
-fi
-AC_SUBST(SGEN_DEFINES)
-AM_CONDITIONAL(SUPPORT_SGEN, test x$buildsgen = xyes)
-
-USEJIT=false
-if test x$JIT_SUPPORTED = xyes; then
-   if $jit_wanted; then
-      USEJIT=true
-      jit_status="Building and using the JIT"
-   else
-      if $interp_wanted; then
-         jit_status="Building the JIT, defaulting to the interpreter"
-      else
-         AC_ERROR(No JIT or interpreter support available or selected.)
-      fi
-   fi
-else
-   if test x$interp_wanted = xtrue; then
-      jit_status="interpreter"
-   else
-      AC_ERROR(No JIT or interpreter support available or selected.)
-   fi
-fi
-
-AM_CONDITIONAL(USE_JIT, test x$USEJIT = xtrue)
-
-libsuffix=".so"
-
-case "$host" in
-     *-*-darwin*)
-       libsuffix=".dylib"
-       LIBC="libc.dylib"
-       INTL="libintl.dylib"
-       SQLITE="libsqlite.0.dylib"
-       SQLITE3="libsqlite3.0.dylib"
-       X11="libX11.dylib"
-       ;;
-     *-*-*netbsd*)
-       LIBC="libc.so.12"
-       INTL="libintl.so.0"
-       ;;
-    *-*-*freebsd*)
-       LIBC="libc.so"
-       INTL="libintl.so"
-       SQLITE="libsqlite.so"
-       SQLITE3="libsqlite3.so"
-       ;;
-    *-*-*openbsd*)
-       LIBC="libc.so"
-       INTL="libintl.so"
-        SQLITE="libsqlite.so"
-        SQLITE3="libsqlite3.so"
-       ;;
-    *-*-*linux*)
-       AC_PATH_X
-       dlsearch_path=`(libtool --config ; echo eval echo \\$sys_lib_dlsearch_path_spec) | sh`
-       AC_MSG_CHECKING(for the soname of libX11.so)
-       for i in $x_libraries $dlsearch_path; do
-               for r in 4 5 6; do
-                       if test -f $i/libX11.so.$r; then
-                               X11=libX11.so.$r
-                               AC_MSG_RESULT($X11)
-                       fi
-               done
-       done
-       
-       if test "x$X11" = "xlibX11.so"; then
-               AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? Assuming libX11.so.6...]);
-               X11=libX11.so.6
-       fi
-       AC_MSG_CHECKING(for the soname of libXinerama.so)
-       for i in $x_libraries $dlsearch_path; do
-               for r in 1 2 3; do
-                       if test -f $i/libXinerama.so.$r; then
-                               XINERAMA=libXinerama.so.$r
-                               AC_MSG_RESULT($XINERAMA)
-                       fi
-               done
-       done
-       if test "x$XINERAMA" = "xlibXinerama.so"; then
-               AC_MSG_WARN([Could not find Xinerama development libs. Support for multiple monitors might not work...]);
-       fi
-       ;;
-esac
-
-
-AC_SUBST(libsuffix)
-
-if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
-       if test "x$with_tls" = "x__thread"; then
-               #
-               # On some linux distributions, TLS works in executables, but linking 
-               # against a shared library containing TLS fails with:
-               # undefined reference to `__tls_get_addr'
-               #
-               rm -f conftest.c conftest.so conftest
-               echo "static __thread int foo; int main () { foo = 5; return 0; }" > conftest.c
-               $CC -fPIC --shared -o conftest.so conftest.c > /dev/null 2>&1
-               $CC -o conftest conftest.so > /dev/null 2>&1
-               if test ! -f conftest; then
-                  AC_MSG_WARN([Disabling usage of __thread.]);
-                  with_tls=pthread
-               fi
-               rm -f conftest.c conftest.so conftest
-       fi
-fi
-
-AC_ARG_ENABLE(icall-symbol-map,[  --enable-icall-symbol-map Generate tables which map icall functions to their C symbols], icall_symbol_map=$enableval, icall_symbol_map=no)
-if test "x$icall_symbol_map" = "xyes"; then
-   AC_DEFINE(ENABLE_ICALL_SYMBOL_MAP, 1, [Icall symbol map enabled])
-fi
-
-AC_ARG_ENABLE(icall-export,[  --enable-icall-export Export icall functions], icall_export=$enableval, icall_export=no)
-if test "x$icall_export" = "xyes"; then
-   AC_DEFINE(ENABLE_ICALL_EXPORT, 1, [Icall export enabled])
-fi
-
-AC_ARG_ENABLE(icall-tables,[  --disable-icall-tables Disable the runtime lookup of icalls], icall_tables=$enableval, icall_tables=yes)
-if test "x$icall_tables" = "xno"; then
-   AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled])
-fi
-
-if test "x$with_tls" = "x__thread"; then
-       AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword])
-       # Pass the information to libgc
-       CPPFLAGS="$CPPFLAGS -DUSE_COMPILER_TLS"
-       AC_MSG_CHECKING(if the tls_model attribute is supported)
-       AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
-               ], [
-                       AC_MSG_RESULT(yes)
-                       AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tls_model available])
-               ], [
-                       AC_MSG_RESULT(no)
-       ])
-fi
-
-if test ${TARGET} = ARM; then
-       dnl ******************************************
-       dnl *** Check to see what FPU is available ***
-       dnl ******************************************
-       AC_MSG_CHECKING(which FPU to use)
-
-       #
-       # This is a bit tricky:
-       #
-       # if (__ARM_PCS_VFP) {
-       #       /* mfloat-abi=hard == VFP with hard ABI */
-       # } elif (!__SOFTFP__) {
-       #       /* mfloat-abi=softfp == VFP with soft ABI */
-       # } else {
-       #       /* mfloat-abi=soft == no VFP */
-       # }
-       #
-       # The exception is iOS (w/ GCC) where none of the above
-       # are defined (but iOS always uses the 'softfp' ABI).
-       #
-       # No support for FPA.
-       #
-
-       fpu=NONE
-
-       # iOS GCC always uses the 'softfp' ABI.
-       if test x"$GCC" = xyes && test x$platform_darwin = xyes; then
-               fpu=VFP
-       fi
-
-       # Are we using the 'hard' ABI?
-       if test x$fpu = xNONE; then
-               AC_TRY_COMPILE([], [
-                       #ifndef __ARM_PCS_VFP
-                       #error "Float ABI is not 'hard'"
-                       #endif
-                       return 0;
-               ], [
-                       fpu=VFP_HARD
-               ], [
-                       fpu=NONE
-               ])
-       fi
-
-       # No 'hard' ABI. 'soft' or 'softfp'?
-       if test x$fpu = xNONE; then
-               AC_TRY_COMPILE([], [
-                       #ifdef __SOFTFP__
-                       #error "Float ABI is not 'softfp'"
-                       #endif
-                       return 0;
-               ], [
-                       fpu=VFP
-               ], [
-                       fpu=NONE
-               ])
-       fi
-
-       AC_MSG_RESULT($fpu)
-       CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
-       unset fpu
-
-       dnl *********************************************
-       dnl *** Check which ARM version(s) we can use ***
-       dnl *********************************************
-       AC_MSG_CHECKING(which ARM version to use)
-
-       AC_TRY_COMPILE([], [
-               #if !defined(__ARM_ARCH_5T__) && !defined(__ARM_ARCH_5TE__) && !defined(__ARM_ARCH_5TEJ__)
-               #error Not on ARM v5.
-               #endif
-               return 0;
-       ], [
-               arm_v5=yes
-
-               arm_ver=ARMv5
-       ], [])
-
-       AC_TRY_COMPILE([], [
-               #if !defined(__ARM_ARCH_6J__) && !defined(__ARM_ARCH_6ZK__) && !defined(__ARM_ARCH_6K__) && !defined(__ARM_ARCH_6T2__) && !defined(__ARM_ARCH_6M__)
-               #error Not on ARM v6.
-               #endif
-               return 0;
-       ], [
-               arm_v5=yes
-               arm_v6=yes
-
-               arm_ver=ARMv6
-       ], [])
-
-       AC_TRY_COMPILE([], [
-               #if !defined(__ARM_ARCH_7A__) && !defined(__ARM_ARCH_7R__) && !defined(__ARM_ARCH_7EM__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7S__)
-               #error Not on ARM v7.
-               #endif
-               return 0;
-       ], [
-               arm_v5=yes
-               arm_v6=yes
-               arm_v7=yes
-
-               arm_ver=ARMv7
-       ], [])
-
-       AC_MSG_RESULT($arm_ver)
-
-       if test x$arm_v5 = xyes; then
-               AC_DEFINE(HAVE_ARMV5, 1, [ARM v5])
-               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV5=1"
-       fi
-
-       if test x$arm_v6 = xyes; then
-               AC_DEFINE(HAVE_ARMV6, 1, [ARM v6])
-               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6=1"
-       fi
-
-       if test x$arm_v7 = xyes; then
-               AC_DEFINE(HAVE_ARMV7, 1, [ARM v7])
-               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV7=1"
-       fi
-fi
-
-if test ${TARGET} = ARM; then
-       if test "x${with_jumptables}" = "xyes"; then
-                AC_DEFINE(USE_JUMP_TABLES, 1, Use jump tables in JIT)
-        fi
-fi
-
-if test ${TARGET} = unknown; then
-       CPPFLAGS="$CPPFLAGS -DNO_PORT"
-       AC_MSG_WARN("mono has not been ported to $host: some things may not work.")
-fi
-
-if test ${ACCESS_UNALIGNED} = no; then
-       CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS"
-fi
-
-case "x$gc" in
-       xincluded)
-               # Pass CPPFLAGS to libgc configure
-               # We should use a separate variable for this to avoid passing useless and
-               # potentially problematic defines to libgc (like -D_FILE_OFFSET_BITS=64)
-               # This should be executed late so we pick up the final version of CPPFLAGS
-               # The problem with this approach, is that during a reconfigure, the main
-               # configure scripts gets invoked with these arguments, so we use separate
-               # variables understood by libgc's configure to pass CPPFLAGS and CFLAGS.
-               TMP_CPPFLAGS="$CPPFLAGS $CPPFLAGS_FOR_LIBGC"
-               if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
-                       TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
-               fi
-               # Don't pass -finstrument-for-thread-suspension in, 
-               # if these are instrumented it will be very bad news 
-               # (infinite recursion, undefined parking behavior, etc)
-               TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'`
-               ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$TMP_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
-               AC_CONFIG_SUBDIRS(libgc)
-               ;;
-esac
-
-AC_ARG_WITH(profile2,  [  --with-profile2=yes,no          If you want to install the 2.0/3.5 FX (defaults to yes)],            [], [with_profile2=yes])
-AC_ARG_WITH(profile4,  [  --with-profile4=yes,no          If you want to install the 4.0 FX (defaults to yes)],                [], [with_profile4=yes])
-AC_ARG_WITH(profile4_5,[  --with-profile4_5=yes,no        If you want to install the 4.5 FX (defaults to yes)],                [], [with_profile4_5=yes])
-AC_ARG_WITH(monodroid, [  --with-monodroid=yes,no         If you want to build the MonoDroid assemblies (defaults to no)],     [], [with_monodroid=no])
-AC_ARG_WITH(monotouch, [  --with-monotouch=yes,no,only    If you want to build the MonoTouch assemblies (defaults to no)],     [], [with_monotouch=no])
-AC_ARG_WITH(xammac,    [  --with-xammac=yes,no,only       If you want to build the Xamarin.Mac assemblies (defaults to no)],   [], [with_xammac=no])
-
-OPROFILE=no
-AC_ARG_WITH(oprofile,[  --with-oprofile=no,<oprofile install dir>   Enable oprofile support (defaults to no)],[
-       if test x$with_oprofile != xno; then
-           oprofile_include=$with_oprofile/include
-           if test ! -f $oprofile_include/opagent.h; then
-                 AC_MSG_ERROR([oprofile include file not found at $oprofile_include/opagent.h])
-               fi
-           OPROFILE=yes
-               OPROFILE_CFLAGS="-I$oprofile_include"
-           OPROFILE_LIBS="-L$with_oprofile/lib/oprofile -lopagent"
-           AC_DEFINE(HAVE_OPROFILE,1,[Have oprofile support])
-       fi
-])
-
-MALLOC_MEMPOOLS=no
-AC_ARG_WITH(malloc_mempools,[  --with-malloc-mempools=yes,no  Use malloc for each single mempool allocation (only for runtime debugging, defaults to no)],[
-       if test x$with_malloc_mempools = xyes; then
-               MALLOC_MEMPOOLS=yes
-               AC_DEFINE(USE_MALLOC_FOR_MEMPOOLS,1,[Use malloc for each single mempool allocation])
-       fi
-])
-
-
-DISABLE_MCS_DOCS=no
-AC_ARG_WITH(mcs_docs,[  --with-mcs-docs=yes,no         If you want to build the documentation under mcs (defaults to yes)],[
-       if test x$with_mcs_docs != xyes; then
-               DISABLE_MCS_DOCS=yes
-       fi
-])
-if test x$with_profile4 != xyes; then
-       DISABLE_MCS_DOCS=yes
-fi
-
-AC_ARG_WITH(lazy_gc_thread_creation, [  --with-lazy-gc-thread-creation=yes|no      Enable lazy runtime thread creation, embedding host must do it explicitly (defaults to no)],[
-       if test x$with_lazy_gc_thread_creation != xno ; then
-               AC_DEFINE(LAZY_GC_THREAD_CREATION,1,[Enable lazy gc thread creation by the embedding host.])
-       fi
-], [with_lazy_gc_thread_creation=no])
-
-AC_CHECK_HEADER([malloc.h], 
-               [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], 
-                       [Define to 1 if you have /usr/include/malloc.h.])],,)
-
-if test x"$GCC" = xyes; then
-       # Implicit function declarations are not 64 bit safe
-       # Do this late, since this causes lots of configure tests to fail
-       CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
-       # jay has a lot of implicit declarations
-       JAY_CFLAGS="-Wno-implicit-function-declaration"
-fi
-
-# When --disable-shared is used, libtool transforms libmono-2.0.la into libmono-2.0.so
-# instead of libmono-static.a
-if test "x$enable_shared" = "xno" -a "x$enable_executables" = "xyes"; then
-   LIBMONO_LA=libmini-static.la
-else
-   if test x$buildsgen = xyes; then
-      LIBMONO_LA=libmonosgen-$API_VER.la
-   else
-      LIBMONO_LA=libmonoboehm-$API_VER.la
-   fi
-fi
-AC_SUBST(LIBMONO_LA)
-
-dnl
-dnl Consistency settings
-dnl
-if test x$cross_compiling = xyes -o x$enable_mcs_build = xno; then
-   DISABLE_MCS_DOCS=yes
-   with_profile2=no
-   with_profile4=no
-   with_profile4_5=no
-   with_monodroid=no
-   with_monotouch=no
-   with_xammac=no
-fi
-
-if test x$DISABLE_MCS_DOCS = xyes; then
-   docs_dir=""
-else
-   docs_dir=docs
-fi
-AC_SUBST(docs_dir)
-
-## Maybe should also disable if mcsdir is invalid.  Let's punt the issue for now.
-AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno && test x$enable_mcs_build != xno])
-
-AM_CONDITIONAL(HAVE_OPROFILE, test x$OPROFILE = xyes)
-AC_SUBST(OPROFILE_CFLAGS)
-AC_SUBST(OPROFILE_LIBS)
-
-libmono_ldflags="$libmono_ldflags $LIBS"
-
-AM_CONDITIONAL(INSTALL_2_0, [test "x$with_profile2" = xyes])
-AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
-AM_CONDITIONAL(INSTALL_4_5, [test "x$with_profile4_5" = xyes])
-AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" != "xno"])
-AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" != "xno"])
-AM_CONDITIONAL(INSTALL_XAMMAC, [test "x$with_xammac" != "xno"])
-AM_CONDITIONAL(ONLY_MONOTOUCH, [test "x$with_monotouch" = "xonly"])
-AM_CONDITIONAL(ONLY_XAMMAC, [test "x$with_xammac" = "xonly"])
-
-AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
-AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
-AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
-AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64)
-AM_CONDITIONAL(X86, test x$TARGET = xX86)
-AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64)
-AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
-AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
-AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
-AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64)
-AM_CONDITIONAL(ARM, test x$TARGET = xARM)
-AM_CONDITIONAL(ARM64, test x$TARGET = xARM64)
-AM_CONDITIONAL(S390X, test x$TARGET = xS390X)
-AM_CONDITIONAL(HOST_X86, test x$HOST = xX86)
-AM_CONDITIONAL(HOST_AMD64, test x$HOST = xAMD64)
-AM_CONDITIONAL(HOST_ARM, test x$HOST = xARM)
-AM_CONDITIONAL(HOST_ARM64, test x$HOST = xARM64)
-AM_CONDITIONAL(CROSS_COMPILE, test "x$host" != "x$target")
-
-AM_CONDITIONAL(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes)
-AM_CONDITIONAL(INTERP_SUPPORTED, test x$interp_wanted = xtrue)
-AM_CONDITIONAL(INCLUDED_LIBGC, test x$gc = xincluded)
-
-AC_SUBST(LIBC)
-AC_SUBST(INTL)
-AC_SUBST(SQLITE)
-AC_SUBST(SQLITE3)
-AC_SUBST(X11)
-AC_SUBST(XINERAMA)
-AC_DEFINE_UNQUOTED(ARCHITECTURE,"$arch_target",[The architecture this is running on])
-AC_SUBST(arch_target)
-AC_SUBST(CFLAGS)
-AC_SUBST(CPPFLAGS)
-AC_SUBST(LDFLAGS)
-
-mono_build_root=`pwd`
-AC_SUBST(mono_build_root)
-
-if test x$USEJIT = xtrue; then
-  mono_runtime=mono/mini/mono
-else
-  mono_runtime=mono/interpreter/mint
-fi
-AC_SUBST(mono_runtime)
-
-mono_cfg_root=$mono_build_root/runtime
-if test x$host_win32 = xyes; then
-  if test "x$cross_compiling" = "xno"; then
-    mono_cfg_dir=`cygpath -w -a $mono_cfg_root`\\etc
-  else
-    mono_cfg_dir=`echo $mono_cfg_root | tr '/' '\\'`\\etc
-  fi
-else
-  mono_cfg_dir=$mono_cfg_root/etc
-fi
-AC_SUBST(mono_cfg_dir)
-
-AC_CONFIG_FILES([po/mcs/Makefile.in])
-
-AC_CONFIG_FILES([runtime/mono-wrapper],[chmod +x runtime/mono-wrapper])
-AC_CONFIG_FILES([runtime/monodis-wrapper],[chmod +x runtime/monodis-wrapper])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/1.0/machine.config],
-[   depth=../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/1.0
-    cd runtime/etc/mono/1.0
-    rm -f machine.config
-    $LN_S $reldir/data/net_1_1/machine.config machine.config
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/machine.config],
-[   depth=../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0
-    cd runtime/etc/mono/2.0
-    rm -f machine.config
-    $LN_S $reldir/data/net_2_0/machine.config machine.config
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/web.config],
-[   depth=../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0
-    cd runtime/etc/mono/2.0
-    rm -f web.config
-    $LN_S $reldir/data/net_2_0/web.config web.config
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/browscap.ini],
-[   depth=../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/
-    cd runtime/etc/mono/
-    rm -f browscap.ini
-    $LN_S $reldir/data/browscap.ini browscap.ini
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/Browsers/Compat.browser],
-[   depth=../../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0/Browsers/
-    cd runtime/etc/mono/2.0/Browsers
-    rm -f Compat.browser
-    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/Browsers/Compat.browser],
-[   depth=../../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/4.0/Browsers/
-    cd runtime/etc/mono/4.0/Browsers
-    rm -f Compat.browser
-    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/Browsers/Compat.browser],
-[   depth=../../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5/Browsers/
-    cd runtime/etc/mono/4.5/Browsers
-    rm -f Compat.browser
-    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/machine.config],
-[   depth=../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/4.0
-    cd runtime/etc/mono/4.0
-    rm -f machine.config
-    $LN_S $reldir/data/net_4_0/machine.config machine.config
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/web.config],
-[   depth=../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/4.0
-    cd runtime/etc/mono/4.0
-    rm -f web.config
-    $LN_S $reldir/data/net_4_0/web.config web.config
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/machine.config],
-[   depth=../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5
-    cd runtime/etc/mono/4.5
-    rm -f machine.config
-    $LN_S $reldir/data/net_4_5/machine.config machine.config
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/web.config],
-[   depth=../../../..
-    case $srcdir in
-    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
-    .) reldir=$depth ;;
-    *) reldir=$depth/$srcdir ;;
-    esac
-    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5
-    cd runtime/etc/mono/4.5
-    rm -f web.config
-    $LN_S $reldir/data/net_4_5/web.config web.config
-    cd $depth
-],[LN_S='$LN_S'])
-
-AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/echo "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool; sed -e 's/$ECHO "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool])
-
-AC_OUTPUT([
-Makefile
-mono-core.spec
-mono-uninstalled.pc
-scripts/mono-find-provides
-scripts/mono-find-requires
-mono/Makefile
-mono/utils/Makefile
-mono/metadata/Makefile
-mono/dis/Makefile
-mono/cil/Makefile
-mono/arch/Makefile
-mono/arch/x86/Makefile
-mono/arch/amd64/Makefile
-mono/arch/ppc/Makefile
-mono/arch/sparc/Makefile
-mono/arch/s390x/Makefile
-mono/arch/arm/Makefile
-mono/arch/arm64/Makefile
-mono/arch/ia64/Makefile
-mono/arch/mips/Makefile
-mono/interpreter/Makefile
-mono/tests/Makefile
-mono/tests/tests-config
-mono/tests/assemblyresolve/Makefile
-mono/tests/cas/Makefile
-mono/tests/cas/assembly/Makefile
-mono/tests/cas/demand/Makefile
-mono/tests/cas/inheritance/Makefile
-mono/tests/cas/linkdemand/Makefile
-mono/tests/cas/threads/Makefile
-mono/tests/gc-descriptors/Makefile
-mono/unit-tests/Makefile
-mono/benchmark/Makefile
-mono/monograph/Makefile
-mono/io-layer/Makefile
-mono/mini/Makefile
-mono/profiler/Makefile
-m4/Makefile
-ikvm-native/Makefile
-scripts/Makefile
-man/Makefile
-docs/Makefile
-data/Makefile
-data/net_2_0/Makefile
-data/net_4_0/Makefile
-data/net_4_5/Makefile
-data/net_2_0/Browsers/Makefile
-data/net_4_0/Browsers/Makefile
-data/net_4_5/Browsers/Makefile
-data/mint.pc
-data/mono-2.pc
-data/monosgen-2.pc
-data/mono.pc
-data/mono-cairo.pc
-data/mono-nunit.pc
-data/mono-options.pc
-data/mono-lineeditor.pc
-data/monodoc.pc
-data/dotnet.pc
-data/dotnet35.pc
-data/wcf.pc
-data/cecil.pc
-data/system.web.extensions_1.0.pc
-data/system.web.extensions.design_1.0.pc
-data/system.web.mvc.pc
-data/system.web.mvc2.pc
-data/system.web.mvc3.pc
-data/aspnetwebstack.pc
-data/reactive.pc
-samples/Makefile
-support/Makefile
-data/config
-tools/Makefile
-tools/locale-builder/Makefile
-tools/sgen/Makefile
-runtime/Makefile
-msvc/Makefile
-po/Makefile
-])
-
-# Update all submodules recursively to ensure everything is checked out
-$srcdir/scripts/update_submodules
-
-if test x$host_win32 = xyes; then
-   # Get rid of 'cyg' prefixes in library names
-   sed -e "s/\/cyg\//\/\//" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
-   # libtool seems to inherit -mno-cygwin from our CFLAGS, and uses it to compile its executable
-   # wrapper scripts which use exec(). gcc has no problem compiling+linking this, but the resulting
-   # executable doesn't work...
-   sed -e "s,-mno-cygwin,,g" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
-fi
-
-if test x$platform_darwin = xyes; then
-   # This doesn't seem to be required and it slows down parallel builds
-   sed -e 's,lock_old_archive_extraction=yes,lock_old_archive_extraction=no,g' < libtool > libtool.new && mv libtool.new libtool && chmod +x libtool
-fi
-
-(
-  case $prefix in
-  NONE) prefix=$ac_default_prefix ;;
-  esac
-  case $exec_prefix in
-  NONE) exec_prefix='${prefix}' ;;
-  esac
-
-  #
-  # If we are cross compiling, we don't build in the mcs/ tree.  Let us not clobber
-  # any existing config.make.  This allows people to share the same source tree
-  # with different build directories, one native and one cross
-  #
-  if test x$cross_compiling = xno && test x$enable_mcs_build != xno; then
-
-    test -w $mcs_topdir/build || chmod +w $mcs_topdir/build
-
-    echo "prefix=$prefix" > $mcs_topdir/build/config.make
-    echo "exec_prefix=$exec_prefix" >> $mcs_topdir/build/config.make
-    echo "sysconfdir=$sysconfdir" >> $mcs_topdir/build/config.make
-    echo 'mono_libdir=${exec_prefix}/lib' >> $mcs_topdir/build/config.make
-    echo 'IL_FLAGS = /debug' >> $mcs_topdir/build/config.make
-    echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $mcs_topdir/build/config.make
-    echo "ILDISASM = $mono_build_root/runtime/monodis-wrapper" >> $mcs_topdir/build/config.make
-    echo "JAY_CFLAGS = $JAY_CFLAGS" >> $mcs_topdir/build/config.make
-
-    case $INSTALL in
-    [[\\/$]]* | ?:[[\\/]]* ) mcs_INSTALL=$INSTALL ;;
-    *) mcs_INSTALL=$mono_build_root/$INSTALL ;;
-    esac
-
-    echo "INSTALL = $mcs_INSTALL" >> $mcs_topdir/build/config.make
-
-    export VERSION
-    [myver=$($AWK 'BEGIN {
-      split (ENVIRON["VERSION"] ".0.0.0", vsplit, ".")
-      if(length(vsplit [1]) > 4) {
-        split (substr(ENVIRON["VERSION"], 0, 4) "." substr(ENVIRON["VERSION"], 5) ".0.0", vsplit, ".")
-      }
-      print vsplit [1] "." vsplit [2] "." vsplit [3] "." vsplit [4]
-    }')]
-
-    echo "MONO_VERSION = $myver" >> $mcs_topdir/build/config.make
-
-    if test x$platform_darwin = xyes; then
-      echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make
-    fi
-
-       if test x$AOT_SUPPORTED = xyes -a x$enable_system_aot = xdefault; then
-          enable_system_aot=yes
-       fi
-
-       if test "x$enable_loadedllvm" = "xyes"; then
-          # This seems to fail on the x86 buildbots
-          enable_system_aot=no
-       fi
-
-    if test x$host_win32 = xno -a x$enable_system_aot = xyes; then
-      echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make
-    fi
-
-    if test x$DISABLE_MCS_DOCS = xyes; then
-      echo "DISABLE_MCS_DOCS = yes" >> $mcs_topdir/build/config.make
-    fi
-
-    if test x$has_extension_module != xno; then
-        echo "EXTENSION_MODULE = 1" >> $srcdir/$mcsdir/build/config.make
-    fi
-
-       default_profile=net_2_0
-    if test -z "$INSTALL_4_0_TRUE"; then :
-               default_profile=net_4_0
-    fi
-    if test -z "$INSTALL_MONODROID_TRUE"; then :
-               default_profile=monodroid
-    fi
-    if test -z "$INSTALL_MONOTOUCH_TRUE"; then :
-               default_profile=monotouch
-    fi
-       if test -z "$INSTALL_XAMMAC_TRUE"; then :
-               default_profile=xammac
-       fi
-    if test -z "$INSTALL_4_5_TRUE"; then :
-               default_profile=net_4_5
-    fi
-    
-    echo "DEFAULT_PROFILE = $default_profile" >> $srcdir/$mcsdir/build/config.make
-    
-    if test "x$test_bcl_opt" = "xyes"; then    
-      echo "BCL_OPTIMIZE = 1" >> $srcdir/$mcsdir/build/config.make
-    fi
-
-  fi
-
-  # if we have an olive folder, override the default settings
-  if test -d $olivedir; then
-
-    if test x$cross_compiling = xno && test x$enable_olive_build != xno; then
-
-      test -w $srcdir/$olivedir/build || chmod +w $srcdir/$olivedir/build
-
-      echo "prefix=$prefix" > $srcdir/$olivedir/build/config.make
-      echo "exec_prefix=$exec_prefix" >> $srcdir/$olivedir/build/config.make
-      echo 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$olivedir/build/config.make
-      echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $srcdir/$olivedir/build/config.make
-      echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $srcdir/$olivedir/build/config.make
-      echo "MONO_VERSION = $myver" >> $srcdir/$olivedir/build/config.make
-    fi
-  fi
-
-)
-
-libgdiplus_msg=${libgdiplus_loc:-assumed to be installed}
-
-echo "
-        mcs source:    $mcsdir
-
-   Engine:
-       GC:            $gc_msg 
-       TLS:           $with_tls
-       SIGALTSTACK:   $with_sigaltstack
-       Engine:        $jit_status
-       oprofile:      $OPROFILE
-       BigArrays:     $enable_big_arrays
-       DTrace:        $enable_dtrace
-       LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm)
-
-   Libraries:
-       .NET 2.0/3.5:  $with_profile2
-       .NET 4.0:      $with_profile4
-       .NET 4.5:      $with_profile4_5
-       MonoDroid:     $with_monodroid
-       MonoTouch:     $with_monotouch
-       Xamarin.Mac:   $with_xammac
-       JNI support:   $jdk_headers_found
-       libgdiplus:    $libgdiplus_msg
-       zlib:          $zlib_msg
-       $disabled
-"
-if test x$with_static_mono = xno -a "x$host_win32" != "xyes"; then
-   AC_MSG_WARN(Turning off static Mono is a risk, you might run into unexpected bugs)
-fi
index 44fefc080276ca63a6080c5327fa6ce66034ce77..3cc39732e1c7dc58800b7a9894fc9733613faac7 100644 (file)
@@ -16,6 +16,8 @@
        <dllmap dll="sqlite" target="@SQLITE@" os="!windows"/>
        <dllmap dll="sqlite3" target="@SQLITE3@" os="!windows"/>
        <dllmap dll="libX11" target="@X11@" os="!windows" />
+       <dllmap dll="libgdk-x11-2.0" target="@GDKX11@" os="!windows"/>
+       <dllmap dll="libgtk-x11-2.0" target="@GTKX11@" os="!windows"/>
        <dllmap dll="libXinerama" target="@XINERAMA@" os="!windows" />
        <dllmap dll="libcairo-2.dll" target="libcairo.so.2" os="!windows"/>
        <dllmap dll="libcairo-2.dll" target="libcairo.2.dylib" os="osx"/>
index b7e5cd63894c695447748d7f651671cebf7c5d5b..84cc8353c99489244340626b95d1d4b4b7b45cb1 100644 (file)
@@ -1,5 +1,7 @@
 ACLOCAL_AMFLAGS = -I m4
 
+AM_CFLAGS = $(WERROR_CFLAGS)
+
 if HOST_WIN32
 SUBDIRS = m4 src
 else
index 526d00c1be7822b1cfa9de6a821dd5c7ed0795e8..5216cd14a5ef88245107fe9f27c1821914e14025 100644 (file)
@@ -22,8 +22,8 @@ if test x$GCC != xyes; then
     dolt_supported=no
 fi
 case $host in
-i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
-|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*)
     pic_options='-fPIC'
     ;;
 ?86-pc-cygwin*|i?86-pc-cygwin*)
index fab57247699fab6cdd6910b278c7f40ee7c36c5b..80600f8565f25eb5832cfa28e18b7026b9868dda 100644 (file)
@@ -235,6 +235,12 @@ AC_ARG_WITH(crosspkgdir, [  --with-crosspkgdir=/path/to/pkg-config/dir      Chan
        fi
 )
 
+AC_ARG_ENABLE(werror, [  --enable-werror Pass -Werror to the C compiler], werror_flag=$enableval, werror_flag=no)
+if test x$werror_flag = xyes; then
+       WERROR_CFLAGS="-Werror"
+fi
+AC_SUBST([WERROR_CFLAGS])
+
 AC_SUBST(GPOINTER_TO_INT)
 AC_SUBST(GPOINTER_TO_UINT)
 AC_SUBST(GINT_TO_POINTER)
index 0d0e90354ee8adb5c48053a37c012ab0d0991393..70d519ea225ca26dfef7cb1376125b8c07552204 100644 (file)
@@ -1,5 +1,7 @@
 noinst_LTLIBRARIES = libeglib.la libeglib-static.la
 
+AM_CFLAGS = $(WERROR_CFLAGS)
+
 win_files  = \
        eglib-config.hw \
        gdate-win32.c gdir-win32.c gfile-win32.c gmisc-win32.c \
@@ -30,6 +32,7 @@ libeglib_la_SOURCES = \
        garray.c        \
        gbytearray.c    \
        gerror.c        \
+       vasprintf.h     \
        ghashtable.c    \
        giconv.c        \
        gmem.c          \
index 790c388c7ad9fb6bb0230804ecbf4f3ef90f7dc4..2ec089c9956c1053c96bd0b8ea441d2881d54800 100644 (file)
@@ -30,6 +30,8 @@
 #include <string.h>
 #include <glib.h>
 
+#include "vasprintf.h"
+
 GError *
 g_error_new (gpointer domain, gint code, const char *format, ...)
 {
index 6d6dadff448c31b9b07cf6ab691b0c4f8a6624f1..30c2d7adb8f16791039c574f987da4c4c7df0b0c 100644 (file)
 
 G_BEGIN_DECLS
 
-#ifdef G_OS_WIN32
-/* MSC and Cross-compilatin will use this */
-int vasprintf (char **strp, const char *fmt, va_list ap);
-#endif
-
-
 /*
  * Basic data types
  */
@@ -727,8 +721,16 @@ GUnicodeBreakType   g_unichar_break_type (gunichar c);
 #define G_UNLIKELY(x) (x)
 #endif
 
+#if defined(_MSC_VER)
+#define  eg_unreachable() __assume(0)
+#elif defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 5)))
+#define  eg_unreachable() __builtin_unreachable()
+#else
+#define  eg_unreachable()
+#endif
+
 #define  g_assert(x)     G_STMT_START { if (G_UNLIKELY (!(x))) g_assertion_message ("* Assertion at %s:%d, condition `%s' not met\n", __FILE__, __LINE__, #x);  } G_STMT_END
-#define  g_assert_not_reached() G_STMT_START { g_assertion_message ("* Assertion: should not be reached at %s:%d\n", __FILE__, __LINE__); } G_STMT_END
+#define  g_assert_not_reached() G_STMT_START { g_assertion_message ("* Assertion: should not be reached at %s:%d\n", __FILE__, __LINE__); eg_unreachable(); } G_STMT_END
 
 /*
  * Unicode conversion
index aff9f460c57c6ce3e675e00640e1d0ff01c396c5..73ef1f383dea0d572bd6ee5150c98673ad93ca4f 100644 (file)
@@ -31,6 +31,8 @@
 #include <stdlib.h>
 #include <glib.h>
 
+#include "vasprintf.h"
+
 /* The current fatal levels, error is always fatal */
 static GLogLevelFlags fatal = G_LOG_LEVEL_ERROR;
 
index 335ccff9365ba7ae6c3e6cec0a8d7f18083bd151..3e976c5a2edfe3019a294daad9f45d355f7da250 100644 (file)
@@ -32,6 +32,8 @@
 #include <ctype.h>
 #include <glib.h>
 
+#include "vasprintf.h"
+
 /* This is not a macro, because I dont want to put _GNU_SOURCE in the glib.h header */
 gchar *
 g_strndup (const gchar *str, gsize n)
index 2cf5a9ba1f3ea84c2b8e90ec014146f649323c9b..6dc1950ae4e9a9b87358266497993a7a8306fdfa 100644 (file)
@@ -88,12 +88,24 @@ merge_lists (list_node *first, list_node *second, GCompareFunc func)
 static inline list_node *
 sweep_up (struct sort_info *si, list_node *list, int upto)
 {
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
+       /*
+        * GCC incorrectly thinks we're writing below si->ranks array bounds.
+        */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+
        int i;
        for (i = si->min_rank; i < upto; ++i) {
                list = merge_lists (si->ranks [i], list, si->func);
                si->ranks [i] = NULL;
        }
        return list;
+
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
+#pragma GCC diagnostic pop
+#endif
 }
 
 /*
@@ -124,6 +136,14 @@ sweep_up (struct sort_info *si, list_node *list, int upto)
 static inline void
 insert_list (struct sort_info *si, list_node* list, int rank)
 {
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
+       /*
+        * GCC incorrectly thinks we're writing below si->ranks array bounds.
+        */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+
        int i;
 
        if (rank > si->n_ranks) {
@@ -149,6 +169,10 @@ insert_list (struct sort_info *si, list_node* list, int rank)
                si->n_ranks = i + 1;
        si->min_rank = i;
        si->ranks [i] = list;
+
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
+#pragma GCC diagnostic pop
+#endif
 }
 
 #undef stringify2
diff --git a/eglib/src/vasprintf.h b/eglib/src/vasprintf.h
new file mode 100644 (file)
index 0000000..3d29454
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef __VASPRINTF_H
+#define __VASPRINTF_H
+
+#include <stdarg.h>
+#include <config.h>
+
+#ifndef HAVE_VASPRINTF
+int vasprintf(char **ret, const char *fmt, va_list ap);
+#endif
+
+#endif /* __VASPRINTF_H */
index 411c945296684b97d819f9e0affbc561dc97a01b..19276c990c6b19f2a9881e754d473a751551061c 100644 (file)
@@ -115,7 +115,7 @@ test_file ()
 
 #ifndef G_OS_WIN32 /* FIXME */
        gchar *sympath;
-       gint ignored;
+       gint ignored G_GNUC_UNUSED;
 #endif
 
        res = g_file_test (NULL, 0);
index dec858e131f66a67e6ff2b0b445144a1d49ad070..e638db1d76f341e2e7df7157292feb57ba00466b 100644 (file)
@@ -486,11 +486,15 @@ static void* JNIEnv_vtable[] =
        0  // jlong JNICALL GetDirectBufferCapacity(jobject buf);
 };
 
-JNIEXPORT void** JNICALL ikvm_GetJNIEnvVTable()
+void** ikvm_GetJNIEnvVTable(void);
+
+JNIEXPORT void** JNICALL ikvm_GetJNIEnvVTable(void)
 {
        return JNIEnv_vtable;
 }
 
+void* JNICALL ikvm_MarshalDelegate(void* p);
+
 JNIEXPORT void* JNICALL ikvm_MarshalDelegate(void* p)
 {
        return p;
@@ -498,6 +502,8 @@ JNIEXPORT void* JNICALL ikvm_MarshalDelegate(void* p)
 
 typedef jint (JNICALL *PJNI_ONLOAD)(JavaVM* vm, void* reserved);
 
+jint JNICALL ikvm_CallOnLoad(PJNI_ONLOAD method, JavaVM* vm, void* reserved);
+
 JNIEXPORT jint JNICALL ikvm_CallOnLoad(PJNI_ONLOAD method, JavaVM* vm, void* reserved)
 {
        return method(vm, reserved);
index 9f2115f712ba6c2726969e963ebe4aa246048529..43531ae0ea5b5d7666759ac7dd98d5505e4f4067 100644 (file)
        #include <sys/mman.h>
        #include "jni.h"
 
+       void* JNICALL ikvm_LoadLibrary(char* psz);
+
        JNIEXPORT void* JNICALL ikvm_LoadLibrary(char* psz)
        {
                return g_module_open(psz, 0);
        }
 
+       void JNICALL ikvm_FreeLibrary(GModule* handle);
+
        JNIEXPORT void JNICALL ikvm_FreeLibrary(GModule* handle)
        {
                g_module_close(handle);
        }
 
+       void* JNICALL ikvm_GetProcAddress(GModule* handle, char* name, jint argc);
+
        JNIEXPORT void* JNICALL ikvm_GetProcAddress(GModule* handle, char* name, jint argc)
        {
                void *symbol;
                        return NULL;
        }
 
+       void* JNICALL ikvm_mmap(int fd, jboolean writeable, jboolean copy_on_write, jlong position, jint size);
+
        JNIEXPORT void* JNICALL ikvm_mmap(int fd, jboolean writeable, jboolean copy_on_write, jlong position, jint size)
        {
                return mmap(0, size, writeable ? PROT_WRITE | PROT_READ : PROT_READ, copy_on_write ? MAP_PRIVATE : MAP_SHARED, fd, position);
        }
 
+       int JNICALL ikvm_munmap(void* address, jint size);
+
        JNIEXPORT int JNICALL ikvm_munmap(void* address, jint size)
        {
                return munmap(address, size);
        }
 
+       int JNICALL ikvm_msync(void* address, jint size);
+
        JNIEXPORT int JNICALL ikvm_msync(void* address, jint size)
        {
 #if defined(__native_client__) && defined(USE_NEWLIB)
index 49dbe4be81c6dcd2d3466b8ab07bf43b3b8417c6..a53aafcbf3e1d89d35191047891c45fafea27bff 100644 (file)
@@ -68,7 +68,7 @@ libmonogc_static_la_LDFLAGS = -static
 
 EXTRA_DIST += alpha_mach_dep.S mips_sgi_mach_dep.s sparc_mach_dep.S
 
-AM_CFLAGS = @GC_CFLAGS@
+AM_CFLAGS = $(WERROR_CFLAGS) @GC_CFLAGS@
 
 if CPLUSPLUS
 extra_checks = test_cpp
index 1f03b511c3b298c6fc71abcdbfc3bc2d090d944e..8b4dff1fb73f4d315793d370fc99b8b9a9fa3e6f 100644 (file)
@@ -331,7 +331,7 @@ DOC_FILES= README.QUICK doc/README.Mac doc/README.MacOSX doc/README.OS2 \
 TESTS= tests/test.c tests/test_cpp.cc tests/trace_test.c \
        tests/leak_test.c tests/thread_leak_test.c tests/middle.c
 
-GNU_BUILD_FILES= configure.in Makefile.am configure acinclude.m4 \
+GNU_BUILD_FILES= configure.ac Makefile.am configure acinclude.m4 \
                 libtool.m4 install-sh configure.host Makefile.in \
                 aclocal.m4 config.sub config.guess \
                 include/Makefile.am include/Makefile.in \
index bf2fbf7df7ae99df3c6207fd7bddd4785018c2f6..559d3ec493225613625077655994455c6dfca6c5 100644 (file)
@@ -5,8 +5,8 @@ This is a modified version of Boehm GC 6.1 for Mono.
   - Makefile changes:
 
     libgc has a lot of configurable options which are AC_DEFINE()d in its
-    configure.in.  To make it easier to build and bundle it with Mono, I
-    replaced most of the orignal configure.in and the makefiles with custom
+    configure.ac.  To make it easier to build and bundle it with Mono, I
+    replaced most of the orignal configure.ac and the makefiles with custom
     versions which just define what we actually need for Mono.
 
     This means that you can just run configure in this directory and it'll
@@ -58,7 +58,7 @@ This is a modified version of Boehm GC 6.1 for Mono.
 
         cvs diff -u -r LIBGC
 
-  When importing new upstream versions, don't import the new configure.in or any of the
+  When importing new upstream versions, don't import the new configure.ac or any of the
   Makefile.am's; they've been replaced by custom versions.  Just import all the new source
   files and it should be fine.
 
index 526d00c1be7822b1cfa9de6a821dd5c7ed0795e8..5216cd14a5ef88245107fe9f27c1821914e14025 100644 (file)
@@ -22,8 +22,8 @@ if test x$GCC != xyes; then
     dolt_supported=no
 fi
 case $host in
-i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
-|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*)
     pic_options='-fPIC'
     ;;
 ?86-pc-cygwin*|i?86-pc-cygwin*)
index 376c387885677ce108f2841a1faa8061a235fa29..10ae8cf6831ad2b6fe0977605ab8e6113ff3045e 100755 (executable)
@@ -22,7 +22,7 @@ if [ -z "$LIBTOOL" ]; then
   fi
 fi
 
-(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
+(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && {
   ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || {
     echo
     echo "**Error**: You must have \`libtool' installed to compile Mono."
@@ -32,8 +32,8 @@ fi
   }
 }
 
-grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && {
-  grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
+grep "^AM_GNU_GETTEXT" $srcdir/configure.ac >/dev/null && {
+  grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \
   (gettext --version) < /dev/null > /dev/null 2>&1 || {
     echo
     echo "**Error**: You must have \`gettext' installed to compile Mono."
@@ -80,7 +80,7 @@ xlc )
 esac
 
 
-if grep "^AC_PROG_LIBTOOL" configure.in >/dev/null; then
+if grep "^AC_PROG_LIBTOOL" configure.ac >/dev/null; then
   if test -z "$NO_LIBTOOLIZE" ; then 
     echo "Running libtoolize..."
     ${LIBTOOL}ize --force --copy
@@ -99,7 +99,7 @@ aclocal $ACLOCAL_FLAGS || {
   exit 1
 }
 
-if grep "^AC_CONFIG_HEADERS" configure.in >/dev/null; then
+if grep "^AC_CONFIG_HEADERS" configure.ac >/dev/null; then
   echo "Running autoheader..."
   autoheader || { echo "**Error**: autoheader failed."; exit 1; }
 fi
diff --git a/libgc/configure.ac b/libgc/configure.ac
new file mode 100644 (file)
index 0000000..7dc0498
--- /dev/null
@@ -0,0 +1,556 @@
+# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved.
+# 
+# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
+# OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
+# 
+# Permission is hereby granted to use or copy this program
+# for any purpose,  provided the above notices are retained on all copies.
+# Permission to modify the code and to distribute modified code is granted,
+# provided the above notices are retained, and a notice that the code was
+# modified is included with the above copyright notice.
+#
+# Original author: Tom Tromey
+# Modified by: Grzegorz Jakacki <jakacki at acm dot org>
+
+dnl Process this file with autoconf to produce configure.
+
+AC_PREREQ([2.53])
+AC_INIT([libgc-mono], [6.6], [Hans_Boehm@hp.com])
+
+AM_INIT_AUTOMAKE([1.9 no-define foreign])
+AC_CONFIG_SRCDIR(gcj_mlc.c)
+AC_CONFIG_MACRO_DIR([m4])
+AC_CANONICAL_HOST
+
+AC_SUBST(PACKAGE)
+AC_SUBST(GC_VERSION)
+
+AC_PROG_CC
+AC_PROG_CXX
+
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+dnl automake 1.6 and later need the AM_PROG_AS macro.
+ifdef([AM_PROG_AS],[AM_PROG_AS],[])
+AC_CHECK_TOOL(AR, ar)
+AC_CHECK_TOOL(RANLIB, ranlib, :)  # :)
+
+AC_PROG_INSTALL
+
+AM_MAINTAINER_MODE
+
+. [$]{srcdir}/configure.host
+
+# We use a separate variable to pass down CPPFLAGS and CFLAGS from the main mono 
+# configure, because of autoconf brokeness
+if test "x$CPPFLAGS_FOR_LIBGC" != "x"; then
+   CPPFLAGS=$CPPFLAGS_FOR_LIBGC
+fi
+if test "x$CFLAGS_FOR_LIBGC" != "x"; then
+   CFLAGS=$CFLAGS_FOR_LIBGC
+fi
+
+GC_CFLAGS=${gc_cflags}
+AC_SUBST(GC_CFLAGS)
+
+case $enable_embed_check in
+no) ;;
+*) AC_MSG_ERROR([This module is now part of 'mono' and cannot be built as a stand-alone module any longer.]) ;;
+esac
+
+THREADS=$with_libgc_threads
+
+AC_ARG_ENABLE(win32-dllmain,
+[  --enable-win32-dllmain    Define the DllMain function in win32_threads.c even if the collector is not built as a dll],
+)
+
+AC_ARG_ENABLE(parallel-mark,
+[  --enable-parallel-mark      parallelize marking and free list construction],
+   [case "$THREADS" in
+      no | none | single)
+       AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec])
+       ;;
+    esac]
+)
+
+AC_ARG_ENABLE(cplusplus,
+[  --enable-cplusplus          install C++ support],
+)
+
+AM_CPPFLAGS=-I${srcdir}/include
+THREADDLLIBS=
+## Libraries needed to support dynamic loading and/or threads.
+case "$THREADS" in
+ no | none | single)
+    THREADS=none
+    ;;
+ posix | pthreads)
+    THREADS=posix
+    AC_CHECK_LIB(pthread, pthread_self, THREADDLLIBS="-lpthread",,)
+    case "$host" in
+     x86-*-linux* | ia64-*-linux* | i386-*-linux* | i486-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha*-*-linux* | s390*-*-linux* | sparc*-*-linux* | powerpc-*-linux*)
+       AC_DEFINE(GC_LINUX_THREADS)
+       AC_DEFINE(_REENTRANT)
+        if test "${enable_parallel_mark}" = yes; then
+         AC_DEFINE(PARALLEL_MARK)
+       fi
+       AC_DEFINE(THREAD_LOCAL_ALLOC)
+       ;;
+     *-*-linux* | *-*-nacl*)
+       AC_DEFINE(GC_LINUX_THREADS)
+       AC_DEFINE(_REENTRANT)
+       ;;
+     *-*-aix*)
+       AC_DEFINE(GC_AIX_THREADS)
+       AC_DEFINE(_REENTRANT)
+       ;;
+     *-*-hpux*)
+       AC_MSG_WARN("Only HP/UX 11 threads are supported.")
+       AC_DEFINE(GC_HPUX_THREADS)
+       AC_DEFINE(_POSIX_C_SOURCE,199506L)
+       if test "${enable_parallel_mark}" = yes; then
+         AC_DEFINE(PARALLEL_MARK)
+       fi
+       AC_DEFINE(THREAD_LOCAL_ALLOC)
+       THREADDLLIBS="-lpthread -lrt"
+       ;;
+      *-*-freebsd*)
+       AC_DEFINE(GC_FREEBSD_THREADS)
+       if test "x$PTHREAD_CFLAGS" != "x"; then
+               AM_CPPFLAGS="$AM_CPPFLAGS $PTHREAD_CFLAGS"
+       fi
+       if test "x$PTHREAD_LIBS" = "x"; then
+               THREADDLLIBS=-pthread
+       else
+               THREADDLLIBS="$PTHREAD_LIBS"
+       fi
+       AC_DEFINE(THREAD_LOCAL_ALLOC)
+       ;;
+     *-*-solaris*)
+       AC_DEFINE(GC_SOLARIS_THREADS)
+       AC_DEFINE(GC_SOLARIS_PTHREADS)
+       ;;
+     *-*-irix*)
+       AC_DEFINE(GC_IRIX_THREADS)
+       ;;
+     *-*-cygwin*)
+       AC_DEFINE(GC_WIN32_THREADS)
+       ;;
+     *-*-darwin*)
+       AC_DEFINE(GC_DARWIN_THREADS)
+       AC_DEFINE(THREAD_LOCAL_ALLOC)
+       if test "${enable_parallel_mark}" = yes; then
+         AC_DEFINE(PARALLEL_MARK)
+       fi
+       ;;
+     *-*-netbsd*)
+       AC_DEFINE(GC_NETBSD_THREADS)
+       if test "${enable_parallel_mark}" = yes; then
+         AC_DEFINE(PARALLEL_MARK)
+       fi
+       AC_DEFINE(THREAD_LOCAL_ALLOC)
+       ;;
+     *-*-openbsd*)
+       AC_DEFINE(GC_OPENBSD_THREADS)
+       if test "${enable_parallel_mark}" = yes; then
+         AC_DEFINE(PARALLEL_MARK)
+       fi
+       AC_DEFINE(THREAD_LOCAL_ALLOC)
+       ;;
+     *-*-osf*)
+       AC_DEFINE(GC_OSF1_THREADS)
+        if test "${enable_parallel_mark}" = yes; then
+         AC_DEFINE(PARALLEL_MARK)
+         AC_DEFINE(THREAD_LOCAL_ALLOC)
+         # May want to enable it in other cases, too.
+         # Measurements havent yet been done.
+       fi
+       AM_CPPFLAGS="$AM_CPPFLAGS -pthread"
+       THREADDLLIBS="-lpthread -lrt"
+       ;;
+      *)
+       AC_MSG_ERROR("Pthreads not supported by the GC on this platform.")
+       ;;
+    esac
+    ;;
+ win32)
+    AC_DEFINE(GC_WIN32_THREADS)
+    dnl Wine getenv may not return NULL for missing entry
+    AC_DEFINE(NO_GETENV)
+       if test "${enable_win32_dllmain}" = yes; then
+          AC_DEFINE(GC_INSIDE_DLL)
+       fi
+    ;;
+ dgux386)
+    THREADS=dgux386
+    AC_MSG_RESULT($THREADDLLIBS)
+    # Use pthread GCC  switch
+    THREADDLLIBS=-pthread
+    if test "${enable_parallel_mark}" = yes; then
+        AC_DEFINE(PARALLEL_MARK)
+    fi
+    AC_DEFINE(THREAD_LOCAL_ALLOC)
+    AC_DEFINE(GC_DGUX386_THREADS)
+    AC_DEFINE(DGUX_THREADS)
+    # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread
+    AM_CPPFLAGS="-pthread $AM_CPPFLAGS"
+    ;;
+ aix)
+    THREADS=posix
+    THREADDLLIBS=-lpthread
+    AC_DEFINE(GC_AIX_THREADS)
+    AC_DEFINE(_REENTRANT)
+    ;;
+ decosf1 | irix | mach | os2 | solaris | dce | vxworks)
+    AC_MSG_ERROR(thread package $THREADS not yet supported)
+    ;;
+ *)
+    AC_MSG_ERROR($THREADS is an unknown thread package)
+    ;;
+esac
+AC_SUBST(THREADDLLIBS)
+
+case "$host" in 
+   powerpc-*-darwin*)
+      powerpc_darwin=true
+      ;;
+esac
+AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue)
+
+# Check if the GCC builtin __sync_bool_compare_and_swap is available.
+# It is preferred in gc_locks.h for PPC as GCC 4.4 has a problem with the inline assembly there.
+AC_MSG_CHECKING(for __sync_bool_compare_and_swap)
+AC_TRY_COMPILE([],[
+volatile unsigned int foo = 0;
+int main(int argc, char** argv) {
+    unsigned int r1 = __sync_bool_compare_and_swap(&foo, 0, 1);
+    return 0;
+}
+], [
+AC_MSG_RESULT(yes)
+AC_DEFINE(HAS___SYNC_BOOL_COMPARE_AND_SWAP)
+], [
+AC_MSG_RESULT(no)
+])
+
+AC_MSG_CHECKING(for xlc)
+AC_TRY_COMPILE([],[
+ #ifndef __xlC__
+ # error
+ #endif
+], [compiler_xlc=yes], [compiler_xlc=no])
+AC_MSG_RESULT($compiler_xlc)
+AM_CONDITIONAL(COMPILER_XLC,test $compiler_xlc = yes)
+if test $compiler_xlc = yes -a "$powerpc_darwin" = true; then
+  # the darwin stack-frame-walking code is completely broken on xlc
+  AC_DEFINE(DARWIN_DONT_PARSE_STACK)
+fi
+
+# We never want libdl on darwin. It is a fake libdl that just ends up making
+# dyld calls anyway
+case "$host" in
+  *-*-darwin*) ;;
+  *) 
+    AC_CHECK_LIB(dl, dlopen, THREADDLLIBS="$THREADDLLIBS -ldl")
+    ;;
+esac
+
+AC_SUBST(EXTRA_TEST_LIBS)
+
+target_all=libgc.la
+AC_SUBST(target_all)
+
+dnl If the target is an eCos system, use the appropriate eCos
+dnl I/O routines.
+dnl FIXME: this should not be a local option but a global target
+dnl system; at present there is no eCos target.
+TARGET_ECOS="no"
+AC_ARG_WITH(ecos,
+[  --with-ecos             enable runtime eCos target support],
+TARGET_ECOS="$with_ecos"
+)
+
+addobjs=
+addlibs=
+addincludes=
+addtests=
+CXXAM_CPPFLAGS=
+case "$TARGET_ECOS" in
+   no)
+      ;;
+   *)
+      AC_DEFINE(ECOS)
+      CXXINCLUDES="-I${TARGET_ECOS}/include"
+      addobjs="$addobjs ecos.lo"
+      ;;
+esac
+
+if test "${enable_cplusplus}" = yes; then
+      addincludes="$addincludes include/gc_cpp.h include/gc_allocator.h"
+      addtests="$addtests test_cpp"
+fi
+
+AM_CONDITIONAL(CPLUSPLUS, test "${enable_cplusplus}" = yes)
+
+AC_SUBST(CXX)
+
+AC_SUBST(AM_CPPFLAGS)
+AC_SUBST(CXXINCLUDES)
+
+# Configuration of shared libraries
+#
+AC_MSG_CHECKING(whether to build shared libraries)
+AC_ENABLE_SHARED
+
+case "$host" in
+ alpha-*-openbsd*)
+     enable_shared=no
+     AC_MSG_RESULT(no)
+     ;;
+ *)
+     AC_MSG_RESULT(yes)
+     ;;
+esac
+
+# Configuration of machine-dependent code
+#
+AC_MSG_CHECKING(which machine-dependent code should be used) 
+machdep=
+case "$host" in
+ alpha-*-openbsd*)
+    machdep="alpha_mach_dep.lo"
+    if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
+       AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled)
+    fi
+    ;;
+ alpha*-*-linux*)
+    machdep="alpha_mach_dep.lo"
+    ;;
+ i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?)
+    AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED)
+    ;;
+ mipstx39-*-elf*)
+    machdep="mips_ultrix_mach_dep.lo"
+    AC_DEFINE(STACKBASE, __stackbase)
+    AC_DEFINE(DATASTART_IS_ETEXT)
+    ;;
+ mips-dec-ultrix*)
+    machdep="mips_ultrix_mach-dep.lo"
+    ;;
+ mips-nec-sysv*|mips-unknown-sysv*)
+    ;;
+ mips*-*-linux*) 
+    ;; 
+ mips-*-*)
+    machdep="mips_sgi_mach_dep.lo"
+    AC_DEFINE(NO_EXECUTE_PERMISSION)
+    ;;
+ sparc-*-netbsd*)
+    machdep="sparc_netbsd_mach_dep.lo"
+    ;;
+ sparc-sun-solaris2.3)
+    machdep="sparc_mach_dep.lo"
+    AC_DEFINE(SUNOS53_SHARED_LIB)
+    ;;
+ sparc*-sun-solaris2.*)
+    machdep="sparc_mach_dep.lo"
+    ;;
+ ia64-*-*)
+     machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
+       target_ia64=true
+    ;;
+ *-*-nacl*)
+    AC_DEFINE(NO_EXECUTE_PERMISSION)
+    ;;
+esac
+if test x"$machdep" = x; then
+AC_MSG_RESULT($machdep)
+   machdep="mach_dep.lo"
+fi
+addobjs="$addobjs $machdep"
+#
+# Adding object files directly to _LIBADD breaks -j builds, so we need to add the sources
+# instead, but _SOURCES can't contain autoconf substitutions, so add them using automake
+# conditionals.
+#
+#AC_SUBST(addobjs)
+AC_SUBST(addincludes)
+AC_SUBST(addlibs)
+AC_SUBST(addtests)
+
+AM_CONDITIONAL(TARGET_IA64,test x$target_ia64 = xtrue)
+
+AC_PROG_LIBTOOL
+# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.
+DOLT
+
+#
+# Check for AViiON Machines running DGUX
+#
+ac_is_dgux=no
+AC_CHECK_HEADER(sys/dg_sys_info.h,
+[ac_is_dgux=yes;])
+
+    ## :GOTCHA: we do not check anything but sys/dg_sys_info.h
+if test $ac_is_dgux = yes; then
+    if test "$enable_full_debug" = "yes"; then
+      CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
+      CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
+    else
+      CFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
+      CXXFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
+    fi
+    AC_SUBST(CFLAGS)
+    AC_SUBST(CXXFLAGS)
+fi
+
+dnl We use these options to decide which functions to include.
+AC_ARG_WITH(target-subdir,
+[  --with-target-subdir=SUBDIR
+                          configuring with a cross compiler])
+AC_ARG_WITH(cross-host,
+[  --with-cross-host=HOST  configuring with a cross compiler])
+
+# automake wants to see AC_EXEEXT.  But we don't need it.  And having
+# it is actually a problem, because the compiler we're passed can't
+# necessarily do a full link.  So we fool automake here.
+if false; then
+  # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
+  # to nothing, so nothing would remain between `then' and `fi' if it
+  # were not for the `:' below.
+  :
+  AC_EXEEXT
+fi
+
+AC_MSG_CHECKING([for threads package to use])
+AC_MSG_RESULT($THREADS)
+
+dnl As of 4.13a2, the collector will not properly work on Solaris when
+dnl built with gcc and -O.  So we remove -O in the appropriate case.
+dnl Not needed anymore on Solaris.
+AC_MSG_CHECKING(whether Solaris gcc optimization fix is necessary)
+case "$host" in
+ *aix*)
+    if test "$GCC" = yes; then
+       AC_MSG_RESULT(yes)
+       new_CFLAGS=
+       for i in $CFLAGS; do
+         case "$i" in
+          -O*)
+             ;;
+          *)
+             new_CFLAGS="$new_CFLAGS $i"
+             ;;
+         esac
+       done
+       CFLAGS="$new_CFLAGS"
+    else
+       AC_MSG_RESULT(no)
+    fi
+    ;;
+ *) AC_MSG_RESULT(no) ;;
+esac
+
+dnl We need to override the top-level CFLAGS.  This is how we do it.
+MY_CFLAGS="$CFLAGS"
+AC_SUBST(MY_CFLAGS)
+
+dnl Include defines that have become de facto standard.
+dnl ALL_INTERIOR_POINTERS can be overridden in startup code.
+AC_DEFINE(SILENT)
+AC_DEFINE(NO_SIGNALS)
+AC_DEFINE(NO_EXECUTE_PERMISSION)
+dnl AC_DEFINE(ALL_INTERIOR_POINTERS)
+
+dnl By default, make the library as general as possible.
+AC_DEFINE(JAVA_FINALIZATION)
+AC_DEFINE(GC_GCJ_SUPPORT)
+AC_DEFINE(ATOMIC_UNCOLLECTABLE)
+
+dnl This is something of a hack.  When cross-compiling we turn off
+dnl some functionality.  We also enable the "small" configuration.
+dnl These is only correct when targetting an embedded system.  FIXME.
+if test -n "${with_cross_host}"; then
+   AC_DEFINE(NO_SIGSET)
+   AC_DEFINE(NO_CLOCK)
+   AC_DEFINE(SMALL_CONFIG)
+   AC_DEFINE(NO_DEBUGGING)
+fi
+
+UNWINDLIBS=
+AC_ARG_ENABLE(full-debug,
+[  --enable-full-debug include full support for pointer backtracing etc.],
+[ if test "$enable_full_debug" = "yes"; then
+    AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.")
+    AC_DEFINE(KEEP_BACK_PTRS)
+    AC_DEFINE(DBG_HDRS_ALL)
+    case $host in
+      ia64-*-linux* )
+       AC_DEFINE(MAKE_BACK_GRAPH)
+       AC_DEFINE(SAVE_CALL_COUNT, 8)
+        AC_CHECK_LIB(unwind, backtrace, [
+         AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE)
+         UNWINDLIBS=-lunwind
+         AC_MSG_WARN("Client code may need to link against libunwind.")
+       ])
+      ;;
+      x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
+       AC_DEFINE(MAKE_BACK_GRAPH)
+       AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
+       AC_DEFINE(SAVE_CALL_COUNT, 8)
+      ;;
+      i[3456]86-*-dgux*)
+       AC_DEFINE(MAKE_BACK_GRAPH)
+      ;;
+    esac ]
+  fi)
+
+AC_SUBST(UNWINDLIBS)
+
+AC_ARG_ENABLE(redirect-malloc,
+[  --enable-redirect-malloc  redirect malloc and friends to GC routines])
+
+if test "${enable_redirect_malloc}" = yes; then
+    if test "${enable_full_debug}" = yes; then
+       AC_DEFINE(REDIRECT_MALLOC, GC_debug_malloc_replacement)
+       AC_DEFINE(REDIRECT_REALLOC, GC_debug_realloc_replacement)
+       AC_DEFINE(REDIRECT_FREE, GC_debug_free)
+    else
+       AC_DEFINE(REDIRECT_MALLOC, GC_malloc)
+    fi
+fi
+
+AC_DEFINE(_IN_LIBGC)
+
+AC_ARG_ENABLE(gc-assertions,
+[  --enable-gc-assertions  collector-internal assertion checking])
+if test "${enable_gc_assertions}" = yes; then
+    AC_DEFINE(GC_ASSERTIONS)
+fi
+
+AC_ARG_ENABLE(quiet-build, [  --enable-quiet-build  Enable quiet libgc build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes)
+AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
+
+AC_ARG_ENABLE(werror, [  --enable-werror Pass -Werror to the C compiler], werror_flag=$enableval, werror_flag=no)
+if test x$werror_flag = xyes; then
+       WERROR_CFLAGS="-Werror"
+fi
+AC_SUBST([WERROR_CFLAGS])
+
+if test "${multilib}" = "yes"; then
+  multilib_arg="--enable-multilib"
+else
+  multilib_arg=
+fi
+
+AC_OUTPUT(Makefile
+m4/Makefile
+include/Makefile
+include/private/Makefile
+doc/Makefile,,
+srcdir=${srcdir}
+host=${host}
+CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+CC="${CC}"
+DEFS="$DEFS"
+)
diff --git a/libgc/configure.in b/libgc/configure.in
deleted file mode 100644 (file)
index 837e2cb..0000000
+++ /dev/null
@@ -1,550 +0,0 @@
-# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved.
-# 
-# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
-# OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
-# 
-# Permission is hereby granted to use or copy this program
-# for any purpose,  provided the above notices are retained on all copies.
-# Permission to modify the code and to distribute modified code is granted,
-# provided the above notices are retained, and a notice that the code was
-# modified is included with the above copyright notice.
-#
-# Original author: Tom Tromey
-# Modified by: Grzegorz Jakacki <jakacki at acm dot org>
-
-dnl Process this file with autoconf to produce configure.
-
-AC_PREREQ([2.53])
-AC_INIT([libgc-mono], [6.6], [Hans_Boehm@hp.com])
-
-AM_INIT_AUTOMAKE([1.9 no-define foreign])
-AC_CONFIG_SRCDIR(gcj_mlc.c)
-AC_CONFIG_MACRO_DIR([m4])
-AC_CANONICAL_HOST
-
-AC_SUBST(PACKAGE)
-AC_SUBST(GC_VERSION)
-
-AC_PROG_CC
-AC_PROG_CXX
-
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-dnl automake 1.6 and later need the AM_PROG_AS macro.
-ifdef([AM_PROG_AS],[AM_PROG_AS],[])
-AC_CHECK_TOOL(AR, ar)
-AC_CHECK_TOOL(RANLIB, ranlib, :)  # :)
-
-AC_PROG_INSTALL
-
-AM_MAINTAINER_MODE
-
-. [$]{srcdir}/configure.host
-
-# We use a separate variable to pass down CPPFLAGS and CFLAGS from the main mono 
-# configure, because of autoconf brokeness
-if test "x$CPPFLAGS_FOR_LIBGC" != "x"; then
-   CPPFLAGS=$CPPFLAGS_FOR_LIBGC
-fi
-if test "x$CFLAGS_FOR_LIBGC" != "x"; then
-   CFLAGS=$CFLAGS_FOR_LIBGC
-fi
-
-GC_CFLAGS=${gc_cflags}
-AC_SUBST(GC_CFLAGS)
-
-case $enable_embed_check in
-no) ;;
-*) AC_MSG_ERROR([This module is now part of 'mono' and cannot be built as a stand-alone module any longer.]) ;;
-esac
-
-THREADS=$with_libgc_threads
-
-AC_ARG_ENABLE(win32-dllmain,
-[  --enable-win32-dllmain    Define the DllMain function in win32_threads.c even if the collector is not built as a dll],
-)
-
-AC_ARG_ENABLE(parallel-mark,
-[  --enable-parallel-mark      parallelize marking and free list construction],
-   [case "$THREADS" in
-      no | none | single)
-       AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec])
-       ;;
-    esac]
-)
-
-AC_ARG_ENABLE(cplusplus,
-[  --enable-cplusplus          install C++ support],
-)
-
-AM_CPPFLAGS=-I${srcdir}/include
-THREADDLLIBS=
-## Libraries needed to support dynamic loading and/or threads.
-case "$THREADS" in
- no | none | single)
-    THREADS=none
-    ;;
- posix | pthreads)
-    THREADS=posix
-    AC_CHECK_LIB(pthread, pthread_self, THREADDLLIBS="-lpthread",,)
-    case "$host" in
-     x86-*-linux* | ia64-*-linux* | i386-*-linux* | i486-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha*-*-linux* | s390*-*-linux* | sparc*-*-linux* | powerpc-*-linux*)
-       AC_DEFINE(GC_LINUX_THREADS)
-       AC_DEFINE(_REENTRANT)
-        if test "${enable_parallel_mark}" = yes; then
-         AC_DEFINE(PARALLEL_MARK)
-       fi
-       AC_DEFINE(THREAD_LOCAL_ALLOC)
-       ;;
-     *-*-linux* | *-*-nacl*)
-       AC_DEFINE(GC_LINUX_THREADS)
-       AC_DEFINE(_REENTRANT)
-       ;;
-     *-*-aix*)
-       AC_DEFINE(GC_AIX_THREADS)
-       AC_DEFINE(_REENTRANT)
-       ;;
-     *-*-hpux*)
-       AC_MSG_WARN("Only HP/UX 11 threads are supported.")
-       AC_DEFINE(GC_HPUX_THREADS)
-       AC_DEFINE(_POSIX_C_SOURCE,199506L)
-       if test "${enable_parallel_mark}" = yes; then
-         AC_DEFINE(PARALLEL_MARK)
-       fi
-       AC_DEFINE(THREAD_LOCAL_ALLOC)
-       THREADDLLIBS="-lpthread -lrt"
-       ;;
-      *-*-freebsd*)
-       AC_DEFINE(GC_FREEBSD_THREADS)
-       if test "x$PTHREAD_CFLAGS" != "x"; then
-               AM_CPPFLAGS="$AM_CPPFLAGS $PTHREAD_CFLAGS"
-       fi
-       if test "x$PTHREAD_LIBS" = "x"; then
-               THREADDLLIBS=-pthread
-       else
-               THREADDLLIBS="$PTHREAD_LIBS"
-       fi
-       AC_DEFINE(THREAD_LOCAL_ALLOC)
-       ;;
-     *-*-solaris*)
-       AC_DEFINE(GC_SOLARIS_THREADS)
-       AC_DEFINE(GC_SOLARIS_PTHREADS)
-       ;;
-     *-*-irix*)
-       AC_DEFINE(GC_IRIX_THREADS)
-       ;;
-     *-*-cygwin*)
-       AC_DEFINE(GC_WIN32_THREADS)
-       ;;
-     *-*-darwin*)
-       AC_DEFINE(GC_DARWIN_THREADS)
-       AC_DEFINE(THREAD_LOCAL_ALLOC)
-       if test "${enable_parallel_mark}" = yes; then
-         AC_DEFINE(PARALLEL_MARK)
-       fi
-       ;;
-     *-*-netbsd*)
-       AC_DEFINE(GC_NETBSD_THREADS)
-       if test "${enable_parallel_mark}" = yes; then
-         AC_DEFINE(PARALLEL_MARK)
-       fi
-       AC_DEFINE(THREAD_LOCAL_ALLOC)
-       ;;
-     *-*-openbsd*)
-       AC_DEFINE(GC_OPENBSD_THREADS)
-       if test "${enable_parallel_mark}" = yes; then
-         AC_DEFINE(PARALLEL_MARK)
-       fi
-       AC_DEFINE(THREAD_LOCAL_ALLOC)
-       ;;
-     *-*-osf*)
-       AC_DEFINE(GC_OSF1_THREADS)
-        if test "${enable_parallel_mark}" = yes; then
-         AC_DEFINE(PARALLEL_MARK)
-         AC_DEFINE(THREAD_LOCAL_ALLOC)
-         # May want to enable it in other cases, too.
-         # Measurements havent yet been done.
-       fi
-       AM_CPPFLAGS="$AM_CPPFLAGS -pthread"
-       THREADDLLIBS="-lpthread -lrt"
-       ;;
-      *)
-       AC_MSG_ERROR("Pthreads not supported by the GC on this platform.")
-       ;;
-    esac
-    ;;
- win32)
-    AC_DEFINE(GC_WIN32_THREADS)
-    dnl Wine getenv may not return NULL for missing entry
-    AC_DEFINE(NO_GETENV)
-       if test "${enable_win32_dllmain}" = yes; then
-          AC_DEFINE(GC_INSIDE_DLL)
-       fi
-    ;;
- dgux386)
-    THREADS=dgux386
-    AC_MSG_RESULT($THREADDLLIBS)
-    # Use pthread GCC  switch
-    THREADDLLIBS=-pthread
-    if test "${enable_parallel_mark}" = yes; then
-        AC_DEFINE(PARALLEL_MARK)
-    fi
-    AC_DEFINE(THREAD_LOCAL_ALLOC)
-    AC_DEFINE(GC_DGUX386_THREADS)
-    AC_DEFINE(DGUX_THREADS)
-    # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread
-    AM_CPPFLAGS="-pthread $AM_CPPFLAGS"
-    ;;
- aix)
-    THREADS=posix
-    THREADDLLIBS=-lpthread
-    AC_DEFINE(GC_AIX_THREADS)
-    AC_DEFINE(_REENTRANT)
-    ;;
- decosf1 | irix | mach | os2 | solaris | dce | vxworks)
-    AC_MSG_ERROR(thread package $THREADS not yet supported)
-    ;;
- *)
-    AC_MSG_ERROR($THREADS is an unknown thread package)
-    ;;
-esac
-AC_SUBST(THREADDLLIBS)
-
-case "$host" in 
-   powerpc-*-darwin*)
-      powerpc_darwin=true
-      ;;
-esac
-AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue)
-
-# Check if the GCC builtin __sync_bool_compare_and_swap is available.
-# It is preferred in gc_locks.h for PPC as GCC 4.4 has a problem with the inline assembly there.
-AC_MSG_CHECKING(for __sync_bool_compare_and_swap)
-AC_TRY_COMPILE([],[
-volatile unsigned int foo = 0;
-int main(int argc, char** argv) {
-    unsigned int r1 = __sync_bool_compare_and_swap(&foo, 0, 1);
-    return 0;
-}
-], [
-AC_MSG_RESULT(yes)
-AC_DEFINE(HAS___SYNC_BOOL_COMPARE_AND_SWAP)
-], [
-AC_MSG_RESULT(no)
-])
-
-AC_MSG_CHECKING(for xlc)
-AC_TRY_COMPILE([],[
- #ifndef __xlC__
- # error
- #endif
-], [compiler_xlc=yes], [compiler_xlc=no])
-AC_MSG_RESULT($compiler_xlc)
-AM_CONDITIONAL(COMPILER_XLC,test $compiler_xlc = yes)
-if test $compiler_xlc = yes -a "$powerpc_darwin" = true; then
-  # the darwin stack-frame-walking code is completely broken on xlc
-  AC_DEFINE(DARWIN_DONT_PARSE_STACK)
-fi
-
-# We never want libdl on darwin. It is a fake libdl that just ends up making
-# dyld calls anyway
-case "$host" in
-  *-*-darwin*) ;;
-  *) 
-    AC_CHECK_LIB(dl, dlopen, THREADDLLIBS="$THREADDLLIBS -ldl")
-    ;;
-esac
-
-AC_SUBST(EXTRA_TEST_LIBS)
-
-target_all=libgc.la
-AC_SUBST(target_all)
-
-dnl If the target is an eCos system, use the appropriate eCos
-dnl I/O routines.
-dnl FIXME: this should not be a local option but a global target
-dnl system; at present there is no eCos target.
-TARGET_ECOS="no"
-AC_ARG_WITH(ecos,
-[  --with-ecos             enable runtime eCos target support],
-TARGET_ECOS="$with_ecos"
-)
-
-addobjs=
-addlibs=
-addincludes=
-addtests=
-CXXAM_CPPFLAGS=
-case "$TARGET_ECOS" in
-   no)
-      ;;
-   *)
-      AC_DEFINE(ECOS)
-      CXXINCLUDES="-I${TARGET_ECOS}/include"
-      addobjs="$addobjs ecos.lo"
-      ;;
-esac
-
-if test "${enable_cplusplus}" = yes; then
-      addincludes="$addincludes include/gc_cpp.h include/gc_allocator.h"
-      addtests="$addtests test_cpp"
-fi
-
-AM_CONDITIONAL(CPLUSPLUS, test "${enable_cplusplus}" = yes)
-
-AC_SUBST(CXX)
-
-AC_SUBST(AM_CPPFLAGS)
-AC_SUBST(CXXINCLUDES)
-
-# Configuration of shared libraries
-#
-AC_MSG_CHECKING(whether to build shared libraries)
-AC_ENABLE_SHARED
-
-case "$host" in
- alpha-*-openbsd*)
-     enable_shared=no
-     AC_MSG_RESULT(no)
-     ;;
- *)
-     AC_MSG_RESULT(yes)
-     ;;
-esac
-
-# Configuration of machine-dependent code
-#
-AC_MSG_CHECKING(which machine-dependent code should be used) 
-machdep=
-case "$host" in
- alpha-*-openbsd*)
-    machdep="alpha_mach_dep.lo"
-    if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
-       AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled)
-    fi
-    ;;
- alpha*-*-linux*)
-    machdep="alpha_mach_dep.lo"
-    ;;
- i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?)
-    AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED)
-    ;;
- mipstx39-*-elf*)
-    machdep="mips_ultrix_mach_dep.lo"
-    AC_DEFINE(STACKBASE, __stackbase)
-    AC_DEFINE(DATASTART_IS_ETEXT)
-    ;;
- mips-dec-ultrix*)
-    machdep="mips_ultrix_mach-dep.lo"
-    ;;
- mips-nec-sysv*|mips-unknown-sysv*)
-    ;;
- mips*-*-linux*) 
-    ;; 
- mips-*-*)
-    machdep="mips_sgi_mach_dep.lo"
-    AC_DEFINE(NO_EXECUTE_PERMISSION)
-    ;;
- sparc-*-netbsd*)
-    machdep="sparc_netbsd_mach_dep.lo"
-    ;;
- sparc-sun-solaris2.3)
-    machdep="sparc_mach_dep.lo"
-    AC_DEFINE(SUNOS53_SHARED_LIB)
-    ;;
- sparc*-sun-solaris2.*)
-    machdep="sparc_mach_dep.lo"
-    ;;
- ia64-*-*)
-     machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
-       target_ia64=true
-    ;;
- *-*-nacl*)
-    AC_DEFINE(NO_EXECUTE_PERMISSION)
-    ;;
-esac
-if test x"$machdep" = x; then
-AC_MSG_RESULT($machdep)
-   machdep="mach_dep.lo"
-fi
-addobjs="$addobjs $machdep"
-#
-# Adding object files directly to _LIBADD breaks -j builds, so we need to add the sources
-# instead, but _SOURCES can't contain autoconf substitutions, so add them using automake
-# conditionals.
-#
-#AC_SUBST(addobjs)
-AC_SUBST(addincludes)
-AC_SUBST(addlibs)
-AC_SUBST(addtests)
-
-AM_CONDITIONAL(TARGET_IA64,test x$target_ia64 = xtrue)
-
-AC_PROG_LIBTOOL
-# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.
-DOLT
-
-#
-# Check for AViiON Machines running DGUX
-#
-ac_is_dgux=no
-AC_CHECK_HEADER(sys/dg_sys_info.h,
-[ac_is_dgux=yes;])
-
-    ## :GOTCHA: we do not check anything but sys/dg_sys_info.h
-if test $ac_is_dgux = yes; then
-    if test "$enable_full_debug" = "yes"; then
-      CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
-      CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
-    else
-      CFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
-      CXXFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
-    fi
-    AC_SUBST(CFLAGS)
-    AC_SUBST(CXXFLAGS)
-fi
-
-dnl We use these options to decide which functions to include.
-AC_ARG_WITH(target-subdir,
-[  --with-target-subdir=SUBDIR
-                          configuring with a cross compiler])
-AC_ARG_WITH(cross-host,
-[  --with-cross-host=HOST  configuring with a cross compiler])
-
-# automake wants to see AC_EXEEXT.  But we don't need it.  And having
-# it is actually a problem, because the compiler we're passed can't
-# necessarily do a full link.  So we fool automake here.
-if false; then
-  # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
-  # to nothing, so nothing would remain between `then' and `fi' if it
-  # were not for the `:' below.
-  :
-  AC_EXEEXT
-fi
-
-AC_MSG_CHECKING([for threads package to use])
-AC_MSG_RESULT($THREADS)
-
-dnl As of 4.13a2, the collector will not properly work on Solaris when
-dnl built with gcc and -O.  So we remove -O in the appropriate case.
-dnl Not needed anymore on Solaris.
-AC_MSG_CHECKING(whether Solaris gcc optimization fix is necessary)
-case "$host" in
- *aix*)
-    if test "$GCC" = yes; then
-       AC_MSG_RESULT(yes)
-       new_CFLAGS=
-       for i in $CFLAGS; do
-         case "$i" in
-          -O*)
-             ;;
-          *)
-             new_CFLAGS="$new_CFLAGS $i"
-             ;;
-         esac
-       done
-       CFLAGS="$new_CFLAGS"
-    else
-       AC_MSG_RESULT(no)
-    fi
-    ;;
- *) AC_MSG_RESULT(no) ;;
-esac
-
-dnl We need to override the top-level CFLAGS.  This is how we do it.
-MY_CFLAGS="$CFLAGS"
-AC_SUBST(MY_CFLAGS)
-
-dnl Include defines that have become de facto standard.
-dnl ALL_INTERIOR_POINTERS can be overridden in startup code.
-AC_DEFINE(SILENT)
-AC_DEFINE(NO_SIGNALS)
-AC_DEFINE(NO_EXECUTE_PERMISSION)
-dnl AC_DEFINE(ALL_INTERIOR_POINTERS)
-
-dnl By default, make the library as general as possible.
-AC_DEFINE(JAVA_FINALIZATION)
-AC_DEFINE(GC_GCJ_SUPPORT)
-AC_DEFINE(ATOMIC_UNCOLLECTABLE)
-
-dnl This is something of a hack.  When cross-compiling we turn off
-dnl some functionality.  We also enable the "small" configuration.
-dnl These is only correct when targetting an embedded system.  FIXME.
-if test -n "${with_cross_host}"; then
-   AC_DEFINE(NO_SIGSET)
-   AC_DEFINE(NO_CLOCK)
-   AC_DEFINE(SMALL_CONFIG)
-   AC_DEFINE(NO_DEBUGGING)
-fi
-
-UNWINDLIBS=
-AC_ARG_ENABLE(full-debug,
-[  --enable-full-debug include full support for pointer backtracing etc.],
-[ if test "$enable_full_debug" = "yes"; then
-    AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.")
-    AC_DEFINE(KEEP_BACK_PTRS)
-    AC_DEFINE(DBG_HDRS_ALL)
-    case $host in
-      ia64-*-linux* )
-       AC_DEFINE(MAKE_BACK_GRAPH)
-       AC_DEFINE(SAVE_CALL_COUNT, 8)
-        AC_CHECK_LIB(unwind, backtrace, [
-         AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE)
-         UNWINDLIBS=-lunwind
-         AC_MSG_WARN("Client code may need to link against libunwind.")
-       ])
-      ;;
-      x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
-       AC_DEFINE(MAKE_BACK_GRAPH)
-       AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
-       AC_DEFINE(SAVE_CALL_COUNT, 8)
-      ;;
-      i[3456]86-*-dgux*)
-       AC_DEFINE(MAKE_BACK_GRAPH)
-      ;;
-    esac ]
-  fi)
-
-AC_SUBST(UNWINDLIBS)
-
-AC_ARG_ENABLE(redirect-malloc,
-[  --enable-redirect-malloc  redirect malloc and friends to GC routines])
-
-if test "${enable_redirect_malloc}" = yes; then
-    if test "${enable_full_debug}" = yes; then
-       AC_DEFINE(REDIRECT_MALLOC, GC_debug_malloc_replacement)
-       AC_DEFINE(REDIRECT_REALLOC, GC_debug_realloc_replacement)
-       AC_DEFINE(REDIRECT_FREE, GC_debug_free)
-    else
-       AC_DEFINE(REDIRECT_MALLOC, GC_malloc)
-    fi
-fi
-
-AC_DEFINE(_IN_LIBGC)
-
-AC_ARG_ENABLE(gc-assertions,
-[  --enable-gc-assertions  collector-internal assertion checking])
-if test "${enable_gc_assertions}" = yes; then
-    AC_DEFINE(GC_ASSERTIONS)
-fi
-
-AC_ARG_ENABLE(quiet-build, [  --enable-quiet-build  Enable quiet libgc build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes)
-AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
-
-if test "${multilib}" = "yes"; then
-  multilib_arg="--enable-multilib"
-else
-  multilib_arg=
-fi
-
-AC_OUTPUT(Makefile
-m4/Makefile
-include/Makefile
-include/private/Makefile
-doc/Makefile,,
-srcdir=${srcdir}
-host=${host}
-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-CC="${CC}"
-DEFS="$DEFS"
-)
index a19cb3021b0aa9568f3ec265e4aca5a2961606ce..eaba6e509d36612d6258fbd20f6f56f8b2fff744 100644 (file)
@@ -6,7 +6,7 @@ Copyright (c) 1999-2004 Hewlett-Packard Development Company, L.P.
 The file linux_threads.c is also
 Copyright (c) 1998 by Fergus Henderson.  All rights reserved.
 
-The files Makefile.am, and configure.in are
+The files Makefile.am, and configure.ac are
 Copyright (c) 2001 by Red Hat Inc. All rights reserved.
 
 Several files supporting GNU-style builds are copyrighted by the Free
index 97b0b684dde5b556750993056e3240d3bee1c2f5..fa6f279f518a5fac4b4778e9e869e4d82bb0539c 100644 (file)
@@ -1269,7 +1269,7 @@ Since 6.0alpha6:
    many places.  (Thanks to Benjamin Lerman.)
  - Made win32_threads.c more tolerant of detaching a thread that it didn't
    know about.  (Thanks to Paul Nash.)
- - Added Makefile.am and configure.in from gcc to the distribution, with
+ - Added Makefile.am and configure.ac from gcc to the distribution, with
    minimal changes.  For the moment, those are just placeholders.  In the
    future, we're planning to switch to a GNU-style build environment for
    Un*x-like systems, though the old Makefile will remain as a backup.
@@ -1491,7 +1491,7 @@ Since 6.1alpha3:
  - Fixed a formatting error in dbg_mlc.c.  Added prototype to GC_abort()
    declaration.   (Thanks to Michael Smith.)
  - Removed "source" argument to GC_find_start().  Eliminate GC_FIND_START().
- - Added win32 recognition code in configure.in.  Changed some of the
+ - Added win32 recognition code in configure.ac.  Changed some of the
    dllimport/export defines in gc.h.  (Thanks to Adam Megacz.)
  - GC_malloc_many didn't set hb_last_reclaimed when it called 
    GC_reclaim_generic.  (I'm not sure this matters much, but ...)
@@ -1629,7 +1629,7 @@ Since 6.1alpha4:
 
 Since 6.1alpha5:
  - Added GC_MAXIMUM_HEAP_SIZE environment variable.
- - Fix configure.in for MIPS/LINUX. (Thanks to H.J. Lu.)
+ - Fix configure.ac for MIPS/LINUX. (Thanks to H.J. Lu.)
  - Double page hash table size for -DLARGE_CONFIG.
  - Integrated Bo Thorsen's X86-64 support.
  - STACKBOTTOM definition for LINUX/MIPS was partially changed back.
@@ -1942,7 +1942,7 @@ Since 6.3alpha1:
    There is also still some code duplication with pthread_support.c.
    (Thread descriptors did become much smaller, since Ben Hutchings
    removed the thread context from them.)
- - Integrated a Solaris configure.in patch from Rainer Orth.
+ - Integrated a Solaris configure.ac patch from Rainer Orth.
  - Added GC_IGNORE_FB and associated warning to very partially address
    the issue of the collector treating a mapped frame buffer as part
    of the root set.  (Thanks to David Peroutka for providing some
@@ -2151,7 +2151,7 @@ Since 6.3:
    it seems to be incorrect if the preceding memory op is a load.
  - Fixed print_block_list to print the correct kind number for
    STUBBORN.  (Thanks to Rutger Ovidus.)
- - Have configure.in generate an error if it is asked to support
+ - Have configure.ac generate an error if it is asked to support
    pthreads, but doesn't know how to.
  - Added Kazuhiro Inaoka's patch for Renesas M32R support.
  - Have the GNU build mechanism link with -ldl.  Rename THREADLIBS
index 91f6970180cd26352a864464a0ac44184d2a07ce..5626e8721370071bbefdbfb1710911b86a17bb50 100644 (file)
@@ -366,6 +366,15 @@ GC_process_togglerefs (void)
        GC_toggleref_array_size = w;
 }
 
+/* Finalizer proc support */
+static void (*GC_object_finalized_proc) (GC_PTR obj);
+
+void
+GC_set_finalizer_notify_proc (void (*proc) (GC_PTR obj))
+{
+       GC_object_finalized_proc = proc;
+}
+
 
 static void push_and_mark_object (GC_PTR p)
 {
@@ -877,6 +886,10 @@ void GC_finalize()
                 fo_set_next(prev_fo, next_fo);
               }
               GC_fo_entries--;
+
+                         if (GC_object_finalized_proc)
+                                 GC_object_finalized_proc (real_ptr);
+
             /* Add to list of objects awaiting finalization.   */
               fo_set_next(curr_fo, GC_finalize_now);
               GC_finalize_now = curr_fo;
index a3eb3c2dc06e35ff79ed87bf223c85131c8b412a..4693a3d9a5416248700084c6acbb32d2ba3028d4 100644 (file)
@@ -778,6 +778,10 @@ GC_API int GC_unregister_long_link GC_PROTO((GC_PTR * /* link */));
 GC_API void GC_toggleref_register_callback GC_PROTO((int (*proccess_toggleref) (GC_PTR obj)));
 GC_API void GC_toggleref_add (GC_PTR object, int strong_ref);
 
+/* finalizer callback support */
+GC_API void GC_set_finalizer_notify_proc GC_PROTO((void (*object_finalized) (GC_PTR obj)));
+
+
 /* Returns !=0  if GC_invoke_finalizers has something to do.           */
 GC_API int GC_should_invoke_finalizers GC_PROTO((void));
 
index 4074879a71aa90d1f8e638b9ce7521573939bfb4..b3e996a29c2d51645a8cd9374ff53194dad84e7d 100644 (file)
@@ -375,8 +375,15 @@ ptr_t GC_approx_sp()
                /* doing something wrong.                               */
 #   ifdef _MSC_VER
 #     pragma warning(disable:4172)
+#   endif
+#   if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 408)
+#     pragma GCC diagnostic push
+#     pragma GCC diagnostic ignored "-Wreturn-local-addr"
 #   endif
     return((ptr_t)(&dummy));
+#   if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 408)
+#      pragma GCC diagnostic pop
+#   endif
 #   ifdef _MSC_VER
 #     pragma warning(default:4172)
 #   endif
index e1fe24bd0abe84e8b3f15b950721c724ec612f20..9fcbb7b651fb0e5be116c17ecbf954b19c90c8d6 100644 (file)
@@ -1,4 +1,4 @@
-/* The version here should match that in configure/configure.in        */
+/* The version here should match that in configure/configure.ac        */
 /* Eventually this one may become unnecessary.  For now we need        */
 /* it to keep the old-style build process working.             */
 #define GC_TMP_VERSION_MAJOR 6
@@ -14,7 +14,7 @@
      GC_TMP_VERSION_MINOR != GC_VERSION_MINOR || \
      defined(GC_ALPHA_VERSION) != (GC_TMP_ALPHA_VERSION != GC_NOT_ALPHA) || \
      defined(GC_ALPHA_VERSION) && GC_TMP_ALPHA_VERSION != GC_ALPHA_VERSION
-#   error Inconsistent version info.  Check README, version.h, and configure.in.
+#   error Inconsistent version info.  Check README, version.h, and configure.ac.
 # endif
 #else
 # define GC_VERSION_MAJOR GC_TMP_VERSION_MAJOR
index de40af60d8ea88d0ae94ae42420f5a42295a8e6f..4b1b7816817ae65a643c4eda775415fee81c769f 100644 (file)
@@ -211,6 +211,15 @@ The following commands are available:
 .IP \[bu] 2
 \f[I]heapshot\f[]: perform a heapshot as soon as possible
 .RE
+.IP \[bu] 2
+\f[I]counters\f[]: sample counters values every 1 second. This allow
+a really lightweight way to have insight in some of the runtime key
+metrics. Counters displayed in non verbose mode are : Methods from AOT,
+Methods JITted using mono JIT, Methods JITted using LLVM, Total time
+spent JITting (sec), User Time, System Time, Total Time, Working Set,
+Private Bytes, Virtual Bytes, Page Faults and CPU Load Average (1min,
+5min and 15min).
+.RE
 .SS Analyzing the profile data
 .PP
 Currently there is a command line program (\f[I]mprof-report\f[])
@@ -284,6 +293,16 @@ where \f[I]MODE\f[] can be:
 .IP \[bu] 2
 \f[I]bytes\f[]: the total number of bytes used by objects of the
 given type
+.PP
+To change the sort order of counters, use the option:
+.PP
+\f[B]--counters-sort=MODE\f[]
+.PP
+where \f[I]MODE\f[] can be:
+.IP \[bu] 2
+\f[I]time\f[]: sort values by time then category
+.IP \[bu] 2
+\f[I]category\f[]: sort values by category then time
 .SS Selecting what data to report
 .PP
 The profiler by default collects data about many runtime subsystems
@@ -319,6 +338,8 @@ version
 \f[I]thread\f[]: thread information
 .IP \[bu] 2
 \f[I]heapshot\f[]: live heap usage at heap shots
+.IP \[bu] 2
+\f[I]counters\f[]: counters samples
 .PP
 It is possible to limit some of the data displayed to a timeframe
 of the program execution with the option:
index 1d2a512447d401388f5a48aa7585e86384bb7f36..a576ba602dbff7e642312899cdcacb52ee3a3d13 100644 (file)
@@ -11,7 +11,7 @@
 tests_CLEAN_FILES := 
 
 ifndef TEST_COMPILE
-TEST_COMPILE = $(CSCOMPILE)
+TEST_COMPILE = $(subst $(test_remove),,$(CSCOMPILE))
 endif
 
 TEST_RUNTIME_WRAPPERS_PATH = $(shell dirname $(RUNTIME))/_tmpinst/bin
index 46ab1607ccb3595678a8bddb3d4a7624ffb817b3..28d5043dcd403d9e039ee2a51db20a3fc15e61fe 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
@@ -73,7 +74,7 @@
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1e11dffd26006e303e1714e2b2ea50b52f3c2169..c390f2dbcffc31536c45c4ea8ee8a887b4482f86 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index d249b5528d58cf023f599b670515e976b5a8e4fd..a2783d9b1d54bc5e0a44487ce3a28f44995d51a3 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index d53213ae9151e5638263e1c4b9e5809b8c68b72f..b655375597406c6fb5cf1adf0a625770b4d12abf 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index a529f198e095830dcb7a6739ed10759f1d5819a8..5477c74d8242ad4001b1a8556c0841654d36daa6 100644 (file)
     <AssemblyName>EntityFramework.SqlServer</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../ecma.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../EntityFramework/EntityFramework-net_4_5.csproj">\r
       <Project>{CEE31F03-087E-4164-BBD4-990759B40C3E}</Project>\r
-      <Name>EntityFramework\EntityFramework-net_4_5</Name>\r
+      <Name>EntityFramework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 7c81911b07f2c99fcbc7a82731ae8510b09d6493..c99f52bcf5bab108783c0a9d83c97ea9d02a2f9e 100644 (file)
     <AssemblyName>EntityFramework</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../ecma.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
       <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
+      <Name>System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
       <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
+      <Name>System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
       <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
+      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj">\r
       <Project>{D554618C-5D38-413A-82BA-7A70B6FC61A3}</Project>\r
-      <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
+      <Name>Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 8f6854869c6129af981e846ac42138031667b882..ffdea4c751cc43b7e65000974c3a907311bc8eec 100644 (file)
@@ -8,7 +8,7 @@ monotouch_SUBDIRS = System.Collections.Concurrent System.Collections System.Comp
        System.Reflection.Extensions System.Reflection.Primitives System.Reflection System.Resources.ResourceManager System.Runtime.Extensions \
        System.Runtime.InteropServices System.Runtime.InteropServices.WindowsRuntime System.Runtime.Numerics System.Runtime.Serialization.Json \
        System.Runtime.Serialization.Primitives System.Runtime.Serialization.Xml System.Runtime System.Security.Principal System.ServiceModel.Http \
-       System.ServiceModel.Primitives System.Text.Encoding.Extensions System.Text.Encoding System.Text.RegularExpressions System.Threading.Tasks.Parallel \
+       System.ServiceModel.Primitives System.ServiceModel.Security System.Text.Encoding.Extensions System.Text.Encoding System.Text.RegularExpressions System.Threading.Tasks.Parallel \
        System.Threading.Tasks System.Threading.Timer System.Threading System.Xml.ReaderWriter System.Xml.XDocument System.Xml.XmlSerializer
 
 mobile_static_SUBDIRS = $(monotouch_SUBDIRS)
@@ -45,6 +45,7 @@ include $(MCS_BUILD_DIR)/rules.make
 
 dist-local: dist-default
 
+SUBDIRS = $(net_4_5_SUBDIRS)
 
 doc-update-local:
        @echo "not doing docs"
index fe9af8668366e9a24453a45afa03f0b37611e34b..785ae325924d4b70d7956a7b8d0c88c5b8993249 100644 (file)
     <AssemblyName>System.Collections.Concurrent</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 07f594f6fab697456b7755fdae34b91744740ea8..7739de83730b105dafb0dcef34d606e1c24009b3 100644 (file)
     <AssemblyName>System.Collections</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 79124c6c016ee4cbf8aa0011b0813d24e7a07cbc..11fd690cf1aa51e2b5a9c766034bf69f8c33dc9d 100644 (file)
     <AssemblyName>System.ComponentModel.Annotations</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
       <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
+      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index f400ebc980e6563b7f6f5eae8f9eeba4cdc1df87..e524ac8f8f3508c378b79457b9c1d73d70207d2b 100644 (file)
     <AssemblyName>System.ComponentModel.EventBasedAsync</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 524b35472f36b82492f5937ec530a86a6abef389..0ad13cf5122b9658e5cd1af1a94f4441f40cfebc 100644 (file)
     <AssemblyName>System.ComponentModel</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index bff7c5e0ca2ee4a3fd3ba75106b73affc7944754..115c3e065c25b5c5faa45f8b3493b5b770966c8b 100644 (file)
     <AssemblyName>System.Diagnostics.Contracts</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 5a9d868f231384a1e7c50132c1e40489a2152bd1..7b44d0996db8b851a3b0bb92251a5d33bd8ab236 100644 (file)
     <AssemblyName>System.Diagnostics.Debug</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 4aa4baa76da94f6f2e9c86f04155baddff2ed6cc..cf5c5e745e2b30f3f3eb0a9d422fa0b934eeaf0b 100644 (file)
     <AssemblyName>System.Diagnostics.Tools</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 71078ed61e1a0c24f061e47489c9d4851e723ee3..8182d201d8c47fb8cb7f53a922d7391647b80cf7 100644 (file)
     <AssemblyName>System.Diagnostics.Tracing</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index dc0b78b8814a87c373ede1caa2d844ea455b4a0c..529847be7b5f47e433e105ecadd9e36d0d1637bc 100644 (file)
     <AssemblyName>System.Dynamic.Runtime</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c13d0b502ae20f642adc461b96fb8855cae0d5c5..67df5249ef75d11c0ad3151060870cbee8c80052 100644 (file)
     <AssemblyName>System.Globalization</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 7a70db9f819a4e3d9be830945ba50f9cc40d6610..596ecf7afb0480cd51a285f9b1412682d821e1ae 100644 (file)
     <AssemblyName>System.IO</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 870d659ad1d8646edbaf4a8472cf0358b3ed5aaf..5467fc471c58a459939843e6dc1b7fee421f2610 100644 (file)
     <AssemblyName>System.Linq.Expressions</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 069b01b11714f3ff3bd82023c56c8b39c391f574..dea40f73f627c9f380b70346b93950d8b21147d7 100644 (file)
     <AssemblyName>System.Linq.Parallel</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 775bafd6e70f3f7cfd3f43492d206ce03459f339..be8d341330749a99aa38551e621c5d2fbf8a371d 100644 (file)
     <AssemblyName>System.Linq.Queryable</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c1f86a6f12e81756f676cd4a3043ac99e579637e..a674a868fede1e847ef4407cef6f8476866160ca 100644 (file)
     <AssemblyName>System.Linq</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index a4b3d4beca232394bf9f81097b889abf5dd85cd2..214fb1cd476332146e886696408af0515c999059 100644 (file)
     <AssemblyName>System.Net.NetworkInformation</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index bb9e054295b0d47026b98c679f8fcb1bc6215dc1..adaab1def69cb88c3b57c968a5aae23b75ffd9c4 100644 (file)
     <AssemblyName>System.Net.Primitives</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index d3afb5203e4da6b733fd11299a313ec1d6177bea..09b309af64ae5941381b1f59608332ee209e3e2a 100644 (file)
     <AssemblyName>System.Net.Requests</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c720b82c313276001329866961e1bd52ca59268b..3c290c07e38ed32d4d48dbb3b23f4729e22fe6b7 100644 (file)
     <AssemblyName>System.ObjectModel</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index f3a01fa4e8b8f5b30e6575df7be5c70103d9e15b..18738869be0fc150cd257d39b62d63654d10f034 100644 (file)
     <AssemblyName>System.Reflection.Emit.ILGeneration</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 5e37de37c886dca92545729b7d064921948a1d38..62ea08f2ffa67090ed5885522ab77f7efb87aa87 100644 (file)
     <AssemblyName>System.Reflection.Emit.Lightweight</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 185c48c77e486c42280560221d6ad4809b747376..1a1743fbd9b05c7a9f9406a1ddd19ca9af3c3d1d 100644 (file)
     <AssemblyName>System.Reflection.Emit</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index e60886ccf444eadf99cc6c7100d7cb6c1e034678..6b5fa509b447bcaf3ff152628d87afcfde3d158d 100644 (file)
     <AssemblyName>System.Reflection.Extensions</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1ba5bdedbc3390f2bf71895836af8ebfe75be377..3d4df95f0f93d5dd3857285d789b6fc2a4441b10 100644 (file)
     <AssemblyName>System.Reflection.Primitives</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index eb4cd6e075b5a6fd74b14fa81f86962a0bfd5cdd..82b4dbdd6c63c327c2a0833c035d6874418857b3 100644 (file)
     <AssemblyName>System.Reflection</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 0fc45e22ee46f3fc2ca964eac9a06a2d95d2ca60..9625feac8b7ddbf91f0078dab59d8af7d2fd0611 100644 (file)
     <AssemblyName>System.Resources.ResourceManager</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 2c7de2ddcde5f8ff4f2eabecbb50d49a87b4a2ff..cb8249005dd9b664fb72eaf184f73891b96bab09 100644 (file)
     <AssemblyName>System.Runtime.Extensions</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 05c287dd3a95d10d1284c9e931594c319bf8db28..35c6e825d291c8f9fe43ad75a409d8f140239e7f 100644 (file)
     <AssemblyName>System.Runtime.InteropServices.WindowsRuntime</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 00fa6b3eb601c2ca6a86fa114b83b5553627c6b9..f28fddd49b11d5a2e3b04ae559a35cc89ba65030 100644 (file)
     <AssemblyName>System.Runtime.InteropServices</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index cd4e31882ffc0a3551b14e5d77748ec027dfc451..650e2d7ff296b1393860746049b01a2fbc32c8a3 100644 (file)
     <AssemblyName>System.Runtime.Numerics</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Numerics/System.Numerics-net_4_5.csproj">\r
       <Project>{14631AC9-FDC6-4561-A04C-6913947C939E}</Project>\r
-      <Name>System.Numerics\System.Numerics-net_4_5</Name>\r
+      <Name>System.Numerics-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index a880c8b76d5a14b9a0475bab1edc3866b569c864..1208c6450e4c681b2e33015418a1330bf49f93e3 100644 (file)
     <AssemblyName>System.Runtime.Serialization.Json</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 83f042e51e43b9429eb6cbef67ab496e0b3ff70f..1e4d995779924e41db9354f773ec2f418e6690dd 100644 (file)
     <AssemblyName>System.Runtime.Serialization.Primitives</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 3ce07ff9374ec85a9672823f45dbdd0df6e92986..8b6f6eb33839c3f01074117caaf0b0d3393eb9e1 100644 (file)
     <AssemblyName>System.Runtime.Serialization.Xml</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1ff2f7c3e6037f470677b01f39a249651eb01fd1..d8192f88f4f33a273f0a446b360388b79d89fd94 100644 (file)
     <AssemblyName>System.Runtime</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_5.csproj">\r
       <Project>{51392CAD-5DCF-443F-8ECF-C9113DF3B91A}</Project>\r
-      <Name>System.ComponentModel.Composition\System.ComponentModel.Composition-net_4_5</Name>\r
+      <Name>System.ComponentModel.Composition-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index aa6669d68c9a84adfcd5a78c213f6bf591b33f27..a4cbb6299c9d8165be8b78055cfdb3fb73277cde 100644 (file)
     <AssemblyName>System.Security.Principal</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 0a2b1b579c51c158ece6c7f3564f3aeb5201eb54..d66906dce8ab5b8b2fd0e29c92e82e489a48c152 100644 (file)
     <AssemblyName>System.ServiceModel.Http</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 9fc9038ac51a762841646e974b5c26d0c760538e..d0cb63b3eae1d0cf6f767f635ae4118b6c8ad215 100644 (file)
     <AssemblyName>System.ServiceModel.Primitives</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
diff --git a/mcs/class/Facades/System.ServiceModel.Security/AssemblyInfo.cs b/mcs/class/Facades/System.ServiceModel.Security/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..f222e8b
--- /dev/null
@@ -0,0 +1,41 @@
+// 
+// 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.Security.dll")]
+[assembly: AssemblyDescription ("System.ServiceModel.Security.dll")]
+[assembly: AssemblyDefaultAlias ("System.ServiceModel.Security.dll")]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
+
+
diff --git a/mcs/class/Facades/System.ServiceModel.Security/Makefile b/mcs/class/Facades/System.ServiceModel.Security/Makefile
new file mode 100644 (file)
index 0000000..b021eff
--- /dev/null
@@ -0,0 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
+thisdir = class/Facades/System.ServiceModel.Security
+SUBDIRS = 
+include $(MCS_BUILD_DIR)/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ServiceModel.Security.dll
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.ServiceModel
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include $(MCS_BUILD_DIR)/library.make
+
+
diff --git a/mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security.dll.sources b/mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security.dll.sources
new file mode 100644 (file)
index 0000000..8e33d4d
--- /dev/null
@@ -0,0 +1,3 @@
+TypeForwarders.cs
+AssemblyInfo.cs
+
diff --git a/mcs/class/Facades/System.ServiceModel.Security/TypeForwarders.cs b/mcs/class/Facades/System.ServiceModel.Security/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..b8424b6
--- /dev/null
@@ -0,0 +1,41 @@
+// 
+// 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.Channels.LocalClientSecuritySettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.SecurityBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.SecurityHeaderLayout))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportSecurityBindingElement))]
+#if !MOBILE
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.DnsEndpointIdentity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageSecurityVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.BasicSecurityProfileVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecureConversationVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityPolicyVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.SecureConversationSecurityTokenParameters))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.SecurityTokenParameters))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.SupportingTokenParameters))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.UserNameSecurityTokenParameters))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.TrustVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SpnEndpointIdentity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UpnEndpointIdentity))]
+#endif
\ No newline at end of file
index 3a55e57e568dd0b1f34ddf354a111bf5a7b95b5a..4a6b140ae32401796d1c29d0c02a1cd250c51d43 100644 (file)
     <AssemblyName>System.Text.Encoding.Extensions</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 209c0590891fd9744a06be5abbf68c54bdd4c544..6c03c541652a66d707854ccd97f194625f017058 100644 (file)
     <AssemblyName>System.Text.Encoding</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index b22e1ed1714927c7e0973d3f0bc3b9951ea24b66..8603aca5d46eb79f9bb189fa9d397a0234e1a599 100644 (file)
     <AssemblyName>System.Text.RegularExpressions</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 109f1b88022809f2599ba30f2ccad3a892a7b115..e7a569031790a84c4f12a55962ea8a2ea4ed10f6 100644 (file)
     <AssemblyName>System.Threading.Tasks.Parallel</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 269a6fe3e744ccdc8d634c130abbada665ea2dcd..6cbf5f5fe641f0f535042a9ae01768aff577db36 100644 (file)
     <AssemblyName>System.Threading.Tasks</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index e3d5a299d7d7feba2df10af625caf007c75540c0..35f690a0c96d5b1272e3200bd27f56a006d49e17 100644 (file)
     <AssemblyName>System.Threading.Timer</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 0c2c715a4929c5ead4fd919b575e7b2e0e27bad7..855dcde2a23f7328e8a32f93b7f5720c6dbe0ca0 100644 (file)
     <AssemblyName>System.Threading</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1d31710672530f299aabf6c9be47fc6e5f219160..c5f31c82bbc94f4837262c9783c48c155cca4e3c 100644 (file)
     <AssemblyName>System.Xml.ReaderWriter</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 962af3458f3101ccdec31a8664f8ea674c0dd4cb..030fbbb7c18b9c11ff69484ce4bfd21381233aad 100644 (file)
     <AssemblyName>System.Xml.XDocument</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
       <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
+      <Name>System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index aa436dcd8825df35523930b4e11f75ddb6b30c0f..7ef501521c3404b24646b3e296cd8cffc391a16f 100644 (file)
     <AssemblyName>System.Xml.XmlSerializer</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 5a517b6f6d6bf7941fb7c7493ab68a4d28835b47..dec298ea7f2d0afea4c5986620e56e73949b7c05 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
       <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>Common\I18N-net_4_5</Name>\r
+      <Name>I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 76baf716f31252028108548c73b4591804963b04..d982706eeda65001d8856ea53ce3403805e1191a 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
@@ -78,7 +79,7 @@
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 66fbe53d000938885ab924902d5de6166a492c65..ea241e7de1bc8cc7930ab05fef681f96b8ea3e0e 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
       <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>Common\I18N-net_4_5</Name>\r
+      <Name>I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 0e6cbf1e160dcaff1976b26bb7c28f3f1fce6774..a0f092aee99f85c956aab7159b34b18082a26f6d 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
       <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>Common\I18N-net_4_5</Name>\r
+      <Name>I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 08f7769891d48a118254f30512913acf06890842..bc4392d65dac4ac162177ae189400a9090c7882a 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
       <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>Common\I18N-net_4_5</Name>\r
+      <Name>I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 12daa0d7364fe9a82ce159c3f605974e3154e60b..b2487de8957b574c100c89ad26893c8c72f617d9 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
       <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>Common\I18N-net_4_5</Name>\r
+      <Name>I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 9a0a126b3c1aab692897822fda83e7bb2426fec8..f9d1cdda39ced46b0850c38f17860afa1b29e06d 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index f6f3e38121aff1192e46c9b5d59120dc6ee771b3..0cc37dc7f4549ec9974154982ad5def3ae590beb 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 73ca2abb57a8afa64ec8b58496cbfb47aea60e5b..1e604f9aae12ab8b627f1e16e295e04901d25d5f 100644 (file)
@@ -285,7 +285,7 @@ all-local $(STD_TARGETS:=-local):
        @:
 
 # Files needed to bootstrap C# compiler
-basic_files = basic.exe mscorlib.dll System.dll System.Xml.dll Mono.Security.dll System.Core.dll
+basic_files = basic.exe mscorlib.dll System.dll System.Xml.dll Mono.Security.dll System.Core.dll System.Security.dll System.Configuration.dll
 monolite_files = $(basic_files:%=lib/monolite/%)
 
 lib/monolite:
diff --git a/mcs/class/Managed.Windows.Forms/.gitignore b/mcs/class/Managed.Windows.Forms/.gitignore
new file mode 100644 (file)
index 0000000..f6cce0c
--- /dev/null
@@ -0,0 +1,3 @@
+DummyAssembly.dll
+DummyAssembly.mdb
+test_file
index 7a7439b74417d1dd8561fe4db7672b3f8ebec6e9..37a323899bed7f760ff448f3464b27e0217c2889 100644 (file)
@@ -93,7 +93,10 @@ TEST_DISTFILES = \
        Test/resources/32x32.ico \
        Test/System.Resources/compat_1_1.resx \
        Test/System.Resources/compat_2_0.resx \
-       Test/System.Windows.Forms/bitmaps/a.png
+       Test/System.Windows.Forms/bitmaps/a.png \
+       Test/DummyAssembly/AnotherSerializable.cs \
+       Test/DummyAssembly/Convertable.cs \
+       Test/DummyAssembly/Properties/AssemblyInfo.cs \
 
 EXTRA_DISTFILES = \
        README System.Windows.Forms.dll.resources \
@@ -106,6 +109,11 @@ TEST_MCS_FLAGS = /r:System.Data.dll /r:System.Drawing.dll /r:Accessibility.dll -
        -resource:Test/resources/32x32.ico,32x32.ico \
        -nowarn:618,612
 
+DummyAssembly.dll:
+       $(CSCOMPILE) /target:library /out:$@ Test/DummyAssembly/AnotherSerializable.cs Test/DummyAssembly/Convertable.cs Test/DummyAssembly/Properties/AssemblyInfo.cs
+
+test-local: DummyAssembly.dll
+
 include ../../build/library.make
 
 TEST_HARNESS_EXCLUDES = -exclude=Interactive,NotWorking,ValueAdd,CAS,InetAccess
index 4c79552f4af690db2fedbbfee7a3ab08cf6083b6..48bf07b6720fb4e5f911b59eea92284e03802004 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Accessibility/Accessibility-net_4_5.csproj">\r
       <Project>{FACE8136-C95A-4788-90B2-DB0ECF7A020A}</Project>\r
-      <Name>Accessibility\Accessibility-net_4_5</Name>\r
+      <Name>Accessibility-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Posix/Mono.Posix-net_4_5.csproj">\r
       <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
+      <Name>Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj">\r
       <Project>{1D660912-8164-4499-A2D7-A3B2FE742E17}</Project>\r
-      <Name>Mono.WebBrowser\Mono.WebBrowser-net_4_5</Name>\r
+      <Name>Mono.WebBrowser-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
       <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 43b39dcd4fc9a9d78ccc3fd62494fcc426ea1d42..a15b747d1884e052787b5e3cc226c53114d4d905 100644 (file)
@@ -104,7 +104,7 @@ namespace System.Windows.Forms.X11Internal {
                {
                        if (display == IntPtr.Zero) {
                                throw new ArgumentNullException("Display",
-                                                       "Could not open display (X-Server required. Check you DISPLAY environment variable)");
+                                                       "Could not open display (X-Server required. Check your DISPLAY environment variable)");
                        }
 
                        this.display = display;
index a930aa9301fcd41cca1f6cd1ed20b0ccdbb61087..5fa129b4c065820d4bbd840832807e8139129bdb 100644 (file)
@@ -150,7 +150,7 @@ namespace System.Windows.Forms {
                }
                */
 
-               static byte [] header = new byte []{ 77, 83, 70, 116, 73, 76, 3, 0 };
+               static byte [] header = new byte []{ 77, 83, 70, 116, 73, 76, 1, 1 };
                public void GetObjectData (SerializationInfo si, StreamingContext context)
                {
                        MemoryStream stream = new MemoryStream ();
@@ -169,7 +169,7 @@ namespace System.Windows.Forms {
                        writer.Write ((ushort) (images [0].Width));
                        writer.Write ((ushort) (images [0].Height));
                        writer.Write (0xFFFFFFFF); //BackColor.ToArgb ()); //FIXME: should set the right one here.
-                       writer.Write ((ushort) 0x1009);
+                       writer.Write ((ushort) 0x21);
                        for (int i = 0; i < 4; i++)
                                writer.Write ((short) -1);
 
index 5ffc23eb615fceae21d162d04fb649a4b4be0579..856137cb17e051cd2f72513bbc16b7ea7c2ea4ac 100644 (file)
@@ -109,7 +109,7 @@ namespace System.Windows.Forms {
                        hexadecimal = false;
                        increment = 1M;
                        maximum = 100M;
-                       minimum = 0.0M;
+                       minimum = 0M;
                        thousands_separator = false;
 
                        Text = "0";
index e05a093aac549755036f160867f3515bc78def96..1f3af25846450af900f33b95ed551929392ee807 100644 (file)
@@ -552,7 +552,7 @@ namespace System.Windows.Forms {
                                ErrorHandler = new XErrorHandler(HandleError);
                                XSetErrorHandler(ErrorHandler);
                        } else {
-                               throw new ArgumentNullException("Display", "Could not open display (X-Server required. Check you DISPLAY environment variable)");
+                               throw new ArgumentNullException("Display", "Could not open display (X-Server required. Check your DISPLAY environment variable)");
                        }
                }
                #endregion      // Internal Methods
index 77e89c4975a80d8a6711e9cb388dfd12bff56134..b8820a9bed074381003909db608d01c517fc4cdd 100644 (file)
@@ -708,7 +708,7 @@ namespace System.Windows.Forms {
                                ErrorHandler = new XErrorHandler (HandleError);
                                XSetErrorHandler (ErrorHandler);
                        } else {
-                               throw new ArgumentNullException ("Display", "Could not open display (X-Server required. Check you DISPLAY environment variable)");
+                               throw new ArgumentNullException ("Display", "Could not open display (X-Server required. Check your DISPLAY environment variable)");
                        }
                }
                #endregion      // Internal Methods
diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/AnotherSerializable.cs
new file mode 100644 (file)
index 0000000..a6336ce
--- /dev/null
@@ -0,0 +1,88 @@
+//
+// AnotherSerializable.cs : Serializable Class used to test types from other
+// assemblies for resources tests
+//
+// Author:
+//     Gary Barnett (gary.barnett.mono@gmail.com)
+// 
+// Copyright (C) Gary Barnett (2012)
+//
+//
+// 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.Runtime.Serialization;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+
+namespace DummyAssembly {
+       [SerializableAttribute]
+       public class AnotherSerializable : ISerializable {
+               public string name;
+               public string value;
+
+               public AnotherSerializable ()
+               {
+               }
+
+               public AnotherSerializable (string name, string value)
+               {
+                       this.name = name;
+                       this.value = value;
+               }
+
+               public AnotherSerializable (SerializationInfo info, StreamingContext ctxt)
+               {
+                       name = (string) info.GetValue ("sername", typeof (string));
+                       value = (String) info.GetValue ("servalue", typeof (string));
+               }
+
+               public AnotherSerializable (Stream stream)
+               {
+                       BinaryFormatter bFormatter = new BinaryFormatter ();
+                       AnotherSerializable deser = (AnotherSerializable) bFormatter.Deserialize (stream);
+                       stream.Close ();
+
+                       name = deser.name;
+                       value = deser.value;
+               }
+
+               public void GetObjectData (SerializationInfo info, StreamingContext ctxt)
+               {
+                       info.AddValue ("sername", name);
+                       info.AddValue ("servalue", value);
+               }
+
+               public override string ToString ()
+               {
+                       return String.Format ("name={0};value={1}", this.name, this.value);
+               }
+
+               public override bool Equals (object obj)
+               {
+                       AnotherSerializable o = obj as AnotherSerializable;
+                       if (o == null)
+                               return false;
+                       return this.name.Equals (o.name) && this.value.Equals (o.value);
+               }
+       }
+}
+
diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Convertable.cs
new file mode 100644 (file)
index 0000000..7f1ea03
--- /dev/null
@@ -0,0 +1,119 @@
+//
+// Convertable.cs : Class with type converter used to test types from other
+// assemblies for resources tests
+//
+// Author:
+//     Gary Barnett (gary.barnett.mono@gmail.com)
+// 
+// Copyright (C) Gary Barnett (2012)
+//
+//
+// 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.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.IO;
+using System.Runtime.Serialization;
+using System.ComponentModel;
+
+namespace DummyAssembly {
+
+    [SerializableAttribute]
+    [TypeConverter (typeof (ConvertableConverter))]
+    public class Convertable {
+        protected string name;
+        protected string value;
+
+        public Convertable ()
+        {
+        }
+
+        public Convertable (string name, string value)
+        {
+            this.name = name;
+            this.value = value;
+        }
+        
+        public void GetObjectData (SerializationInfo info, StreamingContext ctxt)
+        {
+            info.AddValue ("sername", name);
+            info.AddValue ("servalue", value);
+        }
+
+        public override string ToString ()
+        {
+            return String.Format ("{0}\t{1}",name, value);
+        }
+
+        public override bool Equals (object obj)
+        {
+            Convertable o = obj as Convertable;
+            if (o == null)
+                return false;
+            return this.name.Equals (o.name) && this.value.Equals (o.value);
+        }
+    }
+
+    class ConvertableConverter : TypeConverter {
+        public ConvertableConverter ()
+        {
+        }
+
+        public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+        {
+            return sourceType == typeof (string);
+        }
+
+        public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+        {
+            return destinationType == typeof (string);
+        }
+
+        public override object ConvertFrom (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
+        {
+            if (value.GetType() != typeof (string))
+                throw new Exception ("value not string");
+
+            string serialised = (string) value;
+
+            string [] parts = serialised.Split ('\t');
+
+            if (parts.Length != 2)
+                throw new Exception ("string in incorrect format");
+
+            Convertable convertable = new Convertable (parts [0], parts [1]);
+            return convertable;
+        }
+
+        public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
+        {
+            if (destinationType != typeof (String)) {
+                return base.ConvertTo (context, culture, value, destinationType);
+            }
+
+            return ((Convertable) value).ToString ();
+        }
+    }
+
+}
+
diff --git a/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs b/mcs/class/Managed.Windows.Forms/Test/DummyAssembly/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..73e9fef
--- /dev/null
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("DummyAssembly")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("DummyAssembly")]
+[assembly: AssemblyCopyright ("")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("c80e062b-a918-4aa5-b62c-7455ca2c56d5")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
index f6f5fadb7df800a00159edd72fc76b254c96b3a9..4fac9f436ca5607cef5cc90e693448cbee76000e 100644 (file)
@@ -1,18 +1,96 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>
 <root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
   <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
     <xsd:element name="root" msdata:IsDataSet="true">
       <xsd:complexType>
         <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
           <xsd:element name="data">
             <xsd:complexType>
               <xsd:sequence>
                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
               </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
               <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
               <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
             </xsd:complexType>
           </xsd:element>
           <xsd:element name="resheader">
       </xsd:complexType>
     </xsd:element>
   </xsd:schema>
-<resheader name="resmimetype"><value>text/microsoft-resx</value></resheader><resheader name="version"><value>1.3</value></resheader><resheader name="reader"><value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></resheader><resheader name="writer"><value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value></resheader><data name="keyboard_table" mimetype="application/x-microsoft.net.object.binary.base64"><value>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eA0AAAl5DQAACXoNAAAJew0AAAl8DQAACX0NAAAJfg0AAAl/DQAACYANAAAJgQ0AAAmCDQAAD0MBAAACAAAAD2AAAAB+AAAAD0QBAAACAAAADzEAAAAhAAAAD0UBAAACAAAADzIAAABAAAAAD0YBAAACAAAADzMAAAAjAAAAD0cBAAACAAAADzQAAAAkAAAAD0gBAAACAAAADzUAAAAlAAAAD0kBAAACAAAADzYAAABeAAAAD0oBAAACAAAADzcAAAAmAAAAD0sBAAACAAAADzgAAAAqAAAAD0wBAAACAAAADzkAAAAoAAAAD00BAAACAAAADzAAAAApAAAAD04BAAACAAAADy0AAABfAAAAD08BAAACAAAADz0AAAArAAAAD1ABAAACAAAAD3EAAABRAAAAD1EBAAACAAAAD3cAAABXAAAAD1IBAAACAAAAD2UAAABFAAAAD1MBAAACAAAAD3IAAABSAAAAD1QBAAACAAAAD3QAAABUAAAAD1UBAAACAAAAD3kAAABZAAAAD1YBAAACAAAAD3UAAABVAAAAD1cBAAACAAAAD2kAAABJAAAAD1gBAAACAAAAD28AAABPAAAAD1kBAAACAAAAD3AAAABQAAAAD1oBAAACAAAAD1sAAAB7AAAAD1sBAAACAAAAD10AAAB9AAAAD1wBAAACAAAAD2EAAABBAAAAD10BAAACAAAAD3MAAABTAAAAD14BAAACAAAAD2QAAABEAAAAD18BAAACAAAAD2YAAABGAAAAD2ABAAACAAAAD2cAAABHAAAAD2EBAAACAAAAD2gAAABIAAAAD2IBAAACAAAAD2oAAABKAAAAD2MBAAACAAAAD2sAAABLAAAAD2QBAAACAAAAD2wAAABMAAAAD2UBAAACAAAADzsAAAA6AAAAD2YBAAACAAAADycAAAAiAAAAD2cBAAACAAAAD1wAAAB8AAAAD2gBAAACAAAAD3oAAABaAAAAD2kBAAACAAAAD3gAAABYAAAAD2oBAAACAAAAD2MAAABDAAAAD2sBAAACAAAAD3YAAABWAAAAD2wBAAACAAAAD2IAAABCAAAAD20BAAACAAAAD24AAABOAAAAD24BAAACAAAAD20AAABNAAAAD28BAAACAAAADywAAAA8AAAAD3ABAAACAAAADy4AAAA+AAAAD3EBAAACAAAADy8AAAA/AAAAD3IBAAAAAAAADw9zAQAAAAAAAA8PdAEAAAIAAAAPYAAAAH4AAAAPdQEAAAIAAAAPMQAAACEAAAAPdgEAAAIAAAAPMgAAAEAAAAAPdwEAAAIAAAAPMwAAACMAAAAPeAEAAAIAAAAPNAAAACQAAAAPeQEAAAIAAAAPNQAAACUAAAAPegEAAAIAAAAPNgAAAF4AAAAPewEAAAIAAAAPNwAAACYAAAAPfAEAAAIAAAAPOAAAACoAAAAPfQEAAAIAAAAPOQAAACgAAAAPfgEAAAIAAAAPMAAAACkAAAAPfwEAAAIAAAAPLQAAAF8AAAAPgAEAAAIAAAAPPQAAACsAAAAPgQEAAAIAAAAPcQAAAFEAAAAPggEAAAIAAAAPdwAAAFcAAAAPgwEAAAIAAAAPZQAAAEUAAAAPhAEAAAIAAAAPcgAAAFIAAAAPhQEAAAIAAAAPdAAAAFQAAAAPhgEAAAIAAAAPeQAAAFkAAAAPhwEAAAIAAAAPdQAAAFUAAAAPiAEAAAIAAAAPaQAAAEkAAAAPiQEAAAIAAAAPbwAAAE8AAAAPigEAAAIAAAAPcAAAAFAAAAAPiwEAAAIAAAAPWwAAAHsAAAAPjAEAAAIAAAAPXQAAAH0AAAAPjQEAAAIAAAAPYQAAAEEAAAAPjgEAAAIAAAAPcwAAAFMAAAAPjwEAAAIAAAAPZAAAAEQAAAAPkAEAAAIAAAAPZgAAAEYAAAAPkQEAAAIAAAAPZwAAAEcAAAAPkgEAAAIAAAAPaAAAAEgAAAAPkwEAAAIAAAAPagAAAEoAAAAPlAEAAAIAAAAPawAAAEsAAAAPlQEAAAIAAAAPbAAAAEwAAAAPlgEAAAIAAAAPOwAAADoAAAAPlwEAAAIAAAAPJwAAACIAAAAPmAEAAAIAAAAPXAAAAHwAAAAPmQEAAAIAAAAPegAAAFoAAAAPmgEAAAIAAAAPeAAAAFgAAAAPmwEAAAIAAAAPYwAAAEMAAAAPnAEAAAIAAAAPdgAAAFYAAAAPnQEAAAIAAAAPYgAAAEIAAAAPngEAAAIAAAAPbgAAAE4AAAAPnwEAAAIAAAAPbQAAAE0AAAAPoAEAAAIAAAAPLAAAADwAAAAPoQEAAAIAAAAPLgAAAD4AAAAPogEAAAIAAAAPLwAAAD8AAAAPowEAAAIAAAAPPAAAAD4AAAAPpAEAAAAAAAAPD6UBAAACAAAAD2AAAAB+AAAAD6YBAAACAAAADzEAAAAhAAAAD6cBAAACAAAADzIAAABAAAAAD6gBAAACAAAADzMAAAAjAAAAD6kBAAACAAAADzQAAAAkAAAAD6oBAAACAAAADzUAAAAlAAAAD6sBAAACAAAADzYAAABeAAAAD6wBAAACAAAADzcAAAAmAAAAD60BAAACAAAADzgAAAAqAAAAD64BAAACAAAADzkAAAAoAAAAD68BAAACAAAADzAAAAApAAAAD7ABAAACAAAAD1sAAAB7AAAAD7EBAAACAAAAD10AAAB9AAAAD7IBAAACAAAADycAAAAiAAAAD7MBAAACAAAADywAAAA8AAAAD7QBAAACAAAADy4AAAA+AAAAD7UBAAACAAAAD3AAAABQAAAAD7YBAAACAAAAD3kAAABZAAAAD7cBAAACAAAAD2YAAABGAAAAD7gBAAACAAAAD2cAAABHAAAAD7kBAAACAAAAD2MAAABDAAAAD7oBAAACAAAAD3IAAABSAAAAD7sBAAACAAAAD2wAAABMAAAAD7wBAAACAAAADy8AAAA/AAAAD70BAAACAAAADz0AAAArAAAAD74BAAACAAAAD2EAAABBAAAAD78BAAACAAAAD28AAABPAAAAD8ABAAACAAAAD2UAAABFAAAAD8EBAAACAAAAD3UAAABVAAAAD8IBAAACAAAAD2kAAABJAAAAD8MBAAACAAAAD2QAAABEAAAAD8QBAAACAAAAD2gAAABIAAAAD8UBAAACAAAAD3QAAABUAAAAD8YBAAACAAAAD24AAABOAAAAD8cBAAACAAAAD3MAAABTAAAAD8gBAAACAAAADy0AAABfAAAAD8kBAAACAAAAD1wAAAB8AAAAD8oBAAACAAAADzsAAAA6AAAAD8sBAAACAAAAD3EAAABRAAAAD8wBAAACAAAAD2oAAABKAAAAD80BAAACAAAAD2sAAABLAAAAD84BAAACAAAAD3gAAABYAAAAD88BAAACAAAAD2IAAABCAAAAD9ABAAACAAAAD20AAABNAAAAD9EBAAACAAAAD3cAAABXAAAAD9IBAAACAAAAD3YAAABWAAAAD9MBAAACAAAAD3oAAABaAAAAD9QBAAAAAAAADw/VAQAAAAAAAA8P1gEAAAIAAAAPYAAAAH4AAAAP1wEAAAIAAAAPMQAAACEAAAAP2AEAAAIAAAAPMgAAAEAAAAAP2QEAAAIAAAAPMwAAACMAAAAP2gEAAAIAAAAPNAAAACQAAAAP2wEAAAIAAAAPNQAAACUAAAAP3AEAAAIAAAAPNgAAAF4AAAAP3QEAAAIAAAAPNwAAACYAAAAP3gEAAAIAAAAPOAAAACoAAAAP3wEAAAIAAAAPOQAAACgAAAAP4AEAAAIAAAAPMAAAACkAAAAP4QEAAAIAAAAPLQAAAF8AAAAP4gEAAAIAAAAPPQAAACsAAAAP4wEAAAIAAAAPXAAAAHwAAAAP5AEAAAIAAAAPcQAAAFEAAAAP5QEAAAIAAAAPdwAAAFcAAAAP5gEAAAIAAAAPZQAAAEUAAAAP5wEAAAIAAAAPcgAAAFIAAAAP6AEAAAIAAAAPdAAAAFQAAAAP6QEAAAIAAAAPeQAAAFkAAAAP6gEAAAIAAAAPdQAAAFUAAAAP6wEAAAIAAAAPaQAAAEkAAAAP7AEAAAIAAAAPbwAAAE8AAAAP7QEAAAIAAAAPcAAAAFAAAAAP7gEAAAIAAAAPWwAAAHsAAAAP7wEAAAIAAAAPXQAAAH0AAAAP8AEAAAIAAAAPYQAAAEEAAAAP8QEAAAIAAAAPcwAAAFMAAAAP8gEAAAIAAAAPZAAAAEQAAAAP8wEAAAIAAAAPZgAAAEYAAAAP9AEAAAIAAAAPZwAAAEcAAAAP9QEAAAIAAAAPaAAAAEgAAAAP9gEAAAIAAAAPagAAAEoAAAAP9wEAAAIAAAAPawAAAEsAAAAP+AEAAAIAAAAPbAAAAEwAAAAP+QEAAAIAAAAPOwAAADoAAAAP+gEAAAIAAAAPJwAAACIAAAAP+wEAAAIAAAAPegAAAFoAAAAP/AEAAAIAAAAPeAAAAFgAAAAP/QEAAAIAAAAPYwAAAEMAAAAP/gEAAAIAAAAPdgAAAFYAAAAP/wEAAAIAAAAPYgAAAEIAAAAPAAIAAAIAAAAPbgAAAE4AAAAPAQIAAAIAAAAPbQAAAE0AAAAPAgIAAAIAAAAPLAAAADwAAAAPAwIAAAIAAAAPLgAAAD4AAAAPBAIAAAIAAAAPLwAAAD8AAAAPBQIAAAAAAAAPDwYCAAAAAAAADw8HAgAAAQAAAA9gAAAADwgCAAACAAAADzEAAAAhAAAADwkCAAACAAAADzIAAAAiAAAADwoCAAACAAAADzMAAACj////DwsCAAACAAAADzQAAAAkAAAADwwCAAACAAAADzUAAAAlAAAADw0CAAACAAAADzYAAABeAAAADw4CAAACAAAADzcAAAAmAAAADw8CAAACAAAADzgAAAAqAAAADxACAAACAAAADzkAAAAoAAAADxECAAACAAAADzAAAAApAAAADxICAAACAAAADy0AAABfAAAADxMCAAACAAAADz0AAAArAAAADxQCAAACAAAAD3EAAABRAAAADxUCAAACAAAAD3cAAABXAAAADxYCAAACAAAAD2UAAABFAAAADxcCAAACAAAAD3IAAABSAAAADxgCAAACAAAAD3QAAABUAAAADxkCAAACAAAAD3kAAABZAAAADxoCAAACAAAAD3UAAABVAAAADxsCAAACAAAAD2kAAABJAAAADxwCAAACAAAAD28AAABPAAAADx0CAAACAAAAD3AAAABQAAAADx4CAAACAAAAD1sAAAB7AAAADx8CAAACAAAAD10AAAB9AAAADyACAAACAAAAD2EAAABBAAAADyECAAACAAAAD3MAAABTAAAADyICAAACAAAAD2QAAABEAAAADyMCAAACAAAAD2YAAABGAAAADyQCAAACAAAAD2cAAABHAAAADyUCAAACAAAAD2gAAABIAAAADyYCAAACAAAAD2oAAABKAAAADycCAAACAAAAD2sAAABLAAAADygCAAACAAAAD2wAAABMAAAADykCAAACAAAADzsAAAA6AAAADyoCAAACAAAADycAAABAAAAADysCAAACAAAADyMAAAB+AAAADywCAAACAAAAD3oAAABaAAAADy0CAAACAAAAD3gAAABYAAAADy4CAAACAAAAD2MAAABDAAAADy8CAAACAAAAD3YAAABWAAAADzACAAACAAAAD2IAAABCAAAADzECAAACAAAAD24AAABOAAAADzICAAACAAAAD20AAABNAAAADzMCAAACAAAADywAAAA8AAAADzQCAAACAAAADy4AAAA+AAAADzUCAAACAAAADy8AAAA/AAAADzYCAAACAAAAD1wAAAB8AAAADzcCAAAAAAAADw84AgAAAgAAAA9eAAAAsP///w85AgAAAgAAAA8xAAAAIQAAAA86AgAAAgAAAA8yAAAAIgAAAA87AgAAAgAAAA8zAAAAp////w88AgAAAgAAAA80AAAAJAAAAA89AgAAAgAAAA81AAAA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AAAvAAAADzUDAAACAAAADzgAAAAoAAAADzYDAAACAAAADzkAAAApAAAADzcDAAACAAAADzAAAAA9AAAADzgDAAACAAAADycAAAA/AAAADzkDAAACAAAAD14AAABgAAAADzoDAAACAAAAD3EAAABRAAAADzsDAAACAAAAD3cAAABXAAAADzwDAAACAAAAD2UAAABFAAAADz0DAAACAAAAD3IAAABSAAAADz4DAAACAAAAD3QAAABUAAAADz8DAAACAAAAD3oAAABaAAAAD0ADAAACAAAAD3UAAABVAAAAD0EDAAACAAAAD2kAAABJAAAAD0IDAAACAAAAD28AAABPAAAAD0MDAAACAAAAD3AAAABQAAAAD0QDAAACAAAAD+j////8////D0UDAAACAAAAD6j///8hAAAAD0YDAAACAAAAD2EAAABBAAAAD0cDAAACAAAAD3MAAABTAAAAD0gDAAACAAAAD2QAAABEAAAAD0kDAAACAAAAD2YAAABGAAAAD0oDAAACAAAAD2cAAABHAAAAD0sDAAACAAAAD2gAAABIAAAAD0wDAAACAAAAD2oAAABKAAAAD00DAAACAAAAD2sAAABLAAAAD04DAAACAAAAD2wAAABMAAAAD08DAAACAAAAD+n////2////D1ADAAACAAAAD+D////k////D1EDAAACAAAADyQAAACj////D1IDAAACAAAAD3kAAABZAAAAD1MDAAACAAAAD3gAAABYAAAAD1QDAAACAAAAD2MAAABDAAAAD1UDAAACAAAAD3YAAABWAAAAD1YDAAACAAAAD2IAAABCAAAAD1cDAAACAAAAD24AAABOAAAAD1gDAAACAAAAD20AAABNAAAAD1kDAAACAAAADywAAAA7AAAAD1oDAAACAAAADy4AAAA6AAAAD1sDAAACAAAADy0AAABfAAAAD1wDAAACAAAADzwAAAA+AAAAD10DAAAAAAAADw9eAwAAAgAAAA+n////vf///w9fAwAAAgAAAA8xAAAAIQAAAA9gAwAAAgAAAA8yAAAAIgAAAA9hAwAAAgAAAA8zAAAAIwAAAA9iAwAAAgAAAA80AAAApP///w9jAwAAAgAAAA81AAAAJQAAAA9kAwAAAgAAAA82AAAAJgAAAA9lAwAAAgAAAA83AAAALwAAAA9mAwAAAgAAAA84AAAAKAAAAA9n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D4wEAAACAAAADzgAAAAqAAAAD40EAAACAAAADzkAAAAoAAAAD44EAAACAAAADzAAAAApAAAAD48EAAACAAAADy0AAABfAAAAD5AEAAACAAAADz0AAAArAAAAD5EEAAACAAAAD3EAAABRAAAAD5IEAAACAAAAD3cAAABXAAAAD5MEAAACAAAAD2UAAABFAAAAD5QEAAACAAAAD3IAAABSAAAAD5UEAAACAAAAD3QAAABUAAAAD5YEAAACAAAAD3kAAABZAAAAD5cEAAACAAAAD3UAAABVAAAAD5gEAAACAAAAD2kAAABJAAAAD5kEAAACAAAAD28AAABPAAAAD5oEAAACAAAAD3AAAABQAAAAD5sEAAACAAAAD14AAABeAAAAD5wEAAACAAAAD7j///+o////D50EAAACAAAAD2EAAABBAAAAD54EAAACAAAAD3MAAABTAAAAD58EAAACAAAAD2QAAABEAAAAD6AEAAACAAAAD2YAAABGAAAAD6EEAAACAAAAD2cAAABHAAAAD6IEAAACAAAAD2gAAABIAAAAD6MEAAACAAAAD2oAAABKAAAAD6QEAAACAAAAD2sAAABLAAAAD6UEAAACAAAAD2wAAABMAAAAD6YEAAACAAAADzsAAAA6AAAAD6cEAAACAAAAD2AAAABgAAAAD6gEAAACAAAADzwAAAA+AAAAD6kEAAACAAAAD3oAAABaAAAAD6oEAAACAAAAD3gAAABYAAAAD6sEAAACAAAAD2MAAABDAAAAD6wEAAACAAAAD3YAAABWAAAAD60EAAACAAAAD2IAAABCAAAAD64EAAACAAAAD24AAABOAAAAD68EAAACAAAAD20AAABNAAAAD7AEAAACAAAADywAAAAnAAAAD7EEAAABAAAADy4AAAAPsgQAAAIAAAAP6f///8n///8PswQAAAIAAAAPq////7v///8PtAQAAAAAAAAPD7UEAAACAAAADy8AAABcAAAAD7YEAAAEAAAADzEAAAAhAAAAuf///6H///8PtwQAAAMAAAAPMgAAAEAAAACy////D7gEAAAEAAAADzMAAAAjAAAAs////6P///8PuQQAAAQAAAAPNAAAACQAAAC8////pP///w+6BAAAAwAAAA81AAAAJQAAAL3///8PuwQAAAMAAAAPNgAAAD8AAAC+////D7wEAAACAAAADzcAAAAmAAAAD70EAAACAAAADzgAAAAqAAAAD74EAAACAAAADzkAAAAoAAAAD78EAAACAAAADzAAAAApAAAAD8AEAAACAAAADy0AAABfAAAAD8EEAAACAAAADz0AAAArAAAAD8IEAAACAAAAD3EAAABRAAAAD8MEAAACAAAAD3cAAABXAAAAD8QEAAACAAAAD2UAAABFAAAAD8UEAAACAAAAD3IAAABSAAAAD8YEAAACAAAAD3QAAABUAAAAD8cEAAACAAAAD3kAAABZAAAAD8gEAAACAAAAD3UAAABVAAAAD8kEAAACAAAAD2kAAABJAAAAD8oEAAAEAAAAD28AAABPAAAA+P///9j///8PywQAAAQAAAAPcAAAAFAAAAD+////3v///w/MBAAAAwAAAA9eAAAAqP///6j///8PzQQAAAMAAAAP5////8f///9+AAAAD84EAAAEAAAAD2EAAABBAAAA5v///8b///8PzwQAAAQAAAAPcwAAAFMAAADf////p////w/QBAAABAAAAA9kAAAARAAAAPD////Q////D9EEAAACAAAAD2YAAABGAAAAD9IEAAACAAAAD2cAAABHAAAAD9MEAAACAAAAD2gAAABIAAAAD9QEAAACAAAAD2oAAABKAAAAD9UEAAACAAAAD2sAAABLAAAAD9YEAAACAAAAD2wAAABMAAAAD9cEAAADAAAADzsAAAA6AAAAtP///w/YBAAAAgAAAA/o////yP///w/ZBAAAAgAAAA/g////wP///w/aBAAAAgAAAA96AAAAWgAAAA/bBAAAAgAAAA94AAAAWAAAAA/cBAAABAAAAA9jAAAAQwAAAKL///+p////D90EAAACAAAAD3YAAABWAAAAD94EAAACAAAAD2IAAABCAAAAD98EAAACAAAAD24AAABOAAAAD+AEAAAEAAAAD20AAABNAAAAtf///7r///8P4QQAAAIAAAAPLAAAACcAAAAP4gQAAAQAAAAPLgAAACIAAAC3////9////w/jBAAAAgAAAA/p////yf///w/kBAAAAgAAAA/5////2f///w/lBAAAAAAAAA8P5gQAAAAAAAAPD+cEAAADAAAADyYAAAAxAAAAfAAAAA/oBAAAAwAAAA/p////MgAAAEAAAAAP6QQAAAMAAAAPIgAAADMAAAAjAAAAD+oEAAACAAAADycAAAA0AAAAD+sEAAACAAAADygAAAA1AAAAD+wEAAADAAAAD6f///82AAAAXgAAAA/tBAAAAgAAAA/o////NwAAAA/uBAAAAgAAAA8hAAAAOAAAAA/vBAAAAwAAAA/n////OQAAAHsAAAAP8AQAAAMAAAAP4P///zAAAAB9AAAAD/EEAAACAAAADykAAACw////D/IEAAACAAAADy0AAABfAAAAD/MEAAACAAAAD2EAAABBAAAAD/QEAAACAAAAD3oAAABaAAAAD/UEAAADAAAAD2UAAABFAAAApP///w/2BAAAAgAAAA9yAAAAUgAAAA/3BAAAAgAAAA90AAAAVAAAAA/4BAAAAgAAAA95AAAAWQAAAA/5BAAAAgAAAA91AAAAVQAAAA/6BAAAAgAAAA9pAAAASQAAAA/7BAAAAgAAAA9vAAAATwAAAA/8BAAAAgAAAA9wAAAAUAAAAA/9BAAAAwAAAA9eAAAAqP///1sAAAAP/gQAAAMAAAAPJAAAACoAAABdAAAAD/8EAAACAAAAD3EAAABRAAAADwAFAAADAAAAD3MAAABTAAAA3////w8BBQAAAgAAAA9kAAAARAAAAA8CBQAAAgAAAA9mAAAARgAAAA8DBQAAAgAAAA9nAAAARwAAAA8EBQAAAgAAAA9oAAAASAAAAA8FBQAAAgAAAA9qAAAASgAAAA8GBQAAAgAAAA9rAAAASwAAAA8HBQAAAgAAAA9sAAAATAAAAA8IBQAAAgAAAA9tAAAATQAAAA8JBQAAAwAAAA/5////JQAAALT///8PCgUAAAMAAAAPtf///6P///9gAAAADwsFAAACAAAAD3cAAABXAAAADwwFAAACAAAAD3gAAABYAAAADw0FAAACAAAAD2MAAABDAAAADw4FAAACAAAAD3YAAABWAAAADw8FAAACAAAAD2IAAABCAAAADxAFAAACAAAAD24AAABOAAAADxEFAAACAAAADywAAAA/AAAADxIFAAACAAAADzsAAAAuAAAADxMFAAACAAAADzoAAAAvAAAADxQFAAADAAAADz0AAAArAAAAfgAAAA8VBQAAAwAAAA88AAAAPgAAAFwAAAAPFgUAAAAAAAAPDxcFAAACAAAAD1wAAAB8AAAADxgFAAACAAAADzEAAAAhAAAADxkFAAACAAAADzIAAAAiAAAADxoFAAACAAAADzMAAAAjAAAADxsFAAACAAAADzQAAAAkAAAADxwFAAACAAAADzUAAAAlAAAADx0FAAACAAAADzYAAAAmAAAADx4FAAACAAAADzcAAAAvAAAADx8FAAACAAAADzgAAAAoAAAADyAFAAACAAAADzkAAAApAAAADyEFAAACAAAADzAAAAA9AAAADyIFAAACAAAADycAAAA/AAAADyMFAAACAAAAD6v///+7////DyQFAAACAAAAD3EAAABRAAAADyUFAAACAAAAD3cAAABXAAAADyYFAAACAAAAD2UAAABFAAAADycFAAACAAAAD3IAAABSAAAADygFAAACAAAAD3QAAABUAAAADykFAAACAAAAD3kAAABZAAAADyoFAAACAAAAD3UAAABVAAAADysFAAACAAAAD2kAAABJAAAADywFAAACAAAAD28AAABPAAAADy0FAAACAAAAD3AAAABQAAAADy4FAAACAAAADysAAAAqAAAADy8FAAACAAAAD7T///9gAAAADzAFAAACAAAAD2EAAABBAAAADzEFAAACAAAAD3MAAABTAAAADzIFAAACAAAAD2QAAABEAAAADzMFAAACAAAAD2YAAABGAAAADzQFAAACAAAAD2cAAABHAAAADzUFAAACAAAAD2gAAABIAAAADzYFAAACAAAAD2oAAABKAAAADzcFAAACAAAAD2sAAABLAAAADzgFAAACAAAAD2wAAABMAAAADzkFAAACAAAAD+f////H////DzoFAAACAAAAD7r///+q////DzsFAAACAAAAD34AAABeAAAADzwFAAACAAAAD3oAAABaAAAADz0FAAACAAAAD3gAAABYAAAADz4FAAACAAAAD2MAAABDAAAADz8FAAACAAAAD3YAAABWAAAAD0AFAAACAAAAD2IAAABCAAAAD0EFAAACAAAAD24AAABOAAAAD0IFAAACAAAAD20AAABNAAAAD0MFAAACAAAADywAAAA7AAAAD0QFAAACAAAADy4AAAA6AAAAD0UFAAACAAAADy0AAABfAAAAD0YFAAACAAAADzwAAAA+AAAAD0cFAAAAAAAADw9IBQAAAgAAAA8nAAAAIgAAAA9JBQAAAgAAAA8xAAAAIQAAAA9KBQAAAgAAAA8yAAAAQAAAAA9LBQAAAgAAAA8zAAAAIwAAAA9MBQAAAgAAAA80AAAAJAAAAA9N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NAAAACIAAAAP4AUAAAIAAAAPNQAAACUAAAAP4QUAAAQAAAAPNgAAAF4AAAA2AAAAPQAAAA/iBQAABAAAAA83AAAAJgAAADcAAAA6AAAAD+MFAAAEAAAADzgAAAAqAAAAOAAAAC8AAAAP5AUAAAIAAAAPOQAAACgAAAAP5QUAAAIAAAAPMAAAACkAAAAP5gUAAAQAAAAPLQAAAF8AAAAtAAAASQAAAA/nBQAABAAAAA89AAAAKwAAAC4AAABWAAAAD+gFAAAEAAAAD3EAAABRAAAALAAAAPv///8P6QUAAAQAAAAPdwAAAFcAAADz////0////w/qBQAABAAAAA9lAAAARQAAAOX////F////D+sFAAAEAAAAD3IAAABSAAAA6P///8j///8P7AUAAAQAAAAPdAAAAFQAAAD4////2P///w/tBQAABAAAAA95AAAAWQAAAPn////Z////D+4FAAAEAAAAD3UAAABVAAAA6v///8r///8P7wUAAAQAAAAPaQAAAEkAAADx////0f///w/wBQAABAAAAA9vAAAATwAAAOT////E////D/EFAAAEAAAAD3AAAABQAAAA5////8f///8P8gUAAAQAAAAPWwAAAHsAAAD2////1v///w/zBQAAAwAAAA9dAAAAfQAAADsAAAAP9AUAAAQAAAAPYQAAAEEAAAD8////3P///w/1BQAABAAAAA9zAAAAUwAAAP/////f////D/YFAAAEAAAAD2QAAABEAAAA4P///8D///8P9wUAAAQAAAAPZgAAAEYAAADu////zv///w/4BQAABAAAAA9nAAAARwAAAOb////G////D/kFAAAEAAAAD2gAAABIAAAA4////8P///8P+gUAAAQAAAAPagAAAEoAAADy////0v///w/7BQAABAAAAA9rAAAASwAAAO3////N////D/wFAAAEAAAAD2wAAABMAAAA4v///8L///8P/QUAAAQAAAAPOwAAADoAAADs////zP///w/+BQAABAAAAA8nAAAAIgAAAPf////X////D/8FAAAEAAAAD1wAAAB8AAAAJwAAANv///8PAAYAAAQAAAAPegAAAFoAAAD+////3v///w8BBgAABAAAAA94AAAAWAAAAOn////J////DwIGAAAEAAAAD2MAAABDAAAA+v///9r///8PAwYAAAQAAAAPdgAAAFYAAAD9////3f///w8EBgAABAAAAA9iAAAAQgAAAPT////U////DwUGAAAEAAAAD24AAABOAAAA9f///9X///8PBgYAAAQAAAAPbQAAAE0AAADv////z////w8HBgAABAAAAA8sAAAAPAAAAPD////Q////DwgGAAAEAAAADy4AAAA+AAAA6////8v///8PCQYAAAQAAAAPLwAAAD8AAADh////wf///w8KBgAAAgAAAA88AAAAPgAAAA8LBgAAAAAAAA8PDAYAAAQAAAAPYAAAAH4AAAD3////1////w8NBgAAAgAAAA8xAAAAIQAAAA8OBgAAAgAAAA8yAAAAQAAAAA8PBgAAAgAAAA8zAAAAIwAAAA8QBgAAAgAAAA80AAAAJAAAAA8RBgAAAgAAAA81AAAAJQAAAA8SBgAAAgAAAA82AAAAXgAAAA8TBgAAAgAAAA83AAAAJgAAAA8UBgAAAgAAAA84AAAAKgAAAA8VBgAAAgAAAA85AAAAKAAAAA8WBgAAAgAAAA8wAAAAKQAAAA8XBgAAAgAAAA8tAAAAXwAAAA8YBgAAAgAAAA89AAAAKwAAAA8ZBgAABAAAAA9xAAAAUQAAAP/////f////DxoGAAAEAAAAD3cAAABXAAAA4v///8L///8PGwYAAAQAAAAPZQAAAEUAAADl////xf///w8cBgAABAAAAA9yAAAAUgAAAPD////Q////Dx0GAAAEAAAAD3QAAABUAAAA8v///9L///8PHgYAAAQAAAAPeQAAAFkAAAD6////2v///w8fBgAABAAAAA91AAAAVQAAAPP////T////DyAGAAAEAAAAD2kAAABJAAAA6P///8j///8PIQYAAAQAAAAPbwAAAE8AAADu////zv///w8iBgAABAAAAA9wAAAAUAAAAO/////P////DyMGAAAEAAAAD1sAAAB7AAAA+P///9j///8PJAYAAAQAAAAPXQAAAH0AAAD5////2f///w8lBgAABAAAAA9hAAAAQQAAAOD////A////DyYGAAAEAAAAD3MAAABTAAAA8f///9H///8PJwYAAAQAAAAPZAAAAEQAAADk////xP///w8oBgAABAAAAA9mAAAARgAAAPT////U////DykGAAAEAAAAD2cAAABHAAAA4////8P///8PKgYAAAQAAAAPaAAAAEgAAAD1////1f///w8rBgAABAAAAA9qAAAASgAAAOn////J////DywGAAAEAAAAD2sAAABLAAAA6v///8r///8PLQYAAAQAAAAPbAAAAEwAAADr////y////w8uBgAAAgAAAA87AAAAOgAAAA8vBgAAAgAAAA8nAAAAIgAAAA8wBgAABAAAAA9cAAAAfAAAAP7////e////DzEGAAAEAAAAD3oAAABaAAAA5////8f///8PMgYAAAQAAAAPeAAAAFgAAAD8////3P///w8zBgAABAAAAA9jAAAAQwAAAPb////W////DzQGAAAEAAAAD3YAAABWAAAA5v///8b///8PNQYAAAQAAAAPYgAAAEIAAADh////wf///w82BgAABAAAAA9uAAAATgAAAO3////N////DzcGAAAEAAAAD20AAABNAAAA7P///8z///8POAYAAAIAAAAPLAAAADwAAAAPOQYAAAIAAAAPLgAAAD4AAAAPOgYAAAIAAAAPLwAAAD8AAAAPOwYAAAIAAAAPPAAAAD4AAAAPPAYAAAAAAAAPDz0GAAAEAAAAD2AAAAB+AAAAo////7P///8PPgYAAAIAAAAPMQAAACEAAAAPPwYAAAIAAAAPMgAAAEAAAAAPQAYAAAIAAAAPMwAAACMAAAAPQQYAAAIAAAAPNAAAACQAAAAPQgYAAAIAAAAPNQAAACUAAAAPQwYAAAIAAAAPNgAAAF4AAAAPRAYAAAIAAAAPNwAAACYAAAAPRQYAAAIAAAAPOAAAACoAAAAPRgYAAAIAAAAPOQAAACgAAAAPRwYAAAIAAAAPMAAAACkAAAAPSAYAAAIAAAAPLQAAAF8AAAAPSQYAAAIAAAAPPQAAACsAAAAPSgYAAAQAAAAPcQAAAFEAAADK////6v///w9LBgAABAAAAA93AAAAVwAAAMP////j////D0wGAAAEAAAAD2UAAABFAAAA1f////X///8PTQYAAAQAAAAPcgAAAFIAAADL////6////w9OBgAABAAAAA90AAAAVAAAAMX////l////D08GAAAEAAAAD3kAAABZAAAAzv///+7///8PUAYAAAQAAAAPdQAAAFUAAADH////5////w9RBgAABAAAAA9pAAAASQAAANv////7////D1IGAAAEAAAAD28AAABPAAAArv///77///8PUwYAAAQAAAAPcAAAAFAAAADa////+v///w9UBgAABAAAAA9bAAAAewAAAMj////o////D1UGAAAEAAAAD10AAAB9AAAAJwAAACcAAAAPVgYAAAQAAAAPYQAAAEEAAADG////5v///w9XBgAABAAAAA9zAAAAUwAAANn////5////D1gGAAAEAAAAD2QAAABEAAAA1/////f///8PWQYAAAQAAAAPZgAAAEYAAADB////4f///w9aBgAABAAAAA9nAAAARwAAAND////w////D1sGAAAEAAAAD2gAAABIAAAA0v////L///8PXAYAAAQAAAAPagAAAEoAAADP////7////w9dBgAABAAAAA9rAAAASwAAAMz////s////D14GAAAEAAAAD2wAAABMAAAAxP///+T///8PXwYAAAQAAAAPOwAAADoAAADW////9v///w9gBgAABAAAAA8nAAAAIgAAANz////8////D2EGAAAEAAAAD1wAAAB8AAAALwAAAHwAAAAPYgYAAAQAAAAPegAAAFoAAADR////8f///w9jBgAABAAAAA94AAAAWAAAAN7////+////D2QGAAAEAAAAD2MAAABDAAAA0/////P///8PZQYAAAQAAAAPdgAAAFYAAADN////7f///w9mBgAABAAAAA9iAAAAQgAAAKb///+2////D2cGAAAEAAAAD24AAABOAAAA1P////T///8PaAYAAAQAAAAPbQAAAE0AAADY////+P///w9pBgAABAAAAA8sAAAAPAAAAML////i////D2oGAAAEAAAADy4AAAA+AAAAwP///+D///8PawYAAAQAAAAPLwAAAD8AAAAuAAAALAAAAA9sBgAABAAAAA88AAAAPgAAAHwAAACm////D20GAAAAAAAADw9uBgAAAgAAAA9gAAAAfgAAAA9vBgAAAgAAAA8xAAAAIQAAAA9wBgAAAgAAAA8yAAAAQAAAAA9xBgAAAgAAAA8zAAAAIwAAAA9yBgAAAgAAAA80AAAAJAAAAA9zBgAAAgAAAA81AAAAJQAAAA90BgAAAgAAAA82AAAAXgAAAA91BgAAAgAAAA83AAAAJgAAAA92BgAAAgAAAA84AAAAKgAAAA93BgAAAgAAAA85AAAAKAAAAA94BgAAAgAAAA8wAAAAKQAAAA95BgAAAgAAAA8tAAAAXwAAAA96BgAAAgAAAA89AAAAKwAAAA97BgAABAAAAA9xAAAAUQAAAMr////q////D3wGAAAEAAAAD3cAAABXAAAAw////+P///8PfQYAAAQAAAAPZQAAAEUAAADV////9f///w9+BgAABAAAAA9yAAAAUgAAAMv////r////D38GAAAEAAAAD3QAAABUAAAAxf///+X///8PgAYAAAQAAAAPeQAAAFkAAADO////7v///w+BBgAABAAAAA91AAAAVQAAAMf////n////D4IGAAAEAAAAD2kAAABJAAAA2/////v///8PgwYAAAQAAAAPbwAAAE8AAADd/////f///w+EBgAABAAAAA9wAAAAUAAAANr////6////D4UGAAAEAAAAD1sAAAB7AAAAyP///+j///8PhgYAAAQAAAAPXQAAAH0AAADf/////////w+HBgAABAAAAA9hAAAAQQAAAMb////m////D4gGAAAEAAAAD3MAAABTAAAA2f////n///8PiQYAAAQAAAAPZAAAAEQAAADX////9////w+KBgAABAAAAA9mAAAARgAAAMH////h////D4sGAAAEAAAAD2cAAABHAAAA0P////D///8PjAYAAAQAAAAPaAAAAEgAAADS////8v///w+NBgAABAAAAA9qAAAASgAAAM/////v////D44GAAAEAAAAD2sAAABLAAAAzP///+z///8PjwYAAAQAAAAPbAAAAEwAAADE////5P///w+QBgAABAAAAA87AAAAOgAAANb////2////D5EGAAAEAAAADycAAAAiAAAA3P////z///8PkgYAAAIAAAAPXAAAAHwAAAAPkwYAAAQAAAAPegAAAFoAAADR////8f///w+UBgAABAAAAA94AAAAWAAAAN7////+////D5UGAAAEAAAAD2MAAABDAAAA0/////P///8PlgYAAAQAAAAPdgAAAFYAAADN////7f///w+XBgAABAAAAA9iAAAAQgAAAMn////p////D5gGAAAEAAAAD24AAABOAAAA1P////T///8PmQYAAAQAAAAPbQAAAE0AAADY////+P///w+aBgAABAAAAA8sAAAAPAAAAML////i////D5sGAAAEAAAADy4AAAA+AAAAwP///+D///8PnAYAAAIAAAAPLwAAAD8AAAAPnQYAAAAAAAAPD54GAAAAAAAADw+fBgAAAgAAAA9gAAAAfgAAAA+gBgAAAgAAAA8xAAAAIQAAAA+hBgAAAgAAAA8yAAAAQAAAAA+iBgAAAgAAAA8zAAAAIwAAAA+jBgAAAgAAAA80AAAAJAAAAA+kBgAAAgAAAA81AAAAJQAAAA+lBgAAAgAAAA82AAAAXgAAAA+mBgAAAgAAAA83AAAAJgAAAA+nBgAAAgAAAA84AAAAKgAAAA+oBgAAAgAAAA85AAAAKAAAAA+pBgAAAgAAAA8wAAAAKQAAAA+qBgAAAgAAAA8tAAAAXwAAAA+rBgAAAgAAAA89AAAAKwAAAA+sBgAABAAAAA9xAAAAUQAAAMr////q////D60GAAAEAAAAD3cAAABXAAAAw////+P///8PrgYAAAQAAAAPZQAAAEUAAADV////9f///w+vBgAABAAAAA9yAAAAUgAAAMv////r////D7AGAAAEAAAAD3QAAABUAAAAxf///+X///8PsQYAAAQAAAAPeQAAAFkAAADO////7v///w+yBgAABAAAAA91AAAAVQAAAMf////n////D7MGAAAEAAAAD2kAAABJAAAA2/////v///8PtAYAAAQAAAAPbwAAAE8AAADd/////f///w+1BgAABAAAAA9wAAAAUAAAANr////6////D7YGAAAEAAAAD1sAAAB7AAAAyP///+j///8PtwYAAAQAAAAPXQAAAH0AAADf/////////w+4BgAABAAAAA9hAAAAQQAAAMb////m////D7kGAAAEAAAAD3MAAABTAAAA2f////n///8PugYAAAQAAAAPZAAAAEQAAADX////9////w+7BgAABAAAAA9mAAAARgAAAMH////h////D7wGAAAEAAAAD2cAAABHAAAA0P////D///8PvQYAAAQAAAAPaAAAAEgAAADS////8v///w++BgAABAAAAA9qAAAASgAAAM/////v////D78GAAAEAAAAD2sAAABLAAAAzP///+z///8PwAYAAAQAAAAPbAAAAEwAAADE////5P///w/BBgAABAAAAA87AAAAOgAAANb////2////D8IGAAAEAAAADycAAAAiAAAA3P////z///8PwwYAAAIAAAAPXAAAAHwAAAAPxAYAAAQAAAAPegAAAFoAAADR////8f///w/FBgAABAAAAA94AAAAWAAAAN7////+////D8YGAAAEAAAAD2MAAABDAAAA0/////P///8PxwYAAAQAAAAPdgAAAFYAAADN////7f///w/IBgAABAAAAA9iAAAAQgAAAMn////p////D8kGAAAEAAAAD24AAABOAAAA1P////T///8PygYAAAQAAAAPbQAAAE0AAADY////+P///w/LBgAABAAAAA8sAAAAPAAAAML////i////D8wGAAAEAAAADy4AAAA+AAAAwP///+D///8PzQYAAAIAAAAPLwAAAD8AAAAPzgYAAAIAAAAPPAAAAD4AAAAPzwYAAAAAAAAPD9AGAAACAAAADygAAAApAAAAD9EGAAACAAAADzEAAAAhAAAAD9IGAAACAAAADzIAAAAiAAAAD9MGAAACAAAADzMAAAAvAAAAD9QGAAACAAAADzQAAAAkAAAAD9UGAAACAAAADzUAAAA6AAAAD9YGAAACAAAADzYAAAAsAAAAD9cGAAACAAAADzcAAAAuAAAAD9gGAAACAAAADzgAAAA7AAAAD9kGAAACAAAADzkAAAA/AAAAD9oGAAACAAAADzAAAAAlAAAAD9sGAAACAAAADy0AAABfAAAAD9wGAAACAAAADz0AAAArAAAAD90GAAACAAAAD8r////q////D94GAAACAAAAD8P////j////D98GAAACAAAAD9X////1////D+AGAAACAAAAD8v////r////D+EGAAACAAAAD8X////l////D+IGAAACAAAAD87////u////D+MGAAACAAAAD8f////n////D+QGAAACAAAAD9v////7////D+UGAAACAAAAD93////9////D+YGAAACAAAAD9r////6////D+cGAAACAAAAD8j////o////D+gGAAACAAAAD9//////////D+kGAAACAAAAD8b////m////D+oGAAACAAAAD9n////5////D+sGAAACAAAAD9f////3////D+wGAAACAAAAD8H////h////D+0GAAACAAAAD9D////w////D+4GAAACAAAAD9L////y////D+8GAAACAAAAD8/////v////D/AGAAACAAAAD8z////s////D/EGAAACAAAAD8T////k////D/IGAAACAAAAD9b////2////D/MGAAACAAAAD9z////8////D/QGAAACAAAAD1wAAAB8AAAAD/UGAAACAAAAD9H////x////D/YGAAACAAAAD97////+////D/cGAAACAAAAD9P////z////D/gGAAACAAAAD83////t////D/kGAAACAAAAD8n////p////D/oGAAACAAAAD9T////0////D/sGAAACAAAAD9j////4////D/wGAAACAAAAD8L////i////D/0GAAACAAAAD8D////g////D/4GAAACAAAADy8AAAA/AAAAD/8GAAACAAAADzwAAAA+AAAADwAHAAAAAAAADw8BBwAAAgAAAA9gAAAAfgAAAA8CBwAAAgAAAA8xAAAAIQAAAA8DBwAAAgAAAA8yAAAAQAAAAA8EBwAAAgAAAA8zAAAAIwAAAA8FBwAAAgAAAA80AAAAJAAAAA8GBwAAAgAAAA81AAAAJQAAAA8HBwAAAgAAAA82AAAAXgAAAA8IBwAAAgAAAA83AAAAJgAAAA8JBwAAAgAAAA84AAAAKgAAAA8KBwAAAgAAAA85AAAAKAAAAA8LBwAAAgAAAA8wAAAAKQAAAA8MBwAAAgAAAA8tAAAAXwAAAA8NBwAAAgAAAA89AAAAKwAAAA8OBwAABAAAAA9xAAAAUQAAAOn////J////Dw8HAAAEAAAAD3cAAABXAAAA9v///9b///8PEAcAAAQAAAAPZQAAAEUAAADz////0////w8RBwAABAAAAA9yAAAAUgAAAOr////K////DxIHAAAEAAAAD3QAAABUAAAA5f///8X///8PEwcAAAQAAAAPeQAAAFkAAADt////zf///w8UBwAABAAAAA91AAAAVQAAAOP////D////DxUHAAAEAAAAD2kAAABJAAAA+P///9j///8PFgcAAAQAAAAPbwAAAE8AAAD5////2f///w8XBwAABAAAAA9wAAAAUAAAAOf////H////DxgHAAAEAAAAD1sAAAB7AAAA9f///9X///8PGQcAAAQAAAAPXQAAAH0AAAD6////2v///w8aBwAABAAAAA9hAAAAQQAAAPT////U////DxsHAAAEAAAAD3MAAABTAAAA+////9v///8PHAcAAAQAAAAPZAAAAEQAAADi////wv///w8dBwAABAAAAA9mAAAARgAAAOD////A////Dx4HAAAEAAAAD2cAAABHAAAA7////8////8PHwcAAAQAAAAPaAAAAEgAAADw////0P///w8gBwAABAAAAA9qAAAASgAAAO7////O////DyEHAAAEAAAAD2sAAABLAAAA6////8v///8PIgcAAAQAAAAPbAAAAEwAAADk////xP///w8jBwAABAAAAA87AAAAOgAAAOb////G////DyQHAAAEAAAADycAAAAiAAAA/f///93///8PJQcAAAIAAAAPXAAAAHwAAAAPJgcAAAQAAAAPegAAAFoAAAD/////3////w8nBwAABAAAAA94AAAAWAAAAPf////X////DygHAAAEAAAAD2MAAABDAAAA8f///9H///8PKQcAAAQAAAAPdgAAAFYAAADs////zP///w8qBwAABAAAAA9iAAAAQgAAAOj////I////DysHAAAEAAAAD24AAABOAAAA8v///9L///8PLAcAAAQAAAAPbQAAAE0AAAD8////3P///w8tBwAABAAAAA8sAAAAPAAAAOH////B////Dy4HAAAEAAAADy4AAAA+AAAA/v///97///8PLwcAAAIAAAAPLwAAAD8AAAAPMAcAAAIAAAAPPAAAAD4AAAAPMQcAAAAAAAAPDzIHAAACAAAAD2AAAAB+AAAADzMHAAACAAAADzEAAAAhAAAADzQHAAACAAAADzIAAABAAAAADzUHAAACAAAADzMAAAAjAAAADzYHAAACAAAADzQAAAAkAAAADzcHAAACAAAADzUAAAAlAAAADzgHAAACAAAADzYAAABeAAAADzkHAAACAAAADzcAAAAmAAAADzoHAAACAAAADzgAAAAqAAAADzsHAAACAAAADzkAAAAoAAAADzwHAAACAAAADzAAAAApAAAADz0HAAACAAAADy0AAABfAAAADz4HAAACAAAADz0AAAArAAAADz8HAAAEAAAAD3EAAABRAAAA0f////H///8PQAcAAAQAAAAPdwAAAFcAAADX////9////w9BBwAABAAAAA9lAAAARQAAAMX////l////D0IHAAAEAAAAD3IAAABSAAAA0v////L///8PQwcAAAQAAAAPdAAAAFQAAADU////9P///w9EBwAABAAAAA95AAAAWQAAANn////5////D0UHAAAEAAAAD3UAAABVAAAA1f////X///8PRgcAAAQAAAAPaQAAAEkAAADJ////6f///w9HBwAABAAAAA9vAAAATwAAAM/////v////D0gHAAAEAAAAD3AAAABQAAAA0P////D///8PSQcAAAQAAAAPWwAAAHsAAADb////+////w9KBwAABAAAAA9dAAAAfQAAAN3////9////D0sHAAAEAAAAD2EAAABBAAAAwf///+H///8PTAcAAAQAAAAPcwAAAFMAAADT////8////w9NBwAABAAAAA9kAAAARAAAAMT////k////D04HAAAEAAAAD2YAAABGAAAAxv///+b///8PTwcAAAQAAAAPZwAAAEcAAADH////5////w9QBwAABAAAAA9oAAAASAAAAMj////o////D1EHAAAEAAAAD2oAAABKAAAAyv///+r///8PUgcAAAQAAAAPawAAAEsAAADL////6////w9TBwAABAAAAA9sAAAATAAAAMz////s////D1QHAAACAAAADzsAAAA6AAAAD1UHAAACAAAADycAAAAiAAAAD1YHAAACAAAAD1wAAAB8AAAAD1cHAAAEAAAAD3oAAABaAAAA2v////r///8PWAcAAAQAAAAPeAAAAFgAAADY////+P///w9ZBwAABAAAAA9jAAAAQwAAAMP////j////D1oHAAAEAAAAD3YAAABWAAAA1v////b///8PWwcAAAQAAAAPYgAAAEIAAADC////4v///w9cBwAABAAAAA9uAAAATgAAAM7////u////D10HAAAEAAAAD20AAABNAAAAzf///+3///8PXgcAAAIAAAAPLAAAADwAAAAPXwcAAAIAAAAPLgAAAD4AAAAPYAcAAAIAAAAPLwAAAD8AAAAPYQcAAAIAAAAPPAAAAD4AAAAPYgcAAAAAAAAPD2MHAAAEAAAAD2AAAAB+AAAArf///73///8PZAcAAAQAAAAPMQAAACEAAAAxAAAAIQAAAA9lBwAABAAAAA8yAAAAQAAAADIAAAAiAAAAD2YHAAAEAAAADzMAAAAjAAAAMwAAACcAAAAPZwcAAAQAAAAPNAAAACQAAAA0AAAAKgAAAA9oBwAABAAAAA81AAAAJQAAADUAAAA6AAAAD2kHAAAEAAAADzYAAABeAAAANgAAACwAAAAPagcAAAQAAAAPNwAAACYAAAA3AAAALgAAAA9rBwAABAAAAA84AAAAKgAAADgAAAA7AAAAD2wHAAAEAAAADzkAAAAoAAAAOQAAACgAAAAPbQcAAAQAAAAPMAAAACkAAAAwAAAAKQAAAA9uBwAABAAAAA8tAAAAXwAAAC0AAABfAAAAD28HAAAEAAAADz0AAAArAAAAPQAAACsAAAAPcAcAAAQAAAAPcQAAAFEAAADK////6v///w9xBwAABAAAAA93AAAAVwAAAMP////j////D3IHAAAEAAAAD2UAAABFAAAA1f////X///8PcwcAAAQAAAAPcgAAAFIAAADL////6////w90BwAABAAAAA90AAAAVAAAAMX////l////D3UHAAAEAAAAD3kAAABZAAAAzv///+7///8PdgcAAAQAAAAPdQAAAFUAAADH////5////w93BwAABAAAAA9pAAAASQAAANv////7////D3gHAAAEAAAAD28AAABPAAAA3f////3///8PeQcAAAQAAAAPcAAAAFAAAADa////+v///w96BwAABAAAAA9bAAAAewAAAMj////o////D3sHAAAEAAAAD10AAAB9AAAAp////7f///8PfAcAAAQAAAAPYQAAAEEAAADG////5v///w99BwAABAAAAA9zAAAAUwAAAKb///+2////D34HAAAEAAAAD2QAAABEAAAA1/////f///8PfwcAAAQAAAAPZgAAAEYAAADB////4f///w+ABwAABAAAAA9nAAAARwAAAND////w////D4EHAAAEAAAAD2gAAABIAAAA0v////L///8PggcAAAQAAAAPagAAAEoAAADP////7////w+DBwAABAAAAA9rAAAASwAAAMz////s////D4QHAAAEAAAAD2wAAABMAAAAxP///+T///8PhQcAAAQAAAAPOwAAADoAAADW////9v///w+GBwAABAAAAA8nAAAAIgAAAKT///+0////D4cHAAAEAAAAD1wAAAB8AAAAXAAAAHwAAAAPiAcAAAQAAAAPegAAAFoAAADR////8f///w+JBwAABAAAAA94AAAAWAAAAN7////+////D4oHAAAEAAAAD2MAAABDAAAA0/////P///8PiwcAAAQAAAAPdgAAAFYAAADN////7f///w+MBwAABAAAAA9iAAAAQgAAAMn////p////D40HAAAEAAAAD24AAABOAAAA1P////T///8PjgcAAAQAAAAPbQAAAE0AAADY////+P///w+PBwAABAAAAA8sAAAAPAAAAML////i////D5AHAAAEAAAADy4AAAA+AAAAwP///+D///8PkQcAAAQAAAAPLwAAAD8AAAAvAAAAPwAAAA+SBwAAAgAAAA88AAAAPgAAAA+TBwAAAAAAAA8PlAcAAAIAAAAPrf///73///8PlQcAAAIAAAAPMQAAACEAAAAPlgcAAAIAAAAPMgAAACIAAAAPlwcAAAIAAAAPMwAAACcAAAAPmAcAAAIAAAAPNAAAADsAAAAPmQcAAAIAAAAPNQAAACUAAAAPmgcAAAIAAAAPNgAAADoAAAAPmwcAAAIAAAAPNwAAAD8AAAAPnAcAAAIAAAAPOAAAACoAAAAPnQcAAAIAAAAPOQAAACgAAAAPngcAAAIAAAAPMAAAACkAAAAPnwcAAAIAAAAPLQAAAF8AAAAPoAcAAAIAAAAPPQAAACsAAAAPoQcAAAIAAAAPyv///+r///8PogcAAAIAAAAPw////+P///8PowcAAAIAAAAP1f////X///8PpAcAAAIAAAAPy////+v///8PpQcAAAIAAAAPxf///+X///8PpgcAAAIAAAAPzv///+7///8PpwcAAAIAAAAPx////+f///8PqAcAAAIAAAAP2/////v///8PqQcAAAIAAAAP3f////3///8PqgcAAAIAAAAP2v////r///8PqwcAAAIAAAAPyP///+j///8PrAcAAAIAAAAPp////7f///8PrQcAAAIAAAAPxv///+b///8PrgcAAAIAAAAPpv///7b///8PrwcAAAIAAAAP1/////f///8PsAcAAAIAAAAPwf///+H///8PsQcAAAIAAAAP0P////D///8PsgcAAAIAAAAP0v////L///8PswcAAAIAAAAPz////+////8PtAcAAAIAAAAPzP///+z///8PtQcAAAIAAAAPxP///+T///8PtgcAAAIAAAAP1v////b///8PtwcAAAIAAAAPpP///7T///8PuAcAAAIAAAAPXAAAAC8AAAAPuQcAAAIAAAAP0f////H///8PugcAAAIAAAAP3v////7///8PuwcAAAIAAAAP0/////P///8PvAcAAAIAAAAPzf///+3///8PvQcAAAIAAAAPyf///+n///8PvgcAAAIAAAAP1P////T///8PvwcAAAIAAAAP2P////j///8PwAcAAAIAAAAPwv///+L///8PwQcAAAIAAAAPwP///+D///8PwgcAAAIAAAAPLgAAACwAAAAPwwcAAAIAAAAPPAAAAD4AAAAPxAcAAAAAAAAPD8UHAAACAAAAD6P///+z////D8YHAAACAAAADzEAAAAhAAAAD8cHAAACAAAADzIAAAAiAAAAD8gHAAACAAAADzMAAAAnAAAAD8kHAAACAAAADzQAAAA7AAAAD8oHAAACAAAADzUAAAAlAAAAD8sHAAACAAAADzYAAAA6AAAAD8wHAAACAAAADzcAAAA/AAAAD80HAAACAAAADzgAAAAqAAAAD84HAAACAAAADzkAAAAoAAAAD88HAAACAAAADzAAAAApAAAAD9AHAAACAAAADy0AAABfAAAAD9EHAAACAAAADz0AAAArAAAAD9IHAAACAAAAD8r////q////D9MHAAACAAAAD8P////j////D9QHAAACAAAAD9X////1////D9UHAAACAAAAD8v////r////D9YHAAACAAAAD8X////l////D9cHAAACAAAAD87////u////D9gHAAACAAAAD8f////n////D9kHAAACAAAAD9v////7////D9oHAAACAAAAD93////9////D9sHAAACAAAAD9r////6////D9wHAAACAAAAD8j////o////D90HAAACAAAAD9//////////D94HAAACAAAAD8b////m////D98HAAACAAAAD9n////5////D+AHAAACAAAAD9f////3////D+EHAAACAAAAD8H////h////D+IHAAACAAAAD9D////w////D+MHAAACAAAAD9L////y////D+QHAAACAAAAD8/////v////D+UHAAACAAAAD8z////s////D+YHAAACAAAAD8T////k////D+cHAAACAAAAD9b////2////D+gHAAACAAAAD9z////8////D+kHAAACAAAAD1wAAAAvAAAAD+oHAAACAAAAD9H////x////D+sHAAACAAAAD97////+////D+wHAAACAAAAD9P////z////D+0HAAACAAAAD83////t////D+4HAAACAAAAD8n////p////D+8HAAACAAAAD9T////0////D/AHAAACAAAAD9j////4////D/EHAAACAAAAD8L////i////D/IHAAACAAAAD8D////g////D/MHAAACAAAADy4AAAAsAAAA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IgAAALf///8PjAgAAAMAAAAPMwAAACsAAABeAAAAD40IAAADAAAADzQAAAAhAAAAov///w+OCAAABAAAAA81AAAAJQAAADAAAACw////D48IAAADAAAADzYAAAAvAAAAsv///w+QCAAAAwAAAA83AAAAPQAAAGAAAAAPkQgAAAMAAAAPOAAAACgAAAD/////D5IIAAADAAAADzkAAAApAAAAtP///w+TCAAAAwAAAA/2////1v///73///8PlAgAAAMAAAAP/P///9z///+o////D5UIAAADAAAAD/P////T////uP///w+WCAAAAwAAAA9xAAAAUQAAAFwAAAAPlwgAAAMAAAAPdwAAAFcAAAB8AAAAD5gIAAACAAAAD2UAAABFAAAAD5kIAAACAAAAD3IAAABSAAAAD5oIAAACAAAAD3QAAABUAAAAD5sIAAACAAAAD3oAAABaAAAAD5wIAAACAAAAD3UAAABVAAAAD50IAAADAAAAD2kAAABJAAAAzf///w+eCAAAAwAAAA9vAAAATwAAAPj///8PnwgAAAIAAAAPcAAAAFAAAAAPoAgAAAMAAAAP9f///9X////3////D6EIAAADAAAAD/r////a////1////w+iCAAAAgAAAA9hAAAAQQAAAA+jCAAAAwAAAA9zAAAAUwAAAPD///8PpAgAAAMAAAAPZAAAAEQAAADQ////D6UIAAADAAAAD2YAAABGAAAAWwAAAA+mCAAAAwAAAA9nAAAARwAAAF0AAAAPpwgAAAIAAAAPaAAAAEgAAAAPqAgAAAMAAAAPagAAAEoAAADt////D6kIAAADAAAAD2sAAABLAAAAs////w+qCAAAAwAAAA9sAAAATAAAAKP///8PqwgAAAMAAAAP6f///8n///8kAAAAD6wIAAADAAAAD+H////B////3////w+tCAAAAwAAAA/7////2////6T///8PrggAAAMAAAAPeQAAAFkAAAA+AAAAD68IAAADAAAAD3gAAABYAAAAIwAAAA+wCAAAAwAAAA9jAAAAQwAAACYAAAAPsQgAAAMAAAAPdgAAAFYAAABAAAAAD7IIAAADAAAAD2IAAABCAAAAewAAAA+zCAAAAwAAAA9uAAAATgAAAH0AAAAPtAgAAAIAAAAPbQAAAE0AAAAPtQgAAAMAAAAPLAAAAD8AAAA7AAAA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TgAAAA8WCQAAAgAAAA9tAAAATQAAAA8XCQAAAgAAAA8sAAAAOwAAAA8YCQAAAgAAAA8uAAAAOgAAAA8ZCQAAAgAAAA8tAAAAXwAAAA8aCQAAAgAAAA88AAAAPgAAAA8bCQAAAAAAAA8PHAkAAAIAAAAPYAAAAH4AAAAPHQkAAAIAAAAPMQAAACEAAAAPHgkAAAIAAAAPMgAAACIAAAAPHwkAAAIAAAAPMwAAACMAAAAPIAkAAAIAAAAPNAAAACQAAAAPIQkAAAIAAAAPNQAAACUAAAAPIgkAAAIAAAAPNgAAACYAAAAPIwkAAAIAAAAPNwAAAC8AAAAPJAkAAAIAAAAPOAAAACgAAAAPJQkAAAIAAAAPOQAAACkAAAAPJgkAAAIAAAAPMAAAAD0AAAAPJwkAAAIAAAAPJwAAAD8AAAAPKAkAAAIAAAAPKwAAACoAAAAPKQkAAAIAAAAPqf///7n///8PKgkAAAIAAAAPqv///7r///8PKwkAAAIAAAAPxf///+X///8PLAkAAAIAAAAP0v////L///8PLQkAAAIAAAAP1P////T///8PLgkAAAIAAAAP2v////r///8PLwkAAAIAAAAP1f////X///8PMAkAAAIAAAAPyf///+n///8PMQkAAAIAAAAPz////+////8PMgkAAAIAAAAP0P////D///8PMwkAAAIAAAAP2/////v///8PNAkAAAIAAAAPWwAAAF0AAAAPNQkAAAIAAAAPwf///+H///8PNgkAAAIAAAAP0/////P///8PNwkAAAIAAAAPxP///+T///8POAkAAAIAAAAPxv///+b///8POQkAAAIAAAAPx////+f///8POgkAAAIAAAAPyP///+j///8POwkAAAIAAAAPqP///7j///8PPAkAAAIAAAAPy////+v///8PPQkAAAIAAAAPzP///+z///8PPgkAAAIAAAAP3v////7///8PPwkAAAIAAAAPq////7v///8PQAkAAAIAAAAPLQAAAF8AAAAPQQkAAAIAAAAPof///7H///8PQgkAAAIAAAAPr////7////8PQwkAAAIAAAAPw////+P///8PRAkAAAIAAAAP1/////f///8PRQkAAAIAAAAPwv///+L///8PRgkAAAIAAAAPzv///+7///8PRwkAAAIAAAAPzf///+3///8PSAkAAAIAAAAPLAAAADsAAAAPSQkAAAIAAAAPLgAAADoAAAAPSgkAAAIAAAAP1v////b///8PSwkAAAIAAAAPPAAAAD4AAAAPTAkAAAAAAAAPD00JAAACAAAAD2AAAAB+AAAAD04JAAACAAAADzEAAAAhAAAAD08JAAAEAAAADzIAAABAAAAAMgAAACIAAAAPUAkAAAIAAAAPMwAAACMAAAAPUQkAAAIAAAAPNAAAACQAAAAPUgkAAAIAAAAPNQAAACUAAAAPUwkAAAQAAAAPNgAAAF4AAAA2AAAAJgAAAA9UCQAABAAAAA83AAAAJgAAADcAAAAvAAAAD1UJAAAEAAAADzgAAAAqAAAAOAAAACgAAAAPVgkAAAQAAAAPOQAAACgAAAA5AAAAKQAAAA9XCQAABAAAAA8wAAAAKQAAADAAAAA9AAAAD1gJAAAEAAAADy0AAABfAAAAJwAAAD8AAAAPWQkAAAQAAAAPPQAAACsAAAArAAAAKgAAAA9aCQAABAAAAA9xAAAAUQAAAKn///+5////D1sJAAAEAAAAD3cAAABXAAAAqv///7r///8PXAkAAAQAAAAPZQAAAEUAAADF////5f///w9dCQAABAAAAA9yAAAAUgAAANL////y////D14JAAAEAAAAD3QAAABUAAAA1P////T///8PXwkAAAQAAAAPeQAAAFkAAADa////+v///w9gCQAABAAAAA91AAAAVQAAANX////1////D2EJAAAEAAAAD2kAAABJAAAAyf///+n///8PYgkAAAQAAAAPbwAAAE8AAADP////7////w9jCQAABAAAAA9wAAAAUAAAAND////w////D2QJAAAEAAAAD1sAAAB7AAAA2/////v///8PZQkAAAQAAAAPXQAAAH0AAABbAAAAXQAAAA9mCQAABAAAAA9hAAAAQQAAAMH////h////D2cJAAAEAAAAD3MAAABTAAAA0/////P///8PaAkAAAQAAAAPZAAAAEQAAADE////5P///w9pCQAABAAAAA9mAAAARgAAAMb////m////D2oJAAAEAAAAD2cAAABHAAAAx////+f///8PawkAAAQAAAAPaAAAAEgAAADI////6P///w9sCQAABAAAAA9qAAAASgAAAKj///+4////D20JAAAEAAAAD2sAAABLAAAAy////+v///8PbgkAAAQAAAAPbAAAAEwAAADM////7P///w9vCQAABAAAAA87AAAAOgAAAN7////+////D3AJAAAEAAAADycAAAAiAAAAq////7v///8PcQkAAAQAAAAPXAAAAHwAAAAtAAAAXwAAAA9yCQAABAAAAA96AAAAWgAAAKH///+x////D3MJAAAEAAAAD3gAAABYAAAAr////7////8PdAkAAAQAAAAPYwAAAEMAAADD////4////w91CQAABAAAAA92AAAAVgAAANf////3////D3YJAAAEAAAAD2IAAABCAAAAwv///+L///8PdwkAAAQAAAAPbgAAAE4AAADO////7v///w94CQAABAAAAA9tAAAATQAAAM3////t////D3kJAAAEAAAADywAAAA8AAAALAAAADsAAAAPegkAAAQAAAAPLgAAAD4AAAAuAAAAOgAAAA97CQAABAAAAA8vAAAAPwAAANb////2////D3wJAAACAAAADzwAAAA+AAAAD30JAAAAAAAADw9+CQAAAgAAAA+4////qP///w9/CQAAAgAAAA8xAAAAIQAAAA+ACQAAAgAAAA8yAAAAIgAAAA+BCQAAAgAAAA8zAAAAIwAAAA+CCQAAAgAAAA80AAAAJAAAAA+DCQAAAgAAAA81AAAAJQAAAA+ECQAAAgAAAA82AAAAJgAAAA+FCQAAAgAAAA83AAAALwAAAA+GCQAAAgAAAA84AAAAKAAAAA+HCQAAAgAAAA85AAAAKQAAAA+ICQAAAgAAAA8wAAAAPQAAAA+JCQAAAgAAAA8nAAAAPwAAAA+KCQAAAgAAAA8rAAAAKgAAAA+LCQAAAgAAAA9xAAAAUQAAAA+MCQAAAgAAAA93AAAAVwAAAA+NCQAAAgAAAA9lAAAARQAAAA+OCQAAAgAAAA9yAAAAUgAAAA+PCQAAAgAAAA90AAAAVAAAAA+QCQAAAgAAAA96AAAAWgAAAA+RCQAAAgAAAA91AAAAVQAAAA+SCQAAAgAAAA9pAAAASQAAAA+TCQAAAgAAAA9vAAAATwAAAA+UCQAAAgAAAA9wAAAAUAAAAA+VCQAAAgAAAA+5////qf///w+WCQAAAgAAAA/w////0P///w+XCQAAAgAAAA9hAAAAQQAAAA+YCQAAAgAAAA9zAAAAUwAAAA+ZCQAAAgAAAA9kAAAARAAAAA+aCQAAAgAA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D2IKAAACAAAAD2sAAABLAAAAD2MKAAACAAAAD2wAAABMAAAAD2QKAAACAAAAD/T///8iAAAAD2UKAAACAAAAD6f///8hAAAAD2YKAAACAAAAD/L///8pAAAAD2cKAAACAAAAD3oAAABaAAAAD2gKAAACAAAAD3gAAABYAAAAD2kKAAACAAAAD2MAAABDAAAAD2oKAAACAAAAD3YAAABWAAAAD2sKAAACAAAAD2IAAABCAAAAD2wKAAACAAAAD24AAABOAAAAD20KAAACAAAAD20AAABNAAAAD24KAAACAAAADywAAAA/AAAAD28KAAACAAAADy4AAAA6AAAAD3AKAAACAAAADy0AAABfAAAAD3EKAAACAAAADzwAAAA+AAAAD3IKAAAAAAAADw9zCgAAAgAAAA9gAAAAfgAAAA90CgAAAgAAAA8xAAAAIQAAAA91CgAAAgAAAA8yAAAAQAAAAA92CgAAAgAAAA8zAAAAIwAAAA93CgAAAgAAAA80AAAAJAAAAA94CgAAAgAAAA81AAAAJQAAAA95CgAAAgAAAA82AAAAXgAAAA96CgAAAgAAAA83AAAAJgAAAA97CgAAAgAAAA84AAAAKgAAAA98CgAAAgAAAA85AAAAKAAAAA99CgAAAgAAAA8wAAAAKQAAAA9+CgAAAgAAAA8tAAAAXwAAAA9/CgAAAgAAAA89AAAAKwAAAA+ACgAABAAAAA9xAAAAUQAAAOT////E////D4EKAAAEAAAAD3cAAABXAAAA7P///8z///8PggoAAAQAAAAPZQAAAEUAAADp////yf///w+DCgAABAAAAA9yAAAAUgAAAPj////Y////D4QKAAAEAAAAD3QAAABUAAAAu////6v///8PhQoAAAQAAAAPeQAAAFkAAAD9////3f///w+GCgAABAAAAA91AAAAVQAAAPn////Z////D4cKAAAEAAAAD2kAAABJAAAA7f///83///8PiAoAAAQAAAAPbwAAAE8AAADz////0////w+JCgAABAAAAA9wAAAAUAAAAPb////W////D4oKAAACAAAAD1sAAAB7AAAAD4sKAAACAAAAD10AAAB9AAAAD4wKAAAEAAAAD2EAAABBAAAA4f///8H///8PjQoAAAQAAAAPcwAAAFMAAAC5////qf///w+OCgAABAAAAA9kAAAARAAAAO/////P////D48KAAAEAAAAD2YAAABGAAAA6////8v///8PkAoAAAQAAAAPZwAAAEcAAADg////wP///w+RCgAABAAAAA9oAAAASAAAAPr////a////D5IKAAAEAAAAD2oAAABKAAAA/P///9z///8PkwoAAAQAAAAPawAAAEsAAAD0////1P///w+UCgAABAAAAA9sAAAATAAAALX///+l////D5UKAAACAAAADzsAAAA6AAAAD5YKAAACAAAADycAAAAiAAAAD5cKAAACAAAAD1wAAAB8AAAAD5gKAAAEAAAAD3oAAABaAAAAvv///67///8PmQoAAAMAAAAPeAAAAFgAAACk////D5oKAAAEAAAAD2MAAABDAAAA6P///8j///8PmwoAAAQAAAAPdgAAAFYAAADn////x////w+cCgAAAgAAAA9iAAAAQgAAAA+dCgAABAAAAA9uAAAATgAAAPL////S////D54KAAAEAAAAD20AAABNAAAA5f///8X///8PnwoAAAIAAAAPLAAAADwAAAAPoAoAAAIAAAAPLgAAAD4AAAAPoQoAAAIAAAAPLwAAAD8AAAAPogoAAAIAAAAPPAAAAD4AAAAPowoAAAAAAAAPD6QKAAABAAAADzsAAAAPpQoAAAIAAAAPKwAAADEAAAAPpgoAAAIAAAAP7P///zIAAAAPpwoAAAIAAAAPuf///zMAAAAPqAoAAAIAAAAP6P///zQAAAAPqQoAAAIAAAAP+P///zUAAAAPqgoAAAIAAAAPvv///zYAAAAPqwoAAAIAAAAP/f///zcAAAAPrAoAAAIAAAAP4f///zgAAAAPrQoAAAIAAAAP7f///zkAAAAPrgoAAAQAAAAP6f///zAAAAC9////KQAAAA+vCgAAAgAAAA89AAAAJQAAAA+wCgAAAAAAAA8PsQoAAAMAAAAPcQAAAFEAAABcAAAAD7IKAAADAAAAD3cAAABXAAAAfAAAAA+zCgAAAgAAAA9lAAAARQAAAA+0CgAAAgAAAA9yAAAAUgAAAA+1CgAAAgAAAA90AAAAVAAAAA+2CgAAAgAAAA95AAAAWQAAAA+3CgAAAgAAAA91AAAAVQAAAA+4CgAAAgAAAA9pAAAASQAAAA+5CgAAAgAAAA9vAAAATwAAAA+6CgAAAgAAAA9wAAAAUAAAAA+7CgAABAAAAA/6////LwAAAFsAAAB7AAAAD7wKAAAEAAAADykAAAAoAAAAXQAAAH0AAAAPvQoAAAIAAAAPYQAAAEEAAAAPvgoAAAMAAAAPcwAAAFMAAADw////D78KAAADAAAAD2QAAABEAAAA0P///w/ACgAAAwAAAA9mAAAARgAAAFsAAAAPwQoAAAMAAAAPZwAAAEcAAABdAAAAD8IKAAACAAAAD2gAAABIAAAAD8MKAAACAAAAD2oAAABKAAAAD8QKAAADAAAAD2sAAABLAAAAs////w/FCgAAAwAAAA9sAAAATAAAAKP///8PxgoAAAMAAAAP+f///yIAAAAkAAAAD8cKAAADAAAAD6f///8hAAAA3////w/ICgAAAgAAAA+o////JwAAAA/JCgAAAwAAAA96AAAAWgAAAD4AAAAPygoAAAMAAAAPeAAAAFgAAAAjAAAAD8sKAAADAAAAD2MAAABDAAAAJgAAAA/MCgAAAwAAAA92AAAAVgAAAEAAAAAPzQoAAAMAAAAPYgAAAEIAAAB7AAAAD84KAAADAAAAD24AAABOAAAAfQAAAA/PCgAAAgAAAA9tAAAATQAAAA/QCgAAAwAAAA8sAAAAPwAAADwAAAAP0QoAAAMAAAAPLgAAADoAAAA+AAAAD9IKAAADAAAADy0AAABfAAAAKgAAAA/TCgAABAAAAA88AAAAPgAAAFwAAAB8AAAAD9QKAAAAAAAADw/VCgAAAQAAAA87AAAAD9YKAAACAAAADysAAAAxAAAAD9cKAAACAAAAD+z///8yAAAAD9gKAAACAAAAD7n///8zAAAAD9kKAAACAAAAD+j///80AAAAD9oKAAACAAAAD/j///81AAAAD9sKAAACAAAAD77///82AAAAD9wKAAACAAAAD/3///83AAAAD90KAAACAAAAD+H///84AAAAD94KAAACAAAAD+3///85AAAAD98KAAACAAAAD+n///8wAAAAD+AKAAACAAAADz0AAAAlAAAAD+EKAAACAAAAD7T///+3////D+IKAAACAAAAD3EAAABRAAAAD+MKAAACAAAAD3cAAABXAAAAD+QKAAACAAAAD2UAAABFAAAAD+UKAAACAAAAD3IAAABSAAAAD+YKAAACAAAAD3QAAABUAAAAD+cKAAACAAAAD3oAAABaAAAAD+gKAAACAAAAD3UAAABVAAAAD+kKAAAC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AA9lAAAARQAAAA8XDAAAAgAAAA9hAAAAQQAAAA8YDAAAAgAAAA/8////3P///w8ZDAAAAgAAAA90AAAAVAAAAA8aDAAAAgAAAA9rAAAASwAAAA8bDAAAAgAAAA9tAAAATQAAAA8cDAAAAgAAAA9sAAAATAAAAA8dDAAAAgAAAA95AAAAWQAAAA8eDAAAAgAAAA+6////qv///w8fDAAAAgAAAA94AAAAWAAAAA8gDAAAAgAAAA9qAAAASgAAAA8hDAAAAgAAAA/2////1v///w8iDAAAAgAAAA92AAAAVgAAAA8jDAAAAgAAAA9jAAAAQwAAAA8kDAAAAgAAAA/n////x////w8lDAAAAgAAAA96AAAAWgAAAA8mDAAAAgAAAA9zAAAAUwAAAA8nDAAAAgAAAA9iAAAAQgAAAA8oDAAAAgAAAA8uAAAAOgAAAA8pDAAAAgAAAA8sAAAAOwAAAA8qDAAAAgAAAA88AAAAPgAAAA8rDAAAAAAAAA8PLAwAAAMAAAAPYAAAAH4AAAA7AAAADy0MAAACAAAADzEAAAAhAAAADy4MAAACAAAADzIAAABAAAAADy8MAAACAAAADzMAAAAjAAAADzAMAAACAAAADzQAAAAkAAAADzEMAAACAAAADzUAAAAlAAAADzIMAAACAAAADzYAAABeAAAADzMMAAACAAAADzcAAAAmAAAADzQMAAACAAAADzgAAAAqAAAADzUMAAACAAAADzkAAAAoAAAADzYMAAACAAAADzAAAAApAAAADzcMAAACAAAADy0AAABfAAAADzgMAAACAAAADz0AAAArAAAADzkMAAADAAAAD3EAAABRAAAALwAAAA86DAAAAwAAAA93AAAAVwAAACcAAAAPOwwAAAMAAAAPZQAAAEUAAAD3////DzwMAAADAAAAD3IAAABSAAAA+P///w89DAAAAwAAAA90AAAAVAAAAOD///8PPgwAAAMAAAAPeQAAAFkAAADo////Dz8MAAADAAAAD3UAAABVAAAA5f///w9ADAAAAwAAAA9pAAAASQAAAO////8PQQwAAAMAAAAPbwAAAE8AAADt////D0IMAAADAAAAD3AAAABQAAAA9P///w9DDAAAAgAAAA9bAAAAewAAAA9EDAAAAgAAAA9dAAAAfQAAAA9FDAAAAwAAAA9hAAAAQQAAAPn///8PRgwAAAMAAAAPcwAAAFMAAADj////D0cMAAADAAAAD2QAAABEAAAA4v///w9IDAAAAwAAAA9mAAAARgAAAOv///8PSQwAAAMAAAAPZwAAAEcAAADy////D0oMAAADAAAAD2gAAABIAAAA6f///w9LDAAAAwAAAA9qAAAASgAAAOf///8PTAwAAAMAAAAPawAAAEsAAADs////D00MAAADAAAAD2wAAABMAAAA6v///w9ODAAAAwAAAA87AAAAOgAAAPP///8PTwwAAAMAAAAPJwAAACIAAAAsAAAAD1AMAAACAAAAD1wAAAB8AAAAD1EMAAADAAAAD3oAAABaAAAA5v///w9SDAAAAwAAAA94AAAAWAAAAPH///8PUwwAAAMAAAAPYwAAAEMAAADh////D1QMAAADAAAAD3YAAABWAAAA5P///w9VDAAAAwAAAA9iAAAAQgAAAPD///8PVgwAAAMAAAAPbgAAAE4AAADu////D1cMAAADAAAAD20AAABNAAAA9v///w9YDAAAAwAAAA8sAAAAPAAAAPr///8PWQwAAAMAAAAPLgAAAD4AAAD1////D1oMAAADAAAADy8AAAA/AAAALgAAAA9bDAAAAgAAAA88AAAAPgAAAA9cDAAAAAAAAA8PXQwAAAIAAAAPYAAAAH4AAAAPXgwAAAIAAAAPMQAAACEAAAAPXwwAAAIAAAAPMgAAAEAAAAAPYAwAAAIAAAAPMwAAACMAAAAPYQwAAAIAAAAPNAAAACQAAAAPYgwAAAIAAAAPNQAAACUAAAAPYwwAAAIAAAAPNgAAAF4AAAAPZAwAAAIAAAAPNwAAACYAAAAPZQwAAAIAAAAPOAAAACoAAAAPZgwAAAIAAAAPOQAAACgAAAAPZwwAAAIAAAAPMAAAACkAAAAPaAwAAAIAAAAPLQAAAF8AAAAPaQwAAAIAAAAPPQAAACsAAAAPagwAAAMAAAAPcQAAAFEAAAD3////D2sMAAADAAAAD3cAAABXAAAA5f///w9sDAAAAwAAAA9lAAAARQAAAOD///8PbQwAAAMAAAAPcgAAAFIAAAD4////D24MAAADAAAAD3QAAABUAAAA+v///w9vDAAAAwAAAA95AAAAWQAAAPL///8PcAwAAAMAAAAPdQAAAFUAAADl////D3EMAAADAAAAD2kAAABJAAAA6f///w9yDAAAAwAA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AA9yAAAAUgAAAPH////R////DwENAAAEAAAAD3QAAABUAAAA9P///9T///8PAg0AAAQAAAAPeQAAAFkAAAD1////1f///w8DDQAABAAAAA91AAAAVQAAAOj////I////DwQNAAAEAAAAD2kAAABJAAAA6f///8n///8PBQ0AAAQAAAAPbwAAAE8AAADv////z////w8GDQAABAAAAA9wAAAAUAAAAPD////Q////DwcNAAACAAAAD1sAAAB7AAAADwgNAAACAAAAD10AAAB9AAAADwkNAAAEAAAAD2EAAABBAAAA4f///8H///8PCg0AAAIAAAAPcwAAAFMAAAAPCw0AAAQAAAAPZAAAAEQAAADk////xP///w8MDQAABAAAAA9mAAAARgAAAPb////W////Dw0NAAAEAAAAD2cAAABHAAAA4////8P///8PDg0AAAQAAAAPaAAAAEgAAADn////x////w8PDQAABAAAAA9qAAAASgAAAO7////O////DxANAAAEAAAAD2sAAABLAAAA6v///8r///8PEQ0AAAQAAAAPbAAAAEwAAADr////y////w8SDQAABAAAAA87AAAAOgAAALT///+o////DxMNAAACAAAADycAAAAiAAAADxQNAAACAAAAD1wAAAB8AAAADxUNAAAEAAAAD3oAAABaAAAA5v///8b///8PFg0AAAQAAAAPeAAAAFgAAAD3////1////w8XDQAABAAAAA9jAAAAQwAAAPj////Y////DxgNAAAEAAAAD3YAAABWAAAA+f///9n///8PGQ0AAAQAAAAPYgAAAEIAAADi////wv///w8aDQAABAAAAA9uAAAATgAAAO3////N////DxsNAAAEAAAAD20AAABNAAAA7P///8z///8PHA0AAAIAAAAPLAAAADwAAAAPHQ0AAAIAAAAPLgAAAD4AAAAPHg0AAAIAAAAPLwAAAD8AAAAPHw0AAAIAAAAPPAAAAD4AAAAPIA0AAAAAAAAPDyENAAAEAAAAD2AAAAB+AAAAXwAAACUAAAAPIg0AAAQAAAAPMQAAACEAAADl////KwAAAA8jDQAABAAAAA8yAAAAQAAAAC8AAADx////DyQNAAAEAAAADzMAAAAjAAAALQAAAPL///8PJQ0AAAQAAAAPNAAAACQAAADA////8////w8mDQAABAAAAA81AAAAJQAAALb////0////DycNAAAEAAAADzYAAABeAAAA2P///9n///8PKA0AAAQAAAAPNwAAACYAAADW////3////w8pDQAABAAAAA84AAAAKgAAAKT////1////DyoNAAAEAAAADzkAAAAoAAAAtf////b///8PKw0AAAQAAAAPMAAAACkAAACo////9////w8sDQAABAAAAA8tAAAAXwAAAKL////4////Dy0NAAAEAAAADz0AAAArAAAAqv////n///8PLg0AAAQAAAAPcQAAAFEAAADm////8P///w8vDQAABAAAAA93AAAAVwAAAOT///8iAAAADzANAAAEAAAAD2UAAABFAAAA0////67///8PMQ0AAAQAAAAPcgAAAFIAAAC+////sf///w8yDQAABAAAAA90AAAAVAAAAND///+4////DzMNAAAEAAAAD3kAAABZAAAA0f///+3///8PNA0AAAQAAAAPdQAAAFUAAADV////6v///w81DQAABAAAAA9pAAAASQAAAMP///+z////DzYNAAAEAAAAD28AAABPAAAAuf///8////8PNw0AAAQAAAAPcAAAAFAAAADC////rf///w84DQAABAAAAA9bAAAAewAAALr///+w////DzkNAAAEAAAAD10AAAB9AAAAxf///ywAAAAPOg0AAAQAAAAPYQAAAEEAAAC/////xP///w87DQAABAAAAA9zAAAAUwAAAMv///+m////DzwNAAAEAAAAD2QAAABEAAAAof///6////8PPQ0AAAQAAAAPZgAAAEYAAAC0////4v///w8+DQAABAAAAA9nAAAARwAAAOD///+s////Dz8NAAAEAAAAD2gAAABIAAAA6f///+f///8PQA0AAAQAAAAPagAAAEoAAADo////6////w9BDQAABAAAAA9rAAAASwAAANL////J////D0INAAAEAAAAD2wAAABMAAAAyv///8j///8PQw0AAAQAAAAPOwAAADoAAADH////q////w9EDQAABAAAAA8nAAAAIgAAAKf///8uAAAAD0UNAAAEAAAAD1wAAAB8AAAAo////6X///8PRg0AAAQAAAAPegAAAFoAAAC8////KAAAAA9HDQAABAAAAA94AAAAWAAAALv///8pAAAAD0gNAAAEAAAAD2MAAABDAAAA4f///6n///8PSQ0AAAQAAAAPdgAAAFYAAADN////zv///w9KDQAAAwAAAA9iAAAAQgAAANr///8PSw0AAAQAAAAPbgAAAE4AAADX////7P///w9MDQAABAAAAA9tAAAATQAAALf///8/AAAAD00NAAAEAAAADywAAAA8AAAAwf///7L///8PTg0AAAQAAAAPLgAAAD4AAADj////zP///w9PDQAABAAAAA8vAAAAPwAAAL3////G////D1ANAAAAAAAADw9RDQAAAAAAAA8PUg0AAAIAAAAPQAAAAKf///8PUw0AAAIAAAAPMQAAACEAAAAPVA0AAAIAAAAPMgAAACIAAAAPVQ0AAAIAAAAPMwAAACMAAAAPVg0AAAIAAAAPNAAAACQAAAAPVw0AAAIAAAAPNQAAACUAAAAPWA0AAAIAAAAPNgAAACYAAAAPWQ0AAAIAAAAPNwAAAF8AAAAPWg0AAAIAAAAPOAAAACgAAAAPWw0AAAIAAAAPOQAAACkAAAAPXA0AAAIAAAAPMAAAACcAAAAPXQ0AAAIAAAAPLwAAAD8AAAAPXg0AAAIAAAAPsP///34AAAAPXw0AAAIAAAAPcQAAAFEAAAAPYA0AAAIAAAAPdwAAAFcAAAAPYQ0AAAIAAAAPZQAAAEUAAAAPYg0AAAIAAAAPcgAAAFIAAAAPYw0AAAIAAAAPdAAAAFQAAAAPZA0AAAIAAAAPeQAAAFkAAAAPZQ0AAAIAAAAPdQAAAFUAAAAPZg0AAAIAAAAPaQAAAEkAAAAPZw0AAAIAAAAPbwAAAE8AAAAPaA0AAAIAAAAPcAAAAFAAAAAPaQ0AAAIAAAAPqP///34AAAAPag0AAAIAAAAPKgAAAHwAAAAPaw0AAAIAAAAPYQAAAEEAAAAPbA0AAAIAAAAPcwAAAFMAAAAPbQ0AAAIAAAAPZAAAAEQAAAAPbg0AAAIAAAAPZgAAAEYAAAAPbw0AAAIAAAAPZwAAAEcAAAAPcA0AAAIAAAAPaAAAAEgAAAAPcQ0AAAIAAAAPagAAAEoAAAAPcg0AAAIAAAAPawAAAEsAAAAPcw0AAAIAAAAPbAAAAEwAAAAPdA0AAAIAAAAPKwAAALH///8PdQ0AAAIAAAAPJwAAAGAAAAAPdg0AAAIAAAAPPAAAAD4AAAAPdw0AAAIAAAAPegAAAFoAAAAPeA0AAAIAAAAPeAAAAFgAAAAPeQ0AAAIAAAAPYwAAAEMAAAAPeg0AAAIAAAAPdgAAAFYAAAAPew0AAAIAAAAPYgAAAEIAAAAPfA0AAAIAAAAPbgAAAE4AAAAPfQ0AAAIAAAAPbQAAAE0AAAAPfg0AAAIAAAAPLAAAADsAAAAPfw0AAAIAAAAPLgAAADoAAAAPgA0AAAIAAAAPLQAAAD0AAAAPgQ0AAAIAAAAPWwAAAF0AAAAPgg0AAAAAAAAPCw==</value></data><data name="scan_table" mimetype="application/x-microsoft.net.object.binary.base64"><value>AAEAAAD/////AQAAAAAAAAAHAQAAAAEBAAAABQAAAAcHCQIAAAAJAwAAAAkEAAAACQUAAAAJBgAAAA8CAAAAMAAAAAcpAAIAAwAEAAUABgAHAAgACQAKAAsADAANABAAEQASABMAFAAVABYAFwAYABkAGgAbAB4AHwAgACEAIgAjACQAJQAmACcAKAArACwALQAuAC8AMAAxADIAMwA0ADUAVgAPAwAAADAAAAAHKQACAAMABAAFAAYABwAIAAkACgALABoAGwAoADMANAAZABUAIQAiAC4AEwAmADUADQAeABgAEgAWABcAIAAjABQAMQAfAAwAKwAnABAAJAAlAC0AMAAyABEALwAsAFYADwQAAAAyAAAABykAAgADAAQABQAGAAcACAAJAAoACwAMAA0AEAARABIAEwAUABUAFgAXABgAGQAaABsAHgAfACAAIQAiACMAJAAlACYAJwAoACsAXgAsAC0ALgAvADAAMQAyADMANAA1AFYANQAPBQAAADAAAAAHAgADAAQABQAGAAcACAAJAAoACwAMAA0AKQAQABEAEgATABQAFQAWABcAGAAZABoAGwAeAB8AIAAhACIAIwAkACUAJgAnACgAKwAsAC0ALgAvADAAMQAyADMANAA1AFYADwYAAAAwAAAABwIAAwAEAAUABgAHAAgACQAKAAsADAANABoAGwAnACgAKQAzADQANQArAB4AMAAuACAAEgAhACIAIwAXACQAJQAmADIAMQAYABkAEAATAB8AFAAWAC8AEQAtABUALABWAAs=</value></data><data name="vkey_table" mimetype="application/x-microsoft.net.object.binary.base64"><value>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</value></data></root>A4gAAAAs=</value></data></root>
\ No newline at end of file
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="keyboard_table" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAEdjcmVhdGUta2V5Ym9hcmRzLCBWZXJzaW9uPTAuMC4wLjAsIEN1
+        bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAcBAAAAAAEAAABAAAAABCNTeXN0ZW0uV2lu
+        ZG93cy5Gb3Jtcy5LZXlib2FyZExheW91dAIAAAAJAwAAAAkEAAAACQUAAAAJBgAAAAkHAAAACQgAAAAJ
+        CQAAAAkKAAAACQsAAAAJDAAAAAkNAAAACQ4AAAAJDwAAAAkQAAAACREAAAAJEgAAAAkTAAAACRQAAAAJ
+        FQAAAAkWAAAACRcAAAAJGAAAAAkZAAAACRoAAAAJGwAAAAkcAAAACR0AAAAJHgAAAAkfAAAACSAAAAAJ
+        IQAAAAkiAAAACSMAAAAJJAAAAAklAAAACSYAAAAJJwAAAAkoAAAACSkAAAAJKgAAAAkrAAAACSwAAAAJ
+        LQAAAAkuAAAACS8AAAAJMAAAAAkxAAAACTIAAAAJMwAAAAk0AAAACTUAAAAJNgAAAAk3AAAACTgAAAAJ
+        OQAAAAk6AAAACTsAAAAJPAAAAAk9AAAACT4AAAAJPwAAAAlAAAAACUEAAAAJQgAAAAUDAAAAI1N5c3Rl
+        bS5XaW5kb3dzLkZvcm1zLktleWJvYXJkTGF5b3V0BQAAAARMY2lkBE5hbWUJU2NhbkluZGV4CVZLZXlJ
+        bmRleARLZXlzAAEEBAMII1N5c3RlbS5XaW5kb3dzLkZvcm1zLlNjYW5UYWJsZUluZGV4AgAAACNTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5WS2V5VGFibGVJbmRleAIAAAARU3lzdGVtLlVJbnQzMltdW10CAAAACQQA
+        AAZDAAAAHVVuaXRlZCBTdGF0ZXMga2V5Ym9hcmQgbGF5b3V0Bbz///8jU3lzdGVtLldpbmRvd3MuRm9y
+        bXMuU2NhblRhYmxlSW5kZXgBAAAAB3ZhbHVlX18ACAIAAAAAAAAABbv///8jU3lzdGVtLldpbmRvd3Mu
+        Rm9ybXMuVktleVRhYmxlSW5kZXgBAAAAB3ZhbHVlX18ACAIAAAAAAAAACUYAAAABBAAAAAMAAAAJBAAA
+        BkcAAAAzVW5pdGVkIFN0YXRlcyBrZXlib2FyZCBsYXlvdXQgKHBoYW50b20ga2V5IHZlcnNpb24pAbj/
+        //+8////AAAAAAG3////u////wAAAAAJSgAAAAEFAAAAAwAAAAkEAAAGSwAAACZVbml0ZWQgU3RhdGVz
+        IGtleWJvYXJkIGxheW91dCAoZHZvcmFrKQG0////vP///wEAAAABs////7v///8CAAAACU4AAAABBgAA
+        AAMAAAAJBAAABk8AAAArVW5pdGVkIFN0YXRlcyBJbnRlcm5hdGlvbmFsIGtleWJvYXJkIGxheW91dAGw
+        ////vP///wAAAAABr////7v///8AAAAACVIAAAABBwAAAAMAAAAJCAAABlMAAAAXQnJpdGlzaCBrZXli
+        b2FyZCBsYXlvdXQBrP///7z///8AAAAAAav///+7////AAAAAAlWAAAAAQgAAAADAAAABwQAAAZXAAAA
+        Fkdlcm1hbiBrZXlib2FyZCBsYXlvdXQBqP///7z///8AAAAAAaf///+7////AQAAAAlaAAAAAQkAAAAD
+        AAAABwQAAAZbAAAAKEdlcm1hbiBrZXlib2FyZCBsYXlvdXQgd2l0aG91dCBkZWFkIGtleXMBpP///7z/
+        //8AAAAAAaP///+7////AQAAAAleAAAAAQoAAAADAAAABwQAAAZfAAAAL0dlcm1hbiBrZXlib2FyZCBs
+        YXlvdXQgZm9yIGxvZ2l0ZWNoIGRlc2t0b3AgcHJvAaD///+8////AAAAAAGf////u////wEAAAAJYgAA
+        AAELAAAAAwAAAAcEAAAGYwAAACxHZXJtYW4ga2V5Ym9hcmQgbGF5b3V0IHdpdGhvdXQgZGVhZCBrZXlz
+        IDEwNQGc////vP///wAAAAABm////7v///8DAAAACWYAAAABDAAAAAMAAAAHCAAABmcAAAAcU3dpc3Mg
+        R2VybWFuIGtleWJvYXJkIGxheW91dAGY////vP///wAAAAABl////7v///8BAAAACWoAAAABDQAAAAMA
+        AAAMEAAABmsAAAAcU3dpc3MgRnJlbmNoIGtleWJvYXJkIGxheW91dAGU////vP///wAAAAABk////7v/
+        //8BAAAACW4AAAABDgAAAAMAAAAdBAAABm8AAAAXU3dlZGlzaCBrZXlib2FyZCBsYXlvdXQBkP///7z/
+        //8AAAAAAY////+7////BQAAAAlyAAAAAQ8AAAADAAAAJQQAAAZzAAAAGEVzdG9uaWFuIGtleWJvYXJk
+        IGxheW91dAGM////vP///wAAAAABi////7v///8AAAAACXYAAAABEAAAAAMAAAAUBAAABncAAAAZTm9y
+        d2VnaWFuIGtleWJvYXJkIGxheW91dAGI////vP///wAAAAABh////7v///8AAAAACXoAAAABEQAAAAMA
+        AAAGBAAABnsAAAAWRGFuaXNoIGtleWJvYXJkIGxheW91dAGE////vP///wAAAAABg////7v///8AAAAA
+        CX4AAAABEgAAAAMAAAAMBAAABn8AAAAWRnJlbmNoIGtleWJvYXJkIGxheW91dAGA////vP///wAAAAAB
+        f////7v///8EAAAACYIAAAABEwAAAAMAAAAMDAAABoMAAAAfQ2FuYWRpYW4gRnJlbmNoIGtleWJvYXJk
+        IGxheW91dAF8////vP///wAAAAABe////7v///8AAAAACYYAAAABFAAAAAMAAAAMDAAABocAAAAnQ2Fu
+        YWRpYW4gRnJlbmNoIGtleWJvYXJkIGxheW91dCAoQ0FfZnIpAXj///+8////AAAAAAF3////u////wAA
+        AAAJigAAAAEVAAAAAwAAAAwMAAAGiwAAABhDYW5hZGlhbiBrZXlib2FyZCBsYXlvdXQBdP///7z///8A
+        AAAAAXP///+7////AAAAAAmOAAAAARYAAAADAAAADAgAAAaPAAAAF0JlbGdpYW4ga2V5Ym9hcmQgbGF5
+        b3V0AXD///+8////AAAAAAFv////u////wQAAAAJkgAAAAEXAAAAAwAAABYIAAAGkwAAABpQb3J0dWd1
+        ZXNlIGtleWJvYXJkIGxheW91dAFs////vP///wAAAAABa////7v///8AAAAACZYAAAABGAAAAAMAAAAW
+        BAAABpcAAAAgQnJhemlsaWFuIEFCTlQtMiBrZXlib2FyZCBsYXlvdXQBaP///7z///8CAAAAAWf///+7
+        ////BgAAAAmaAAAAARkAAAADAAAAFgQAAAabAAAAJ0JyYXppbGlhbiBBQk5ULTIga2V5Ym9hcmQgbGF5
+        b3V0IEFMVCBHUgFk////vP///wIAAAABY////7v///8GAAAACZ4AAAABGgAAAAMAAAALBAAABp8AAAAX
+        RmlubmlzaCBrZXlib2FyZCBsYXlvdXQBYP///7z///8AAAAAAV////+7////AAAAAAmiAAAAARsAAAAD
+        AAAAAgQAAAajAAAAHUJ1bGdhcmlhbiBiZHMga2V5Ym9hcmQgbGF5b3V0AVz///+8////AAAAAAFb////
+        u////wAAAAAJpgAAAAEcAAAAAwAAAAIEAAAGpwAAACJCdWxnYXJpYW4gcGhvbmV0aWMga2V5Ym9hcmQg
+        bGF5b3V0AVj///+8////AAAAAAFX////u////wAAAAAJqgAAAAEdAAAAAwAAACMEAAAGqwAAABpCZWxh
+        cnVzaWFuIGtleWJvYXJkIGxheW91dAFU////vP///wAAAAABU////7v///8AAAAACa4AAAABHgAAAAMA
+        AAAZBAAABq8AAAAXUnVzc2lhbiBrZXlib2FyZCBsYXlvdXQBUP///7z///8AAAAAAU////+7////AAAA
+        AAmyAAAAAR8AAAADAAAAGQQAAAazAAAALVJ1c3NpYW4ga2V5Ym9hcmQgbGF5b3V0IChwaGFudG9tIGtl
+        eSB2ZXJzaW9uKQFM////vP///wAAAAABS////7v///8AAAAACbYAAAABIAAAAAMAAAAZBAAABrcAAAAe
+        UnVzc2lhbiBrZXlib2FyZCBsYXlvdXQgS09JOC1SAUj///+8////AAAAAAFH////u////wAAAAAJugAA
+        AAEhAAAAAwAAABkEAAAGuwAAAB5SdXNzaWFuIGtleWJvYXJkIGxheW91dCBjcDEyNTEBRP///7z///8A
+        AAAAAUP///+7////AAAAAAm+AAAAASIAAAADAAAAGQQAAAa/AAAAIFJ1c3NpYW4gcGhvbmV0aWMga2V5
+        Ym9hcmQgbGF5b3V0AUD///+8////AAAAAAE/////u////wAAAAAJwgAAAAEjAAAAAwAAACIEAAAGwwAA
+        ACBVa3JhaW5pYW4ga2V5Ym9hcmQgbGF5b3V0IEtPSTgtVQE8////vP///wAAAAABO////7v///8AAAAA
+        CcYAAAABJAAAAAMAAAAiBAAABscAAAAkVWtyYWluaWFuIGtleWJvYXJkIGxheW91dCAoc3RhbmRhcmQp
+        ATj///+8////AAAAAAE3////u////wAAAAAJygAAAAElAAAAAwAAABkEAAAGywAAACJSdXNzaWFuIGtl
+        eWJvYXJkIGxheW91dCAoc3RhbmRhcmQpATT///+8////AAAAAAEz////u////wAAAAAJzgAAAAEmAAAA
+        AwAAAAoEAAAGzwAAABdTcGFuaXNoIGtleWJvYXJkIGxheW91dAEw////vP///wAAAAABL////7v///8A
+        AAAACdIAAAABJwAAAAMAAAAQBAAABtMAAAAXSXRhbGlhbiBrZXlib2FyZCBsYXlvdXQBLP///7z///8A
+        AAAAASv///+7////AAAAAAnWAAAAASgAAAADAAAADwQAAAbXAAAAGUljZWxhbmRpYyBrZXlib2FyZCBs
+        YXlvdXQBKP///7z///8AAAAAASf///+7////AAAAAAnaAAAAASkAAAADAAAADgQAAAbbAAAAGUh1bmdh
+        cmlhbiBrZXlib2FyZCBsYXlvdXQBJP///7z///8AAAAAASP///+7////AQAAAAneAAAAASoAAAADAAAA
+        FQQAAAbfAAAAJVBvbGlzaCAocHJvZ3JhbW1lcidzKSBrZXlib2FyZCBsYXlvdXQBIP///7z///8AAAAA
+        AR////+7////AAAAAAniAAAAASsAAAADAAAAJAQAAAbjAAAAGVNsb3ZlbmlhbiBrZXlib2FyZCBsYXlv
+        dXQBHP///7z///8AAAAAARv///+7////AQAAAAnmAAAAASwAAAADAAAAGgwAAAbnAAAAGlNlcmJpYW4g
+        a2V5Ym9hcmQgbGF5b3V0IHNyARj///+8////AAAAAAEX////u////wAAAAAJ6gAAAAEtAAAAAwAAABoM
+        AAAG6wAAAB1TZXJiaWFuIGtleWJvYXJkIGxheW91dCB1cyxzcgEU////vP///wAAAAABE////7v///8A
+        AAAACe4AAAABLgAAAAMAAAAaBAAABu8AAAAYQ3JvYXRpYW4ga2V5Ym9hcmQgbGF5b3V0ARD///+8////
+        AAAAAAEP////u////wEAAAAJ8gAAAAEvAAAAAwAAABoEAAAG8wAAACNDcm9hdGlhbiBrZXlib2FyZCBs
+        YXlvdXQgKHNwZWNpZmljKQEM////vP///wAAAAABC////7v///8AAAAACfYAAAABMAAAAAMAAAARBAAA
+        BvcAAAAcSmFwYW5lc2UgMTA2IGtleWJvYXJkIGxheW91dAEI////vP///wMAAAABB////7v///8HAAAA
+        CfoAAAABMQAAAAMAAAARBAAABvsAAAAfSmFwYW5lc2UgcGM5OHgxIGtleWJvYXJkIGxheW91dAEE////
+        vP///wAAAAABA////7v///8AAAAACf4AAAABMgAAAAMAAAAbBAAABv8AAAAWU2xvdmFrIGtleWJvYXJk
+        IGxheW91dAEA////vP///wAAAAAB//7//7v///8AAAAACQIBAAABMwAAAAMAAAAbBAAABgMBAAAyU2xv
+        dmFrIGFuZCBDemVjaCBrZXlib2FyZCBsYXlvdXQgd2l0aG91dCBkZWFkIGtleXMB/P7//7z///8AAAAA
+        Afv+//+7////AAAAAAkGAQAAATQAAAADAAAABQQAAAYHAQAAFUN6ZWNoIGtleWJvYXJkIGxheW91dAH4
+        /v//vP///wAAAAAB9/7//7v///8AAAAACQoBAAABNQAAAAMAAAAFBAAABgsBAAAYQ3plY2gga2V5Ym9h
+        cmQgbGF5b3V0IGN6AfT+//+8////AAAAAAHz/v//u////wEAAAAJDgEAAAE2AAAAAwAAAAUEAAAGDwEA
+        AB9DemVjaCBrZXlib2FyZCBsYXlvdXQgY3pfcXdlcnR5AfD+//+8////AAAAAAHv/v//u////wAAAAAJ
+        EgEAAAE3AAAAAwAAAAoEAAAGEwEAAB5MYXRpbiBBbWVyaWNhbiBrZXlib2FyZCBsYXlvdXQB7P7//7z/
+        //8AAAAAAev+//+7////AAAAAAkWAQAAATgAAAADAAAAJwQAAAYXAQAAI0xpdGh1YW5pYW4gKEJhbHRp
+        Yykga2V5Ym9hcmQgbGF5b3V0Aej+//+8////AAAAAAHn/v//u////wAAAAAJGgEAAAE5AAAAAwAAAB8E
+        AAAGGwEAABdUdXJraXNoIGtleWJvYXJkIGxheW91dAHk/v//vP///wAAAAAB4/7//7v///8AAAAACR4B
+        AAABOgAAAAMAAAAfBAAABh8BAAAaVHVya2lzaCBrZXlib2FyZCBsYXlvdXQgdHIB4P7//7z///8AAAAA
+        Ad/+//+7////AAAAAAkiAQAAATsAAAADAAAAHwQAAAYjAQAAG1R1cmtpc2gga2V5Ym9hcmQgbGF5b3V0
+        IHRyZgHc/v//vP///wAAAAAB2/7//7v///8AAAAACSYBAAABPAAAAAMAAAANBAAABicBAAAZSXNyYWVs
+        aWFuIGtleWJvYXJkIGxheW91dAHY/v//vP///wAAAAAB1/7//7v///8AAAAACSoBAAABPQAAAAMAAAAN
+        BAAABisBAAAiSXNyYWVsaWFuIHBob25ldGljIGtleWJvYXJkIGxheW91dAHU/v//vP///wAAAAAB0/7/
+        /7v///8AAAAACS4BAAABPgAAAAMAAAANBAAABi8BAAAhSXNyYWVsaWFuIFNhaGFyb24ga2V5Ym9hcmQg
+        bGF5b3V0AdD+//+8////AAAAAAHP/v//u////wAAAAAJMgEAAAE/AAAAAwAAAAkEAAAGMwEAABNWTkMg
+        a2V5Ym9hcmQgbGF5b3V0Acz+//+8////BAAAAAHL/v//u////wgAAAAJNgEAAAFAAAAAAwAAAAgEAAAG
+        NwEAABVHcmVlayBrZXlib2FyZCBsYXlvdXQByP7//7z///8AAAAAAcf+//+7////AAAAAAk6AQAAAUEA
+        AAADAAAAHgQAAAY7AQAAIFRoYWkgKEtlZG1hbmVlKSAga2V5Ym9hcmQgbGF5b3V0AcT+//+8////AAAA
+        AAHD/v//u////wAAAAAJPgEAAAFCAAAAAwAAABMEAAAGPwEAABVEdXRjaCBrZXlib2FyZCBsYXlvdXQB
+        wP7//7z///8AAAAAAb/+//+7////AAAAAAlCAQAAB0YAAAABAQAAADEAAAAHDwlDAQAACUQBAAAJRQEA
+        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
+        NQAAACUAAAAPegEAAAIAAAAPNgAAAF4AAAAPewEAAAIAAAAPNwAAACYAAAAPfAEAAAIAAAAPOAAAACoA
+        AAAPfQEAAAIAAAAPOQAAACgAAAAPfgEAAAIAAAAPMAAAACkAAAAPfwEAAAIAAAAPLQAAAF8AAAAPgAEA
+        AAIAAAAPPQAAACsAAAAPgQEAAAIAAAAPcQAAAFEAAAAPggEAAAIAAAAPdwAAAFcAAAAPgwEAAAIAAAAP
+        ZQAAAEUAAAAPhAEAAAIAAAAPcgAAAFIAAAAPhQEAAAIAAAAPdAAAAFQAAAAPhgEAAAIAAAAPeQAAAFkA
+        AAAPhwEAAAIAAAAPdQAAAFUAAAAPiAEAAAIAAAAPaQAAAEkAAAAPiQEAAAIAAAAPbwAAAE8AAAAPigEA
+        AAIAAAAPcAAAAFAAAAAPiwEAAAIAAAAPWwAAAHsAAAAPjAEAAAIAAAAPXQAAAH0AAAAPjQEAAAIAAAAP
+        YQAAAEEAAAAPjgEAAAIAAAAPcwAAAFMAAAAPjwEAAAIAAAAPZAAAAEQAAAAPkAEAAAIAAAAPZgAAAEYA
+        AAAPkQEAAAIAAAAPZwAAAEcAAAAPkgEAAAIAAAAPaAAAAEgAAAAPkwEAAAIAAAAPagAAAEoAAAAPlAEA
+        AAIAAAAPawAAAEsAAAAPlQEAAAIAAAAPbAAAAEwAAAAPlgEAAAIAAAAPOwAAADoAAAAPlwEAAAIAAAAP
+        JwAAACIAAAAPmAEAAAIAAAAPXAAAAHwAAAAPmQEAAAIAAAAPegAAAFoAAAAPmgEAAAIAAAAPeAAAAFgA
+        AAAPmwEAAAIAAAAPYwAAAEMAAAAPnAEAAAIAAAAPdgAAAFYAAAAPnQEAAAIAAAAPYgAAAEIAAAAPngEA
+        AAIAAAAPbgAAAE4AAAAPnwEAAAIAAAAPbQAAAE0AAAAPoAEAAAIAAAAPLAAAADwAAAAPoQEAAAIAAAAP
+        LgAAAD4AAAAPogEAAAIAAAAPLwAAAD8AAAAPowEAAAIAAAAPPAAAAD4AAAAPpAEAAAAAAAAPD6UBAAAC
+        AAAAD2AAAAB+AAAAD6YBAAACAAAADzEAAAAhAAAAD6cBAAACAAAADzIAAABAAAAAD6gBAAACAAAADzMA
+        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
+        DwgCAAACAAAADzEAAAAhAAAADwkCAAACAAAADzIAAAAiAAAADwoCAAACAAAADzMAAACj////DwsCAAAC
+        AAAADzQAAAAkAAAADwwCAAACAAAADzUAAAAlAAAADw0CAAACAAAADzYAAABeAAAADw4CAAACAAAADzcA
+        AAAmAAAADw8CAAACAAAADzgAAAAqAAAADxACAAACAAAADzkAAAAoAAAADxECAAACAAAADzAAAAApAAAA
+        DxICAAACAAAADy0AAABfAAAADxMCAAACAAAADz0AAAArAAAADxQCAAACAAAAD3EAAABRAAAADxUCAAAC
+        AAAAD3cAAABXAAAADxYCAAACAAAAD2UAAABFAAAADxcCAAACAAAAD3IAAABSAAAADxgCAAACAAAAD3QA
+        AABUAAAADxkCAAACAAAAD3kAAABZAAAADxoCAAACAAAAD3UAAABVAAAADxsCAAACAAAAD2kAAABJAAAA
+        DxwCAAACAAAAD28AAABPAAAADx0CAAACAAAAD3AAAABQAAAADx4CAAACAAAAD1sAAAB7AAAADx8CAAAC
+        AAAAD10AAAB9AAAADyACAAACAAAAD2EAAABBAAAADyECAAACAAAAD3MAAABTAAAADyICAAACAAAAD2QA
+        AABEAAAADyMCAAACAAAAD2YAAABGAAAADyQCAAACAAAAD2cAAABHAAAADyUCAAACAAAAD2gAAABIAAAA
+        DyYCAAACAAAAD2oAAABKAAAADycCAAACAAAAD2sAAABLAAAADygCAAACAAAAD2wAAABMAAAADykCAAAC
+        AAAADzsAAAA6AAAADyoCAAACAAAADycAAABAAAAADysCAAACAAAADyMAAAB+AAAADywCAAACAAAAD3oA
+        AABaAAAADy0CAAACAAAAD3gAAABYAAAADy4CAAACAAAAD2MAAABDAAAADy8CAAACAAAAD3YAAABWAAAA
+        DzACAAACAAAAD2IAAABCAAAADzECAAACAAAAD24AAABOAAAADzICAAACAAAAD20AAABNAAAADzMCAAAC
+        AAAADywAAAA8AAAADzQCAAACAAAADy4AAAA+AAAADzUCAAACAAAADy8AAAA/AAAADzYCAAACAAAAD1wA
+        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
+        AAAPHQMAAAIAAAAPbAAAAEwAAAAPHgMAAAIAAAAP9v///+n///8PHwMAAAIAAAAP5P///+D///8PIAMA
+        AAIAAAAPJAAAAKP///8PIQMAAAIAAAAPeQAAAFkAAAAPIgMAAAIAAAAPeAAAAFgAAAAPIwMAAAIAAAAP
+        YwAAAEMAAAAPJAMAAAIAAAAPdgAAAFYAAAAPJQMAAAIAAAAPYgAAAEIAAAAPJgMAAAIAAAAPbgAAAE4A
+        AAAPJwMAAAIAAAAPbQAAAE0AAAAPKAMAAAIAAAAPLAAAADsAAAAPKQMAAAIAAAAPLgAAADoAAAAPKgMA
+        AAIAAAAPLQAAAF8AAAAPKwMAAAIAAAAPPAAAAD4AAAAPLAMAAAAAAAAPDy0DAAACAAAAD6f///+w////
+        Dy4DAAACAAAADzEAAAArAAAADy8DAAACAAAADzIAAAAiAAAADzADAAACAAAADzMAAAAqAAAADzEDAAAC
+        AAAADzQAAADn////DzIDAAACAAAADzUAAAAlAAAADzMDAAACAAAADzYAAAAmAAAADzQDAAACAAAADzcA
+        AAAvAAAADzUDAAACAAAADzgAAAAoAAAADzYDAAACAAAADzkAAAApAAAADzcDAAACAAAADzAAAAA9AAAA
+        DzgDAAACAAAADycAAAA/AAAADzkDAAACAAAAD14AAABgAAAADzoDAAACAAAAD3EAAABRAAAADzsDAAAC
+        AAAAD3cAAABXAAAADzwDAAACAAAAD2UAAABFAAAADz0DAAACAAAAD3IAAABSAAAADz4DAAACAAAAD3QA
+        AABUAAAADz8DAAACAAAAD3oAAABaAAAAD0ADAAACAAAAD3UAAABVAAAAD0EDAAACAAAAD2kAAABJAAAA
+        D0IDAAACAAAAD28AAABPAAAAD0MDAAACAAAAD3AAAABQAAAAD0QDAAACAAAAD+j////8////D0UDAAAC
+        AAAAD6j///8hAAAAD0YDAAACAAAAD2EAAABBAAAAD0cDAAACAAAAD3MAAABTAAAAD0gDAAACAAAAD2QA
+        AABEAAAAD0kDAAACAAAAD2YAAABGAAAAD0oDAAACAAAAD2cAAABHAAAAD0sDAAACAAAAD2gAAABIAAAA
+        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
+        D4wEAAACAAAADzgAAAAqAAAAD40EAAACAAAADzkAAAAoAAAAD44EAAACAAAADzAAAAApAAAAD48EAAAC
+        AAAADy0AAABfAAAAD5AEAAACAAAADz0AAAArAAAAD5EEAAACAAAAD3EAAABRAAAAD5IEAAACAAAAD3cA
+        AABXAAAAD5MEAAACAAAAD2UAAABFAAAAD5QEAAACAAAAD3IAAABSAAAAD5UEAAACAAAAD3QAAABUAAAA
+        D5YEAAACAAAAD3kAAABZAAAAD5cEAAACAAAAD3UAAABVAAAAD5gEAAACAAAAD2kAAABJAAAAD5kEAAAC
+        AAAAD28AAABPAAAAD5oEAAACAAAAD3AAAABQAAAAD5sEAAACAAAAD14AAABeAAAAD5wEAAACAAAAD7j/
+        //+o////D50EAAACAAAAD2EAAABBAAAAD54EAAACAAAAD3MAAABTAAAAD58EAAACAAAAD2QAAABEAAAA
+        D6AEAAACAAAAD2YAAABGAAAAD6EEAAACAAAAD2cAAABHAAAAD6IEAAACAAAAD2gAAABIAAAAD6MEAAAC
+        AAAAD2oAAABKAAAAD6QEAAACAAAAD2sAAABLAAAAD6UEAAACAAAAD2wAAABMAAAAD6YEAAACAAAADzsA
+        AAA6AAAAD6cEAAACAAAAD2AAAABgAAAAD6gEAAACAAAADzwAAAA+AAAAD6kEAAACAAAAD3oAAABaAAAA
+        D6oEAAACAAAAD3gAAABYAAAAD6sEAAACAAAAD2MAAABDAAAAD6wEAAACAAAAD3YAAABWAAAAD60EAAAC
+        AAAAD2IAAABCAAAAD64EAAACAAAAD24AAABOAAAAD68EAAACAAAAD20AAABNAAAAD7AEAAACAAAADywA
+        AAAnAAAAD7EEAAABAAAADy4AAAAPsgQAAAIAAAAP6f///8n///8PswQAAAIAAAAPq////7v///8PtAQA
+        AAAAAAAPD7UEAAACAAAADy8AAABcAAAAD7YEAAAEAAAADzEAAAAhAAAAuf///6H///8PtwQAAAMAAAAP
+        MgAAAEAAAACy////D7gEAAAEAAAADzMAAAAjAAAAs////6P///8PuQQAAAQAAAAPNAAAACQAAAC8////
+        pP///w+6BAAAAwAAAA81AAAAJQAAAL3///8PuwQAAAMAAAAPNgAAAD8AAAC+////D7wEAAACAAAADzcA
+        AAAmAAAAD70EAAACAAAADzgAAAAqAAAAD74EAAACAAAADzkAAAAoAAAAD78EAAACAAAADzAAAAApAAAA
+        D8AEAAACAAAADy0AAABfAAAAD8EEAAACAAAADz0AAAArAAAAD8IEAAACAAAAD3EAAABRAAAAD8MEAAAC
+        AAAAD3cAAABXAAAAD8QEAAACAAAAD2UAAABFAAAAD8UEAAACAAAAD3IAAABSAAAAD8YEAAACAAAAD3QA
+        AABUAAAAD8cEAAACAAAAD3kAAABZAAAAD8gEAAACAAAAD3UAAABVAAAAD8kEAAACAAAAD2kAAABJAAAA
+        D8oEAAAEAAAAD28AAABPAAAA+P///9j///8PywQAAAQAAAAPcAAAAFAAAAD+////3v///w/MBAAAAwAA
+        AA9eAAAAqP///6j///8PzQQAAAMAAAAP5////8f///9+AAAAD84EAAAEAAAAD2EAAABBAAAA5v///8b/
+        //8PzwQAAAQAAAAPcwAAAFMAAADf////p////w/QBAAABAAAAA9kAAAARAAAAPD////Q////D9EEAAAC
+        AAAAD2YAAABGAAAAD9IEAAACAAAAD2cAAABHAAAAD9MEAAACAAAAD2gAAABIAAAAD9QEAAACAAAAD2oA
+        AABKAAAAD9UEAAACAAAAD2sAAABLAAAAD9YEAAACAAAAD2wAAABMAAAAD9cEAAADAAAADzsAAAA6AAAA
+        tP///w/YBAAAAgAAAA/o////yP///w/ZBAAAAgAAAA/g////wP///w/aBAAAAgAAAA96AAAAWgAAAA/b
+        BAAAAgAAAA94AAAAWAAAAA/cBAAABAAAAA9jAAAAQwAAAKL///+p////D90EAAACAAAAD3YAAABWAAAA
+        D94EAAACAAAAD2IAAABCAAAAD98EAAACAAAAD24AAABOAAAAD+AEAAAEAAAAD20AAABNAAAAtf///7r/
+        //8P4QQAAAIAAAAPLAAAACcAAAAP4gQAAAQAAAAPLgAAACIAAAC3////9////w/jBAAAAgAAAA/p////
+        yf///w/kBAAAAgAAAA/5////2f///w/lBAAAAAAAAA8P5gQAAAAAAAAPD+cEAAADAAAADyYAAAAxAAAA
+        fAAAAA/oBAAAAwAAAA/p////MgAAAEAAAAAP6QQAAAMAAAAPIgAAADMAAAAjAAAAD+oEAAACAAAADycA
+        AAA0AAAAD+sEAAACAAAADygAAAA1AAAAD+wEAAADAAAAD6f///82AAAAXgAAAA/tBAAAAgAAAA/o////
+        NwAAAA/uBAAAAgAAAA8hAAAAOAAAAA/vBAAAAwAAAA/n////OQAAAHsAAAAP8AQAAAMAAAAP4P///zAA
+        AAB9AAAAD/EEAAACAAAADykAAACw////D/IEAAACAAAADy0AAABfAAAAD/MEAAACAAAAD2EAAABBAAAA
+        D/QEAAACAAAAD3oAAABaAAAAD/UEAAADAAAAD2UAAABFAAAApP///w/2BAAAAgAAAA9yAAAAUgAAAA/3
+        BAAAAgAAAA90AAAAVAAAAA/4BAAAAgAAAA95AAAAWQAAAA/5BAAAAgAAAA91AAAAVQAAAA/6BAAAAgAA
+        AA9pAAAASQAAAA/7BAAAAgAAAA9vAAAATwAAAA/8BAAAAgAAAA9wAAAAUAAAAA/9BAAAAwAAAA9eAAAA
+        qP///1sAAAAP/gQAAAMAAAAPJAAAACoAAABdAAAAD/8EAAACAAAAD3EAAABRAAAADwAFAAADAAAAD3MA
+        AABTAAAA3////w8BBQAAAgAAAA9kAAAARAAAAA8CBQAAAgAAAA9mAAAARgAAAA8DBQAAAgAAAA9nAAAA
+        RwAAAA8EBQAAAgAAAA9oAAAASAAAAA8FBQAAAgAAAA9qAAAASgAAAA8GBQAAAgAAAA9rAAAASwAAAA8H
+        BQAAAgAAAA9sAAAATAAAAA8IBQAAAgAAAA9tAAAATQAAAA8JBQAAAwAAAA/5////JQAAALT///8PCgUA
+        AAMAAAAPtf///6P///9gAAAADwsFAAACAAAAD3cAAABXAAAADwwFAAACAAAAD3gAAABYAAAADw0FAAAC
+        AAAAD2MAAABDAAAADw4FAAACAAAAD3YAAABWAAAADw8FAAACAAAAD2IAAABCAAAADxAFAAACAAAAD24A
+        AABOAAAADxEFAAACAAAADywAAAA/AAAADxIFAAACAAAADzsAAAAuAAAADxMFAAACAAAADzoAAAAvAAAA
+        DxQFAAADAAAADz0AAAArAAAAfgAAAA8VBQAAAwAAAA88AAAAPgAAAFwAAAAPFgUAAAAAAAAPDxcFAAAC
+        AAAAD1wAAAB8AAAADxgFAAACAAAADzEAAAAhAAAADxkFAAACAAAADzIAAAAiAAAADxoFAAACAAAADzMA
+        AAAjAAAADxsFAAACAAAADzQAAAAkAAAADxwFAAACAAAADzUAAAAlAAAADx0FAAACAAAADzYAAAAmAAAA
+        Dx4FAAACAAAADzcAAAAvAAAADx8FAAACAAAADzgAAAAoAAAADyAFAAACAAAADzkAAAApAAAADyEFAAAC
+        AAAADzAAAAA9AAAADyIFAAACAAAADycAAAA/AAAADyMFAAACAAAAD6v///+7////DyQFAAACAAAAD3EA
+        AABRAAAADyUFAAACAAAAD3cAAABXAAAADyYFAAACAAAAD2UAAABFAAAADycFAAACAAAAD3IAAABSAAAA
+        DygFAAACAAAAD3QAAABUAAAADykFAAACAAAAD3kAAABZAAAADyoFAAACAAAAD3UAAABVAAAADysFAAAC
+        AAAAD2kAAABJAAAADywFAAACAAAAD28AAABPAAAADy0FAAACAAAAD3AAAABQAAAADy4FAAACAAAADysA
+        AAAqAAAADy8FAAACAAAAD7T///9gAAAADzAFAAACAAAAD2EAAABBAAAADzEFAAACAAAAD3MAAABTAAAA
+        DzIFAAACAAAAD2QAAABEAAAADzMFAAACAAAAD2YAAABGAAAADzQFAAACAAAAD2cAAABHAAAADzUFAAAC
+        AAAAD2gAAABIAAAADzYFAAACAAAAD2oAAABKAAAADzcFAAACAAAAD2sAAABLAAAADzgFAAACAAAAD2wA
+        AABMAAAADzkFAAACAAAAD+f////H////DzoFAAACAAAAD7r///+q////DzsFAAACAAAAD34AAABeAAAA
+        DzwFAAACAAAAD3oAAABaAAAADz0FAAACAAAAD3gAAABYAAAADz4FAAACAAAAD2MAAABDAAAADz8FAAAC
+        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
+        ///E////D/EFAAAEAAAAD3AAAABQAAAA5////8f///8P8gUAAAQAAAAPWwAAAHsAAAD2////1v///w/z
+        BQAAAwAAAA9dAAAAfQAAADsAAAAP9AUAAAQAAAAPYQAAAEEAAAD8////3P///w/1BQAABAAAAA9zAAAA
+        UwAAAP/////f////D/YFAAAEAAAAD2QAAABEAAAA4P///8D///8P9wUAAAQAAAAPZgAAAEYAAADu////
+        zv///w/4BQAABAAAAA9nAAAARwAAAOb////G////D/kFAAAEAAAAD2gAAABIAAAA4////8P///8P+gUA
+        AAQAAAAPagAAAEoAAADy////0v///w/7BQAABAAAAA9rAAAASwAAAO3////N////D/wFAAAEAAAAD2wA
+        AABMAAAA4v///8L///8P/QUAAAQAAAAPOwAAADoAAADs////zP///w/+BQAABAAAAA8nAAAAIgAAAPf/
+        ///X////D/8FAAAEAAAAD1wAAAB8AAAAJwAAANv///8PAAYAAAQAAAAPegAAAFoAAAD+////3v///w8B
+        BgAABAAAAA94AAAAWAAAAOn////J////DwIGAAAEAAAAD2MAAABDAAAA+v///9r///8PAwYAAAQAAAAP
+        dgAAAFYAAAD9////3f///w8EBgAABAAAAA9iAAAAQgAAAPT////U////DwUGAAAEAAAAD24AAABOAAAA
+        9f///9X///8PBgYAAAQAAAAPbQAAAE0AAADv////z////w8HBgAABAAAAA8sAAAAPAAAAPD////Q////
+        DwgGAAAEAAAADy4AAAA+AAAA6////8v///8PCQYAAAQAAAAPLwAAAD8AAADh////wf///w8KBgAAAgAA
+        AA88AAAAPgAAAA8LBgAAAAAAAA8PDAYAAAQAAAAPYAAAAH4AAAD3////1////w8NBgAAAgAAAA8xAAAA
+        IQAAAA8OBgAAAgAAAA8yAAAAQAAAAA8PBgAAAgAAAA8zAAAAIwAAAA8QBgAAAgAAAA80AAAAJAAAAA8R
+        BgAAAgAAAA81AAAAJQAAAA8SBgAAAgAAAA82AAAAXgAAAA8TBgAAAgAAAA83AAAAJgAAAA8UBgAAAgAA
+        AA84AAAAKgAAAA8VBgAAAgAAAA85AAAAKAAAAA8WBgAAAgAAAA8wAAAAKQAAAA8XBgAAAgAAAA8tAAAA
+        XwAAAA8YBgAAAgAAAA89AAAAKwAAAA8ZBgAABAAAAA9xAAAAUQAAAP/////f////DxoGAAAEAAAAD3cA
+        AABXAAAA4v///8L///8PGwYAAAQAAAAPZQAAAEUAAADl////xf///w8cBgAABAAAAA9yAAAAUgAAAPD/
+        ///Q////Dx0GAAAEAAAAD3QAAABUAAAA8v///9L///8PHgYAAAQAAAAPeQAAAFkAAAD6////2v///w8f
+        BgAABAAAAA91AAAAVQAAAPP////T////DyAGAAAEAAAAD2kAAABJAAAA6P///8j///8PIQYAAAQAAAAP
+        bwAAAE8AAADu////zv///w8iBgAABAAAAA9wAAAAUAAAAO/////P////DyMGAAAEAAAAD1sAAAB7AAAA
+        +P///9j///8PJAYAAAQAAAAPXQAAAH0AAAD5////2f///w8lBgAABAAAAA9hAAAAQQAAAOD////A////
+        DyYGAAAEAAAAD3MAAABTAAAA8f///9H///8PJwYAAAQAAAAPZAAAAEQAAADk////xP///w8oBgAABAAA
+        AA9mAAAARgAAAPT////U////DykGAAAEAAAAD2cAAABHAAAA4////8P///8PKgYAAAQAAAAPaAAAAEgA
+        AAD1////1f///w8rBgAABAAAAA9qAAAASgAAAOn////J////DywGAAAEAAAAD2sAAABLAAAA6v///8r/
+        //8PLQYAAAQAAAAPbAAAAEwAAADr////y////w8uBgAAAgAAAA87AAAAOgAAAA8vBgAAAgAAAA8nAAAA
+        IgAAAA8wBgAABAAAAA9cAAAAfAAAAP7////e////DzEGAAAEAAAAD3oAAABaAAAA5////8f///8PMgYA
+        AAQAAAAPeAAAAFgAAAD8////3P///w8zBgAABAAAAA9jAAAAQwAAAPb////W////DzQGAAAEAAAAD3YA
+        AABWAAAA5v///8b///8PNQYAAAQAAAAPYgAAAEIAAADh////wf///w82BgAABAAAAA9uAAAATgAAAO3/
+        ///N////DzcGAAAEAAAAD20AAABNAAAA7P///8z///8POAYAAAIAAAAPLAAAADwAAAAPOQYAAAIAAAAP
+        LgAAAD4AAAAPOgYAAAIAAAAPLwAAAD8AAAAPOwYAAAIAAAAPPAAAAD4AAAAPPAYAAAAAAAAPDz0GAAAE
+        AAAAD2AAAAB+AAAAo////7P///8PPgYAAAIAAAAPMQAAACEAAAAPPwYAAAIAAAAPMgAAAEAAAAAPQAYA
+        AAIAAAAPMwAAACMAAAAPQQYAAAIAAAAPNAAAACQAAAAPQgYAAAIAAAAPNQAAACUAAAAPQwYAAAIAAAAP
+        NgAAAF4AAAAPRAYAAAIAAAAPNwAAACYAAAAPRQYAAAIAAAAPOAAAACoAAAAPRgYAAAIAAAAPOQAAACgA
+        AAAPRwYAAAIAAAAPMAAAACkAAAAPSAYAAAIAAAAPLQAAAF8AAAAPSQYAAAIAAAAPPQAAACsAAAAPSgYA
+        AAQAAAAPcQAAAFEAAADK////6v///w9LBgAABAAAAA93AAAAVwAAAMP////j////D0wGAAAEAAAAD2UA
+        AABFAAAA1f////X///8PTQYAAAQAAAAPcgAAAFIAAADL////6////w9OBgAABAAAAA90AAAAVAAAAMX/
+        ///l////D08GAAAEAAAAD3kAAABZAAAAzv///+7///8PUAYAAAQAAAAPdQAAAFUAAADH////5////w9R
+        BgAABAAAAA9pAAAASQAAANv////7////D1IGAAAEAAAAD28AAABPAAAArv///77///8PUwYAAAQAAAAP
+        cAAAAFAAAADa////+v///w9UBgAABAAAAA9bAAAAewAAAMj////o////D1UGAAAEAAAAD10AAAB9AAAA
+        JwAAACcAAAAPVgYAAAQAAAAPYQAAAEEAAADG////5v///w9XBgAABAAAAA9zAAAAUwAAANn////5////
+        D1gGAAAEAAAAD2QAAABEAAAA1/////f///8PWQYAAAQAAAAPZgAAAEYAAADB////4f///w9aBgAABAAA
+        AA9nAAAARwAAAND////w////D1sGAAAEAAAAD2gAAABIAAAA0v////L///8PXAYAAAQAAAAPagAAAEoA
+        AADP////7////w9dBgAABAAAAA9rAAAASwAAAMz////s////D14GAAAEAAAAD2wAAABMAAAAxP///+T/
+        //8PXwYAAAQAAAAPOwAAADoAAADW////9v///w9gBgAABAAAAA8nAAAAIgAAANz////8////D2EGAAAE
+        AAAAD1wAAAB8AAAALwAAAHwAAAAPYgYAAAQAAAAPegAAAFoAAADR////8f///w9jBgAABAAAAA94AAAA
+        WAAAAN7////+////D2QGAAAEAAAAD2MAAABDAAAA0/////P///8PZQYAAAQAAAAPdgAAAFYAAADN////
+        7f///w9mBgAABAAAAA9iAAAAQgAAAKb///+2////D2cGAAAEAAAAD24AAABOAAAA1P////T///8PaAYA
+        AAQAAAAPbQAAAE0AAADY////+P///w9pBgAABAAAAA8sAAAAPAAAAML////i////D2oGAAAEAAAADy4A
+        AAA+AAAAwP///+D///8PawYAAAQAAAAPLwAAAD8AAAAuAAAALAAAAA9sBgAABAAAAA88AAAAPgAAAHwA
+        AACm////D20GAAAAAAAADw9uBgAAAgAAAA9gAAAAfgAAAA9vBgAAAgAAAA8xAAAAIQAAAA9wBgAAAgAA
+        AA8yAAAAQAAAAA9xBgAAAgAAAA8zAAAAIwAAAA9yBgAAAgAAAA80AAAAJAAAAA9zBgAAAgAAAA81AAAA
+        JQAAAA90BgAAAgAAAA82AAAAXgAAAA91BgAAAgAAAA83AAAAJgAAAA92BgAAAgAAAA84AAAAKgAAAA93
+        BgAAAgAAAA85AAAAKAAAAA94BgAAAgAAAA8wAAAAKQAAAA95BgAAAgAAAA8tAAAAXwAAAA96BgAAAgAA
+        AA89AAAAKwAAAA97BgAABAAAAA9xAAAAUQAAAMr////q////D3wGAAAEAAAAD3cAAABXAAAAw////+P/
+        //8PfQYAAAQAAAAPZQAAAEUAAADV////9f///w9+BgAABAAAAA9yAAAAUgAAAMv////r////D38GAAAE
+        AAAAD3QAAABUAAAAxf///+X///8PgAYAAAQAAAAPeQAAAFkAAADO////7v///w+BBgAABAAAAA91AAAA
+        VQAAAMf////n////D4IGAAAEAAAAD2kAAABJAAAA2/////v///8PgwYAAAQAAAAPbwAAAE8AAADd////
+        /f///w+EBgAABAAAAA9wAAAAUAAAANr////6////D4UGAAAEAAAAD1sAAAB7AAAAyP///+j///8PhgYA
+        AAQAAAAPXQAAAH0AAADf/////////w+HBgAABAAAAA9hAAAAQQAAAMb////m////D4gGAAAEAAAAD3MA
+        AABTAAAA2f////n///8PiQYAAAQAAAAPZAAAAEQAAADX////9////w+KBgAABAAAAA9mAAAARgAAAMH/
+        ///h////D4sGAAAEAAAAD2cAAABHAAAA0P////D///8PjAYAAAQAAAAPaAAAAEgAAADS////8v///w+N
+        BgAABAAAAA9qAAAASgAAAM/////v////D44GAAAEAAAAD2sAAABLAAAAzP///+z///8PjwYAAAQAAAAP
+        bAAAAEwAAADE////5P///w+QBgAABAAAAA87AAAAOgAAANb////2////D5EGAAAEAAAADycAAAAiAAAA
+        3P////z///8PkgYAAAIAAAAPXAAAAHwAAAAPkwYAAAQAAAAPegAAAFoAAADR////8f///w+UBgAABAAA
+        AA94AAAAWAAAAN7////+////D5UGAAAEAAAAD2MAAABDAAAA0/////P///8PlgYAAAQAAAAPdgAAAFYA
+        AADN////7f///w+XBgAABAAAAA9iAAAAQgAAAMn////p////D5gGAAAEAAAAD24AAABOAAAA1P////T/
+        //8PmQYAAAQAAAAPbQAAAE0AAADY////+P///w+aBgAABAAAAA8sAAAAPAAAAML////i////D5sGAAAE
+        AAAADy4AAAA+AAAAwP///+D///8PnAYAAAIAAAAPLwAAAD8AAAAPnQYAAAAAAAAPD54GAAAAAAAADw+f
+        BgAAAgAAAA9gAAAAfgAAAA+gBgAAAgAAAA8xAAAAIQAAAA+hBgAAAgAAAA8yAAAAQAAAAA+iBgAAAgAA
+        AA8zAAAAIwAAAA+jBgAAAgAAAA80AAAAJAAAAA+kBgAAAgAAAA81AAAAJQAAAA+lBgAAAgAAAA82AAAA
+        XgAAAA+mBgAAAgAAAA83AAAAJgAAAA+nBgAAAgAAAA84AAAAKgAAAA+oBgAAAgAAAA85AAAAKAAAAA+p
+        BgAAAgAAAA8wAAAAKQAAAA+qBgAAAgAAAA8tAAAAXwAAAA+rBgAAAgAAAA89AAAAKwAAAA+sBgAABAAA
+        AA9xAAAAUQAAAMr////q////D60GAAAEAAAAD3cAAABXAAAAw////+P///8PrgYAAAQAAAAPZQAAAEUA
+        AADV////9f///w+vBgAABAAAAA9yAAAAUgAAAMv////r////D7AGAAAEAAAAD3QAAABUAAAAxf///+X/
+        //8PsQYAAAQAAAAPeQAAAFkAAADO////7v///w+yBgAABAAAAA91AAAAVQAAAMf////n////D7MGAAAE
+        AAAAD2kAAABJAAAA2/////v///8PtAYAAAQAAAAPbwAAAE8AAADd/////f///w+1BgAABAAAAA9wAAAA
+        UAAAANr////6////D7YGAAAEAAAAD1sAAAB7AAAAyP///+j///8PtwYAAAQAAAAPXQAAAH0AAADf////
+        /////w+4BgAABAAAAA9hAAAAQQAAAMb////m////D7kGAAAEAAAAD3MAAABTAAAA2f////n///8PugYA
+        AAQAAAAPZAAAAEQAAADX////9////w+7BgAABAAAAA9mAAAARgAAAMH////h////D7wGAAAEAAAAD2cA
+        AABHAAAA0P////D///8PvQYAAAQAAAAPaAAAAEgAAADS////8v///w++BgAABAAAAA9qAAAASgAAAM//
+        ///v////D78GAAAEAAAAD2sAAABLAAAAzP///+z///8PwAYAAAQAAAAPbAAAAEwAAADE////5P///w/B
+        BgAABAAAAA87AAAAOgAAANb////2////D8IGAAAEAAAADycAAAAiAAAA3P////z///8PwwYAAAIAAAAP
+        XAAAAHwAAAAPxAYAAAQAAAAPegAAAFoAAADR////8f///w/FBgAABAAAAA94AAAAWAAAAN7////+////
+        D8YGAAAEAAAAD2MAAABDAAAA0/////P///8PxwYAAAQAAAAPdgAAAFYAAADN////7f///w/IBgAABAAA
+        AA9iAAAAQgAAAMn////p////D8kGAAAEAAAAD24AAABOAAAA1P////T///8PygYAAAQAAAAPbQAAAE0A
+        AADY////+P///w/LBgAABAAAAA8sAAAAPAAAAML////i////D8wGAAAEAAAADy4AAAA+AAAAwP///+D/
+        //8PzQYAAAIAAAAPLwAAAD8AAAAPzgYAAAIAAAAPPAAAAD4AAAAPzwYAAAAAAAAPD9AGAAACAAAADygA
+        AAApAAAAD9EGAAACAAAADzEAAAAhAAAAD9IGAAACAAAADzIAAAAiAAAAD9MGAAACAAAADzMAAAAvAAAA
+        D9QGAAACAAAADzQAAAAkAAAAD9UGAAACAAAADzUAAAA6AAAAD9YGAAACAAAADzYAAAAsAAAAD9cGAAAC
+        AAAADzcAAAAuAAAAD9gGAAACAAAADzgAAAA7AAAAD9kGAAACAAAADzkAAAA/AAAAD9oGAAACAAAADzAA
+        AAAlAAAAD9sGAAACAAAADy0AAABfAAAAD9wGAAACAAAADz0AAAArAAAAD90GAAACAAAAD8r////q////
+        D94GAAACAAAAD8P////j////D98GAAACAAAAD9X////1////D+AGAAACAAAAD8v////r////D+EGAAAC
+        AAAAD8X////l////D+IGAAACAAAAD87////u////D+MGAAACAAAAD8f////n////D+QGAAACAAAAD9v/
+        ///7////D+UGAAACAAAAD93////9////D+YGAAACAAAAD9r////6////D+cGAAACAAAAD8j////o////
+        D+gGAAACAAAAD9//////////D+kGAAACAAAAD8b////m////D+oGAAACAAAAD9n////5////D+sGAAAC
+        AAAAD9f////3////D+wGAAACAAAAD8H////h////D+0GAAACAAAAD9D////w////D+4GAAACAAAAD9L/
+        ///y////D+8GAAACAAAAD8/////v////D/AGAAACAAAAD8z////s////D/EGAAACAAAAD8T////k////
+        D/IGAAACAAAAD9b////2////D/MGAAACAAAAD9z////8////D/QGAAACAAAAD1wAAAB8AAAAD/UGAAAC
+        AAAAD9H////x////D/YGAAACAAAAD97////+////D/cGAAACAAAAD9P////z////D/gGAAACAAAAD83/
+        ///t////D/kGAAACAAAAD8n////p////D/oGAAACAAAAD9T////0////D/sGAAACAAAAD9j////4////
+        D/wGAAACAAAAD8L////i////D/0GAAACAAAAD8D////g////D/4GAAACAAAADy8AAAA/AAAAD/8GAAAC
+        AAAADzwAAAA+AAAADwAHAAAAAAAADw8BBwAAAgAAAA9gAAAAfgAAAA8CBwAAAgAAAA8xAAAAIQAAAA8D
+        BwAAAgAAAA8yAAAAQAAAAA8EBwAAAgAAAA8zAAAAIwAAAA8FBwAAAgAAAA80AAAAJAAAAA8GBwAAAgAA
+        AA81AAAAJQAAAA8HBwAAAgAAAA82AAAAXgAAAA8IBwAAAgAAAA83AAAAJgAAAA8JBwAAAgAAAA84AAAA
+        KgAAAA8KBwAAAgAAAA85AAAAKAAAAA8LBwAAAgAAAA8wAAAAKQAAAA8MBwAAAgAAAA8tAAAAXwAAAA8N
+        BwAAAgAAAA89AAAAKwAAAA8OBwAABAAAAA9xAAAAUQAAAOn////J////Dw8HAAAEAAAAD3cAAABXAAAA
+        9v///9b///8PEAcAAAQAAAAPZQAAAEUAAADz////0////w8RBwAABAAAAA9yAAAAUgAAAOr////K////
+        DxIHAAAEAAAAD3QAAABUAAAA5f///8X///8PEwcAAAQAAAAPeQAAAFkAAADt////zf///w8UBwAABAAA
+        AA91AAAAVQAAAOP////D////DxUHAAAEAAAAD2kAAABJAAAA+P///9j///8PFgcAAAQAAAAPbwAAAE8A
+        AAD5////2f///w8XBwAABAAAAA9wAAAAUAAAAOf////H////DxgHAAAEAAAAD1sAAAB7AAAA9f///9X/
+        //8PGQcAAAQAAAAPXQAAAH0AAAD6////2v///w8aBwAABAAAAA9hAAAAQQAAAPT////U////DxsHAAAE
+        AAAAD3MAAABTAAAA+////9v///8PHAcAAAQAAAAPZAAAAEQAAADi////wv///w8dBwAABAAAAA9mAAAA
+        RgAAAOD////A////Dx4HAAAEAAAAD2cAAABHAAAA7////8////8PHwcAAAQAAAAPaAAAAEgAAADw////
+        0P///w8gBwAABAAAAA9qAAAASgAAAO7////O////DyEHAAAEAAAAD2sAAABLAAAA6////8v///8PIgcA
+        AAQAAAAPbAAAAEwAAADk////xP///w8jBwAABAAAAA87AAAAOgAAAOb////G////DyQHAAAEAAAADycA
+        AAAiAAAA/f///93///8PJQcAAAIAAAAPXAAAAHwAAAAPJgcAAAQAAAAPegAAAFoAAAD/////3////w8n
+        BwAABAAAAA94AAAAWAAAAPf////X////DygHAAAEAAAAD2MAAABDAAAA8f///9H///8PKQcAAAQAAAAP
+        dgAAAFYAAADs////zP///w8qBwAABAAAAA9iAAAAQgAAAOj////I////DysHAAAEAAAAD24AAABOAAAA
+        8v///9L///8PLAcAAAQAAAAPbQAAAE0AAAD8////3P///w8tBwAABAAAAA8sAAAAPAAAAOH////B////
+        Dy4HAAAEAAAADy4AAAA+AAAA/v///97///8PLwcAAAIAAAAPLwAAAD8AAAAPMAcAAAIAAAAPPAAAAD4A
+        AAAPMQcAAAAAAAAPDzIHAAACAAAAD2AAAAB+AAAADzMHAAACAAAADzEAAAAhAAAADzQHAAACAAAADzIA
+        AABAAAAADzUHAAACAAAADzMAAAAjAAAADzYHAAACAAAADzQAAAAkAAAADzcHAAACAAAADzUAAAAlAAAA
+        DzgHAAACAAAADzYAAABeAAAADzkHAAACAAAADzcAAAAmAAAADzoHAAACAAAADzgAAAAqAAAADzsHAAAC
+        AAAADzkAAAAoAAAADzwHAAACAAAADzAAAAApAAAADz0HAAACAAAADy0AAABfAAAADz4HAAACAAAADz0A
+        AAArAAAADz8HAAAEAAAAD3EAAABRAAAA0f////H///8PQAcAAAQAAAAPdwAAAFcAAADX////9////w9B
+        BwAABAAAAA9lAAAARQAAAMX////l////D0IHAAAEAAAAD3IAAABSAAAA0v////L///8PQwcAAAQAAAAP
+        dAAAAFQAAADU////9P///w9EBwAABAAAAA95AAAAWQAAANn////5////D0UHAAAEAAAAD3UAAABVAAAA
+        1f////X///8PRgcAAAQAAAAPaQAAAEkAAADJ////6f///w9HBwAABAAAAA9vAAAATwAAAM/////v////
+        D0gHAAAEAAAAD3AAAABQAAAA0P////D///8PSQcAAAQAAAAPWwAAAHsAAADb////+////w9KBwAABAAA
+        AA9dAAAAfQAAAN3////9////D0sHAAAEAAAAD2EAAABBAAAAwf///+H///8PTAcAAAQAAAAPcwAAAFMA
+        AADT////8////w9NBwAABAAAAA9kAAAARAAAAMT////k////D04HAAAEAAAAD2YAAABGAAAAxv///+b/
+        //8PTwcAAAQAAAAPZwAAAEcAAADH////5////w9QBwAABAAAAA9oAAAASAAAAMj////o////D1EHAAAE
+        AAAAD2oAAABKAAAAyv///+r///8PUgcAAAQAAAAPawAAAEsAAADL////6////w9TBwAABAAAAA9sAAAA
+        TAAAAMz////s////D1QHAAACAAAADzsAAAA6AAAAD1UHAAACAAAADycAAAAiAAAAD1YHAAACAAAAD1wA
+        AAB8AAAAD1cHAAAEAAAAD3oAAABaAAAA2v////r///8PWAcAAAQAAAAPeAAAAFgAAADY////+P///w9Z
+        BwAABAAAAA9jAAAAQwAAAMP////j////D1oHAAAEAAAAD3YAAABWAAAA1v////b///8PWwcAAAQAAAAP
+        YgAAAEIAAADC////4v///w9cBwAABAAAAA9uAAAATgAAAM7////u////D10HAAAEAAAAD20AAABNAAAA
+        zf///+3///8PXgcAAAIAAAAPLAAAADwAAAAPXwcAAAIAAAAPLgAAAD4AAAAPYAcAAAIAAAAPLwAAAD8A
+        AAAPYQcAAAIAAAAPPAAAAD4AAAAPYgcAAAAAAAAPD2MHAAAEAAAAD2AAAAB+AAAArf///73///8PZAcA
+        AAQAAAAPMQAAACEAAAAxAAAAIQAAAA9lBwAABAAAAA8yAAAAQAAAADIAAAAiAAAAD2YHAAAEAAAADzMA
+        AAAjAAAAMwAAACcAAAAPZwcAAAQAAAAPNAAAACQAAAA0AAAAKgAAAA9oBwAABAAAAA81AAAAJQAAADUA
+        AAA6AAAAD2kHAAAEAAAADzYAAABeAAAANgAAACwAAAAPagcAAAQAAAAPNwAAACYAAAA3AAAALgAAAA9r
+        BwAABAAAAA84AAAAKgAAADgAAAA7AAAAD2wHAAAEAAAADzkAAAAoAAAAOQAAACgAAAAPbQcAAAQAAAAP
+        MAAAACkAAAAwAAAAKQAAAA9uBwAABAAAAA8tAAAAXwAAAC0AAABfAAAAD28HAAAEAAAADz0AAAArAAAA
+        PQAAACsAAAAPcAcAAAQAAAAPcQAAAFEAAADK////6v///w9xBwAABAAAAA93AAAAVwAAAMP////j////
+        D3IHAAAEAAAAD2UAAABFAAAA1f////X///8PcwcAAAQAAAAPcgAAAFIAAADL////6////w90BwAABAAA
+        AA90AAAAVAAAAMX////l////D3UHAAAEAAAAD3kAAABZAAAAzv///+7///8PdgcAAAQAAAAPdQAAAFUA
+        AADH////5////w93BwAABAAAAA9pAAAASQAAANv////7////D3gHAAAEAAAAD28AAABPAAAA3f////3/
+        //8PeQcAAAQAAAAPcAAAAFAAAADa////+v///w96BwAABAAAAA9bAAAAewAAAMj////o////D3sHAAAE
+        AAAAD10AAAB9AAAAp////7f///8PfAcAAAQAAAAPYQAAAEEAAADG////5v///w99BwAABAAAAA9zAAAA
+        UwAAAKb///+2////D34HAAAEAAAAD2QAAABEAAAA1/////f///8PfwcAAAQAAAAPZgAAAEYAAADB////
+        4f///w+ABwAABAAAAA9nAAAARwAAAND////w////D4EHAAAEAAAAD2gAAABIAAAA0v////L///8PggcA
+        AAQAAAAPagAAAEoAAADP////7////w+DBwAABAAAAA9rAAAASwAAAMz////s////D4QHAAAEAAAAD2wA
+        AABMAAAAxP///+T///8PhQcAAAQAAAAPOwAAADoAAADW////9v///w+GBwAABAAAAA8nAAAAIgAAAKT/
+        //+0////D4cHAAAEAAAAD1wAAAB8AAAAXAAAAHwAAAAPiAcAAAQAAAAPegAAAFoAAADR////8f///w+J
+        BwAABAAAAA94AAAAWAAAAN7////+////D4oHAAAEAAAAD2MAAABDAAAA0/////P///8PiwcAAAQAAAAP
+        dgAAAFYAAADN////7f///w+MBwAABAAAAA9iAAAAQgAAAMn////p////D40HAAAEAAAAD24AAABOAAAA
+        1P////T///8PjgcAAAQAAAAPbQAAAE0AAADY////+P///w+PBwAABAAAAA8sAAAAPAAAAML////i////
+        D5AHAAAEAAAADy4AAAA+AAAAwP///+D///8PkQcAAAQAAAAPLwAAAD8AAAAvAAAAPwAAAA+SBwAAAgAA
+        AA88AAAAPgAAAA+TBwAAAAAAAA8PlAcAAAIAAAAPrf///73///8PlQcAAAIAAAAPMQAAACEAAAAPlgcA
+        AAIAAAAPMgAAACIAAAAPlwcAAAIAAAAPMwAAACcAAAAPmAcAAAIAAAAPNAAAADsAAAAPmQcAAAIAAAAP
+        NQAAACUAAAAPmgcAAAIAAAAPNgAAADoAAAAPmwcAAAIAAAAPNwAAAD8AAAAPnAcAAAIAAAAPOAAAACoA
+        AAAPnQcAAAIAAAAPOQAAACgAAAAPngcAAAIAAAAPMAAAACkAAAAPnwcAAAIAAAAPLQAAAF8AAAAPoAcA
+        AAIAAAAPPQAAACsAAAAPoQcAAAIAAAAPyv///+r///8PogcAAAIAAAAPw////+P///8PowcAAAIAAAAP
+        1f////X///8PpAcAAAIAAAAPy////+v///8PpQcAAAIAAAAPxf///+X///8PpgcAAAIAAAAPzv///+7/
+        //8PpwcAAAIAAAAPx////+f///8PqAcAAAIAAAAP2/////v///8PqQcAAAIAAAAP3f////3///8PqgcA
+        AAIAAAAP2v////r///8PqwcAAAIAAAAPyP///+j///8PrAcAAAIAAAAPp////7f///8PrQcAAAIAAAAP
+        xv///+b///8PrgcAAAIAAAAPpv///7b///8PrwcAAAIAAAAP1/////f///8PsAcAAAIAAAAPwf///+H/
+        //8PsQcAAAIAAAAP0P////D///8PsgcAAAIAAAAP0v////L///8PswcAAAIAAAAPz////+////8PtAcA
+        AAIAAAAPzP///+z///8PtQcAAAIAAAAPxP///+T///8PtgcAAAIAAAAP1v////b///8PtwcAAAIAAAAP
+        pP///7T///8PuAcAAAIAAAAPXAAAAC8AAAAPuQcAAAIAAAAP0f////H///8PugcAAAIAAAAP3v////7/
+        //8PuwcAAAIAAAAP0/////P///8PvAcAAAIAAAAPzf///+3///8PvQcAAAIAAAAPyf///+n///8PvgcA
+        AAIAAAAP1P////T///8PvwcAAAIAAAAP2P////j///8PwAcAAAIAAAAPwv///+L///8PwQcAAAIAAAAP
+        wP///+D///8PwgcAAAIAAAAPLgAAACwAAAAPwwcAAAIAAAAPPAAAAD4AAAAPxAcAAAAAAAAPD8UHAAAC
+        AAAAD6P///+z////D8YHAAACAAAADzEAAAAhAAAAD8cHAAACAAAADzIAAAAiAAAAD8gHAAACAAAADzMA
+        AAAnAAAAD8kHAAACAAAADzQAAAA7AAAAD8oHAAACAAAADzUAAAAlAAAAD8sHAAACAAAADzYAAAA6AAAA
+        D8wHAAACAAAADzcAAAA/AAAAD80HAAACAAAADzgAAAAqAAAAD84HAAACAAAADzkAAAAoAAAAD88HAAAC
+        AAAADzAAAAApAAAAD9AHAAACAAAADy0AAABfAAAAD9EHAAACAAAADz0AAAArAAAAD9IHAAACAAAAD8r/
+        ///q////D9MHAAACAAAAD8P////j////D9QHAAACAAAAD9X////1////D9UHAAACAAAAD8v////r////
+        D9YHAAACAAAAD8X////l////D9cHAAACAAAAD87////u////D9gHAAACAAAAD8f////n////D9kHAAAC
+        AAAAD9v////7////D9oHAAACAAAAD93////9////D9sHAAACAAAAD9r////6////D9wHAAACAAAAD8j/
+        ///o////D90HAAACAAAAD9//////////D94HAAACAAAAD8b////m////D98HAAACAAAAD9n////5////
+        D+AHAAACAAAAD9f////3////D+EHAAACAAAAD8H////h////D+IHAAACAAAAD9D////w////D+MHAAAC
+        AAAAD9L////y////D+QHAAACAAAAD8/////v////D+UHAAACAAAAD8z////s////D+YHAAACAAAAD8T/
+        ///k////D+cHAAACAAAAD9b////2////D+gHAAACAAAAD9z////8////D+kHAAACAAAAD1wAAAAvAAAA
+        D+oHAAACAAAAD9H////x////D+sHAAACAAAAD97////+////D+wHAAACAAAAD9P////z////D+0HAAAC
+        AAAAD83////t////D+4HAAACAAAAD8n////p////D+8HAAACAAAAD9T////0////D/AHAAACAAAAD9j/
+        ///4////D/EHAAACAAAAD8L////i////D/IHAAACAAAAD8D////g////D/MHAAACAAAADy4AAAAsAAAA
+        D/QHAAACAAAADzwAAAA+AAAAD/UHAAAAAAAADw/2BwAAAgAAAA+6////qv///w/3BwAAAgAAAA8xAAAA
+        IQAAAA/4BwAAAgAAAA8yAAAAIgAAAA/5BwAAAgAAAA8zAAAAt////w/6BwAAAgAAAA80AAAAJAAAAA/7
+        BwAAAgAAAA81AAAAJQAAAA/8BwAAAgAAAA82AAAAJgAAAA/9BwAAAgAAAA83AAAALwAAAA/+BwAAAgAA
+        AA84AAAAKAAAAA//BwAAAgAAAA85AAAAKQAAAA8ACAAAAgAAAA8wAAAAPQAAAA8BCAAAAgAAAA8nAAAA
+        PwAAAA8CCAAAAgAAAA+h////v////w8DCAAAAgAAAA9xAAAAUQAAAA8ECAAAAgAAAA93AAAAVwAAAA8F
+        CAAAAgAAAA9lAAAARQAAAA8GCAAAAgAAAA9yAAAAUgAAAA8HCAAAAgAAAA90AAAAVAAAAA8ICAAAAgAA
+        AA95AAAAWQAAAA8JCAAAAgAAAA91AAAAVQAAAA8KCAAAAgAAAA9pAAAASQAAAA8LCAAAAgAAAA9vAAAA
+        TwAAAA8MCAAAAgAAAA9wAAAAUAAAAA8NCAAAAgAAAA9gAAAAXgAAAA8OCAAAAgAAAA8rAAAAKgAAAA8P
+        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
+        AAAPHQkAAAIAAAAPMQAAACEAAAAPHgkAAAIAAAAPMgAAACIAAAAPHwkAAAIAAAAPMwAAACMAAAAPIAkA
+        AAIAAAAPNAAAACQAAAAPIQkAAAIAAAAPNQAAACUAAAAPIgkAAAIAAAAPNgAAACYAAAAPIwkAAAIAAAAP
+        NwAAAC8AAAAPJAkAAAIAAAAPOAAAACgAAAAPJQkAAAIAAAAPOQAAACkAAAAPJgkAAAIAAAAPMAAAAD0A
+        AAAPJwkAAAIAAAAPJwAAAD8AAAAPKAkAAAIAAAAPKwAAACoAAAAPKQkAAAIAAAAPqf///7n///8PKgkA
+        AAIAAAAPqv///7r///8PKwkAAAIAAAAPxf///+X///8PLAkAAAIAAAAP0v////L///8PLQkAAAIAAAAP
+        1P////T///8PLgkAAAIAAAAP2v////r///8PLwkAAAIAAAAP1f////X///8PMAkAAAIAAAAPyf///+n/
+        //8PMQkAAAIAAAAPz////+////8PMgkAAAIAAAAP0P////D///8PMwkAAAIAAAAP2/////v///8PNAkA
+        AAIAAAAPWwAAAF0AAAAPNQkAAAIAAAAPwf///+H///8PNgkAAAIAAAAP0/////P///8PNwkAAAIAAAAP
+        xP///+T///8POAkAAAIAAAAPxv///+b///8POQkAAAIAAAAPx////+f///8POgkAAAIAAAAPyP///+j/
+        //8POwkAAAIAAAAPqP///7j///8PPAkAAAIAAAAPy////+v///8PPQkAAAIAAAAPzP///+z///8PPgkA
+        AAIAAAAP3v////7///8PPwkAAAIAAAAPq////7v///8PQAkAAAIAAAAPLQAAAF8AAAAPQQkAAAIAAAAP
+        of///7H///8PQgkAAAIAAAAPr////7////8PQwkAAAIAAAAPw////+P///8PRAkAAAIAAAAP1/////f/
+        //8PRQkAAAIAAAAPwv///+L///8PRgkAAAIAAAAPzv///+7///8PRwkAAAIAAAAPzf///+3///8PSAkA
+        AAIAAAAPLAAAADsAAAAPSQkAAAIAAAAPLgAAADoAAAAPSgkAAAIAAAAP1v////b///8PSwkAAAIAAAAP
+        PAAAAD4AAAAPTAkAAAAAAAAPD00JAAACAAAAD2AAAAB+AAAAD04JAAACAAAADzEAAAAhAAAAD08JAAAE
+        AAAADzIAAABAAAAAMgAAACIAAAAPUAkAAAIAAAAPMwAAACMAAAAPUQkAAAIAAAAPNAAAACQAAAAPUgkA
+        AAIAAAAPNQAAACUAAAAPUwkAAAQAAAAPNgAAAF4AAAA2AAAAJgAAAA9UCQAABAAAAA83AAAAJgAAADcA
+        AAAvAAAAD1UJAAAEAAAADzgAAAAqAAAAOAAAACgAAAAPVgkAAAQAAAAPOQAAACgAAAA5AAAAKQAAAA9X
+        CQAABAAAAA8wAAAAKQAAADAAAAA9AAAAD1gJAAAEAAAADy0AAABfAAAAJwAAAD8AAAAPWQkAAAQAAAAP
+        PQAAACsAAAArAAAAKgAAAA9aCQAABAAAAA9xAAAAUQAAAKn///+5////D1sJAAAEAAAAD3cAAABXAAAA
+        qv///7r///8PXAkAAAQAAAAPZQAAAEUAAADF////5f///w9dCQAABAAAAA9yAAAAUgAAANL////y////
+        D14JAAAEAAAAD3QAAABUAAAA1P////T///8PXwkAAAQAAAAPeQAAAFkAAADa////+v///w9gCQAABAAA
+        AA91AAAAVQAAANX////1////D2EJAAAEAAAAD2kAAABJAAAAyf///+n///8PYgkAAAQAAAAPbwAAAE8A
+        AADP////7////w9jCQAABAAAAA9wAAAAUAAAAND////w////D2QJAAAEAAAAD1sAAAB7AAAA2/////v/
+        //8PZQkAAAQAAAAPXQAAAH0AAABbAAAAXQAAAA9mCQAABAAAAA9hAAAAQQAAAMH////h////D2cJAAAE
+        AAAAD3MAAABTAAAA0/////P///8PaAkAAAQAAAAPZAAAAEQAAADE////5P///w9pCQAABAAAAA9mAAAA
+        RgAAAMb////m////D2oJAAAEAAAAD2cAAABHAAAAx////+f///8PawkAAAQAAAAPaAAAAEgAAADI////
+        6P///w9sCQAABAAAAA9qAAAASgAAAKj///+4////D20JAAAEAAAAD2sAAABLAAAAy////+v///8PbgkA
+        AAQAAAAPbAAAAEwAAADM////7P///w9vCQAABAAAAA87AAAAOgAAAN7////+////D3AJAAAEAAAADycA
+        AAAiAAAAq////7v///8PcQkAAAQAAAAPXAAAAHwAAAAtAAAAXwAAAA9yCQAABAAAAA96AAAAWgAAAKH/
+        //+x////D3MJAAAEAAAAD3gAAABYAAAAr////7////8PdAkAAAQAAAAPYwAAAEMAAADD////4////w91
+        CQAABAAAAA92AAAAVgAAANf////3////D3YJAAAEAAAAD2IAAABCAAAAwv///+L///8PdwkAAAQAAAAP
+        bgAAAE4AAADO////7v///w94CQAABAAAAA9tAAAATQAAAM3////t////D3kJAAAEAAAADywAAAA8AAAA
+        LAAAADsAAAAPegkAAAQAAAAPLgAAAD4AAAAuAAAAOgAAAA97CQAABAAAAA8vAAAAPwAAANb////2////
+        D3wJAAACAAAADzwAAAA+AAAAD30JAAAAAAAADw9+CQAAAgAAAA+4////qP///w9/CQAAAgAAAA8xAAAA
+        IQAAAA+ACQAAAgAAAA8yAAAAIgAAAA+BCQAAAgAAAA8zAAAAIwAAAA+CCQAAAgAAAA80AAAAJAAAAA+D
+        CQAAAgAAAA81AAAAJQAAAA+ECQAAAgAAAA82AAAAJgAAAA+FCQAAAgAAAA83AAAALwAAAA+GCQAAAgAA
+        AA84AAAAKAAAAA+HCQAAAgAAAA85AAAAKQAAAA+ICQAAAgAAAA8wAAAAPQAAAA+JCQAAAgAAAA8nAAAA
+        PwAAAA+KCQAAAgAAAA8rAAAAKgAAAA+LCQAAAgAAAA9xAAAAUQAAAA+MCQAAAgAAAA93AAAAVwAAAA+N
+        CQAAAgAAAA9lAAAARQAAAA+OCQAAAgAAAA9yAAAAUgAAAA+PCQAAAgAAAA90AAAAVAAAAA+QCQAAAgAA
+        AA96AAAAWgAAAA+RCQAAAgAAAA91AAAAVQAAAA+SCQAAAgAAAA9pAAAASQAAAA+TCQAAAgAAAA9vAAAA
+        TwAAAA+UCQAAAgAAAA9wAAAAUAAAAA+VCQAAAgAAAA+5////qf///w+WCQAAAgAAAA/w////0P///w+X
+        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
+        AAAP8wkAAAIAAAAPdQAAAFUAAAAP9AkAAAIAAAAPaQAAAEkAAAAP9QkAAAIAAAAPbwAAAE8AAAAP9gkA
+        AAIAAAAPcAAAAFAAAAAP9wkAAAIAAAAPQAAAAGAAAAAP+AkAAAIAAAAPWwAAAHsAAAAP+QkAAAIAAAAP
+        YQAAAEEAAAAP+gkAAAIAAAAPcwAAAFMAAAAP+wkAAAIAAAAPZAAAAEQAAAAP/AkAAAIAAAAPZgAAAEYA
+        AAAP/QkAAAIAAAAPZwAAAEcAAAAP/gkAAAIAAAAPaAAAAEgAAAAP/wkAAAIAAAAPagAAAEoAAAAPAAoA
+        AAIAAAAPawAAAEsAAAAPAQoAAAIAAAAPbAAAAEwAAAAPAgoAAAIAAAAPOwAAACsAAAAPAwoAAAIAAAAP
+        OgAAACoAAAAPBAoAAAIAAAAPXQAAAH0AAAAPBQoAAAIAAAAPegAAAFoAAAAPBgoAAAIAAAAPeAAAAFgA
+        AAAPBwoAAAIAAAAPYwAAAEMAAAAPCAoAAAIAAAAPdgAAAFYAAAAPCQoAAAIAAAAPYgAAAEIAAAAPCgoA
+        AAIAAAAPbgAAAE4AAAAPCwoAAAIAAAAPbQAAAE0AAAAPDAoAAAIAAAAPLAAAADwAAAAPDQoAAAIAAAAP
+        LgAAAD4AAAAPDgoAAAIAAAAPLwAAAD8AAAAPDwoAAAIAAAAPXAAAAF8AAAAPEAoAAAAAAAAPDxEKAAAC
+        AAAADzEAAAAhAAAADxIKAAACAAAADzIAAAAiAAAADxMKAAACAAAADzMAAAAjAAAADxQKAAACAAAADzQA
+        AAAkAAAADxUKAAACAAAADzUAAAAlAAAADxYKAAACAAAADzYAAAAmAAAADxcKAAACAAAADzcAAAAnAAAA
+        DxgKAAACAAAADzgAAAAoAAAADxkKAAACAAAADzkAAAApAAAADxoKAAABAAAADzAAAAAPGwoAAAIAAAAP
+        LQAAAD0AAAAPHAoAAAIAAAAPXgAAAGAAAAAPHQoAAAIAAAAPXAAAAHwAAAAPHgoAAAIAAAAPcQAAAFEA
+        AAAPHwoAAAIAAAAPdwAAAFcAAAAPIAoAAAIAAAAPZQAAAEUAAAAPIQoAAAIAAAAPcgAAAFIAAAAPIgoA
+        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
+        AA9xAAAAUQAAAOT////E////D4EKAAAEAAAAD3cAAABXAAAA7P///8z///8PggoAAAQAAAAPZQAAAEUA
+        AADp////yf///w+DCgAABAAAAA9yAAAAUgAAAPj////Y////D4QKAAAEAAAAD3QAAABUAAAAu////6v/
+        //8PhQoAAAQAAAAPeQAAAFkAAAD9////3f///w+GCgAABAAAAA91AAAAVQAAAPn////Z////D4cKAAAE
+        AAAAD2kAAABJAAAA7f///83///8PiAoAAAQAAAAPbwAAAE8AAADz////0////w+JCgAABAAAAA9wAAAA
+        UAAAAPb////W////D4oKAAACAAAAD1sAAAB7AAAAD4sKAAACAAAAD10AAAB9AAAAD4wKAAAEAAAAD2EA
+        AABBAAAA4f///8H///8PjQoAAAQAAAAPcwAAAFMAAAC5////qf///w+OCgAABAAAAA9kAAAARAAAAO//
+        ///P////D48KAAAEAAAAD2YAAABGAAAA6////8v///8PkAoAAAQAAAAPZwAAAEcAAADg////wP///w+R
+        CgAABAAAAA9oAAAASAAAAPr////a////D5IKAAAEAAAAD2oAAABKAAAA/P///9z///8PkwoAAAQAAAAP
+        awAAAEsAAAD0////1P///w+UCgAABAAAAA9sAAAATAAAALX///+l////D5UKAAACAAAADzsAAAA6AAAA
+        D5YKAAACAAAADycAAAAiAAAAD5cKAAACAAAAD1wAAAB8AAAAD5gKAAAEAAAAD3oAAABaAAAAvv///67/
+        //8PmQoAAAMAAAAPeAAAAFgAAACk////D5oKAAAEAAAAD2MAAABDAAAA6P///8j///8PmwoAAAQAAAAP
+        dgAAAFYAAADn////x////w+cCgAAAgAAAA9iAAAAQgAAAA+dCgAABAAAAA9uAAAATgAAAPL////S////
+        D54KAAAEAAAAD20AAABNAAAA5f///8X///8PnwoAAAIAAAAPLAAAADwAAAAPoAoAAAIAAAAPLgAAAD4A
+        AAAPoQoAAAIAAAAPLwAAAD8AAAAPogoAAAIAAAAPPAAAAD4AAAAPowoAAAAAAAAPD6QKAAABAAAADzsA
+        AAAPpQoAAAIAAAAPKwAAADEAAAAPpgoAAAIAAAAP7P///zIAAAAPpwoAAAIAAAAPuf///zMAAAAPqAoA
+        AAIAAAAP6P///zQAAAAPqQoAAAIAAAAP+P///zUAAAAPqgoAAAIAAAAPvv///zYAAAAPqwoAAAIAAAAP
+        /f///zcAAAAPrAoAAAIAAAAP4f///zgAAAAPrQoAAAIAAAAP7f///zkAAAAPrgoAAAQAAAAP6f///zAA
+        AAC9////KQAAAA+vCgAAAgAAAA89AAAAJQAAAA+wCgAAAAAAAA8PsQoAAAMAAAAPcQAAAFEAAABcAAAA
+        D7IKAAADAAAAD3cAAABXAAAAfAAAAA+zCgAAAgAAAA9lAAAARQAAAA+0CgAAAgAAAA9yAAAAUgAAAA+1
+        CgAAAgAAAA90AAAAVAAAAA+2CgAAAgAAAA95AAAAWQAAAA+3CgAAAgAAAA91AAAAVQAAAA+4CgAAAgAA
+        AA9pAAAASQAAAA+5CgAAAgAAAA9vAAAATwAAAA+6CgAAAgAAAA9wAAAAUAAAAA+7CgAABAAAAA/6////
+        LwAAAFsAAAB7AAAAD7wKAAAEAAAADykAAAAoAAAAXQAAAH0AAAAPvQoAAAIAAAAPYQAAAEEAAAAPvgoA
+        AAMAAAAPcwAAAFMAAADw////D78KAAADAAAAD2QAAABEAAAA0P///w/ACgAAAwAAAA9mAAAARgAAAFsA
+        AAAPwQoAAAMAAAAPZwAAAEcAAABdAAAAD8IKAAACAAAAD2gAAABIAAAAD8MKAAACAAAAD2oAAABKAAAA
+        D8QKAAADAAAAD2sAAABLAAAAs////w/FCgAAAwAAAA9sAAAATAAAAKP///8PxgoAAAMAAAAP+f///yIA
+        AAAkAAAAD8cKAAADAAAAD6f///8hAAAA3////w/ICgAAAgAAAA+o////JwAAAA/JCgAAAwAAAA96AAAA
+        WgAAAD4AAAAPygoAAAMAAAAPeAAAAFgAAAAjAAAAD8sKAAADAAAAD2MAAABDAAAAJgAAAA/MCgAAAwAA
+        AA92AAAAVgAAAEAAAAAPzQoAAAMAAAAPYgAAAEIAAAB7AAAAD84KAAADAAAAD24AAABOAAAAfQAAAA/P
+        CgAAAgAAAA9tAAAATQAAAA/QCgAAAwAAAA8sAAAAPwAAADwAAAAP0QoAAAMAAAAPLgAAADoAAAA+AAAA
+        D9IKAAADAAAADy0AAABfAAAAKgAAAA/TCgAABAAAAA88AAAAPgAAAFwAAAB8AAAAD9QKAAAAAAAADw/V
+        CgAAAQAAAA87AAAAD9YKAAACAAAADysAAAAxAAAAD9cKAAACAAAAD+z///8yAAAAD9gKAAACAAAAD7n/
+        //8zAAAAD9kKAAACAAAAD+j///80AAAAD9oKAAACAAAAD/j///81AAAAD9sKAAACAAAAD77///82AAAA
+        D9wKAAACAAAAD/3///83AAAAD90KAAACAAAAD+H///84AAAAD94KAAACAAAAD+3///85AAAAD98KAAAC
+        AAAAD+n///8wAAAAD+AKAAACAAAADz0AAAAlAAAAD+EKAAACAAAAD7T///+3////D+IKAAACAAAAD3EA
+        AABRAAAAD+MKAAACAAAAD3cAAABXAAAAD+QKAAACAAAAD2UAAABFAAAAD+UKAAACAAAAD3IAAABSAAAA
+        D+YKAAACAAAAD3QAAABUAAAAD+cKAAACAAAAD3oAAABaAAAAD+gKAAACAAAAD3UAAABVAAAAD+kKAAAC
+        AAAAD2kAAABJAAAAD+oKAAACAAAAD28AAABPAAAAD+sKAAACAAAAD3AAAABQAAAAD+wKAAACAAAAD/r/
+        //8vAAAAD+0KAAACAAAADykAAAAoAAAAD+4KAAACAAAAD2EAAABBAAAAD+8KAAACAAAAD3MAAABTAAAA
+        D/AKAAACAAAAD2QAAABEAAAAD/EKAAACAAAAD2YAAABGAAAAD/IKAAACAAAAD2cAAABHAAAAD/MKAAAC
+        AAAAD2gAAABIAAAAD/QKAAACAAAAD2oAAABKAAAAD/UKAAACAAAAD2sAAABLAAAAD/YKAAACAAAAD2wA
+        AABMAAAAD/cKAAACAAAAD/n///8iAAAAD/gKAAACAAAAD6f///8hAAAAD/kKAAACAAAAD6j///8nAAAA
+        D/oKAAACAAAAD3kAAABZAAAAD/sKAAACAAAAD3gAAABYAAAAD/wKAAACAAAAD2MAAABDAAAAD/0KAAAC
+        AAAAD3YAAABWAAAAD/4KAAACAAAAD2IAAABCAAAAD/8KAAACAAAAD24AAABOAAAADwALAAACAAAAD20A
+        AABNAAAADwELAAACAAAADywAAAA/AAAADwILAAACAAAADy4AAAA6AAAADwMLAAACAAAADy0AAABfAAAA
+        DwQLAAABAAAAD1wAAAAPBQsAAAAAAAAPDwYLAAABAAAADzsAAAAPBwsAAAIAAAAPKwAAADEAAAAPCAsA
+        AAIAAAAP7P///zIAAAAPCQsAAAIAAAAPuf///zMAAAAPCgsAAAIAAAAP6P///zQAAAAPCwsAAAIAAAAP
+        +P///zUAAAAPDAsAAAIAAAAPvv///zYAAAAPDQsAAAIAAAAP/f///zcAAAAPDgsAAAIAAAAP4f///zgA
+        AAAPDwsAAAIAAAAP7f///zkAAAAPEAsAAAIAAAAP6f///zAAAAAPEQsAAAIAAAAPPQAAACUAAAAPEgsA
+        AAIAAAAPtP///7f///8PEwsAAAIAAAAPcQAAAFEAAAAPFAsAAAIAAAAPdwAAAFcAAAAPFQsAAAIAAAAP
+        ZQAAAEUAAAAPFgsAAAIAAAAPcgAAAFIAAAAPFwsAAAIAAAAPdAAAAFQAAAAPGAsAAAIAAAAPeQAAAFkA
+        AAAPGQsAAAIAAAAPdQAAAFUAAAAPGgsAAAIAAAAPaQAAAEkAAAAPGwsAAAIAAAAPbwAAAE8AAAAPHAsA
+        AAIAAAAPcAAAAFAAAAAPHQsAAAIAAAAP+v///y8AAAAPHgsAAAIAAAAPKQAAACgAAAAPHwsAAAIAAAAP
+        YQAAAEEAAAAPIAsAAAIAAAAPcwAAAFMAAAAPIQsAAAIAAAAPZAAAAEQAAAAPIgsAAAIAAAAPZgAAAEYA
+        AAAPIwsAAAIAAAAPZwAAAEcAAAAPJAsAAAIAAAAPaAAAAEgAAAAPJQsAAAIAAAAPagAAAEoAAAAPJgsA
+        AAIAAAAPawAAAEsAAAAPJwsAAAIAAAAPbAAAAEwAAAAPKAsAAAIAAAAP+f///yIAAAAPKQsAAAIAAAAP
+        p////yEAAAAPKgsAAAIAAAAPqP///ycAAAAPKwsAAAIAAAAPegAAAFoAAAAPLAsAAAIAAAAPeAAAAFgA
+        AAAPLQsAAAIAAAAPYwAAAEMAAAAPLgsAAAIAAAAPdgAAAFYAAAAPLwsAAAIAAAAPYgAAAEIAAAAPMAsA
+        AAIAAAAPbgAAAE4AAAAPMQsAAAIAAAAPbQAAAE0AAAAPMgsAAAIAAAAPLAAAAD8AAAAPMwsAAAIAAAAP
+        LgAAADoAAAAPNAsAAAIAAAAPLQAAAF8AAAAPNQsAAAEAAAAPXAAAAA82CwAAAAAAAA8PNwsAAAIAAAAP
+        fAAAALD///8POAsAAAIAAAAPMQAAACEAAAAPOQsAAAIAAAAPMgAAACIAAAAPOgsAAAIAAAAPMwAAACMA
+        AAAPOwsAAAIAAAAPNAAAACQAAAAPPAsAAAIAAAAPNQAAACUAAAAPPQsAAAIAAAAPNgAAACYAAAAPPgsA
+        AAIAAAAPNwAAAC8AAAAPPwsAAAIAAAAPOAAAACgAAAAPQAsAAAIAAAAPOQAAACkAAAAPQQsAAAIAAAAP
+        MAAAAD0AAAAPQgsAAAIAAAAPJwAAAD8AAAAPQwsAAAIAAAAPv////6H///8PRAsAAAMAAAAPcQAAAFEA
+        AABAAAAAD0ULAAACAAAAD3cAAABXAAAAD0YLAAACAAAAD2UAAABFAAAAD0cLAAACAAAAD3IAAABSAAAA
+        D0gLAAACAAAAD3QAAABUAAAAD0kLAAACAAAAD3kAAABZAAAAD0oLAAACAAAAD3UAAABVAAAAD0sLAAAC
+        AAAAD2kAAABJAAAAD0wLAAACAAAAD28AAABPAAAAD00LAAACAAAAD3AAAABQAAAAD04LAAACAAAAD7T/
+        //+o////D08LAAACAAAADysAAAAqAAAAD1ALAAACAAAAD2EAAABBAAAAD1ELAAACAAAAD3MAAABTAAAA
+        D1ILAAACAAAAD2QAAABEAAAAD1MLAAACAAAAD2YAAABGAAAAD1QLAAACAAAAD2cAAABHAAAAD1ULAAAC
+        AAAAD2gAAABIAAAAD1YLAAACAAAAD2oAAABKAAAAD1cLAAACAAAAD2sAAABLAAAAD1gLAAACAAAAD2wA
+        AABMAAAAD1kLAAACAAAAD/H////R////D1oLAAADAAAAD3sAAABbAAAAXgAAAA9bCwAAAgAAAA99AAAA
+        XQAAAA9cCwAAAgAAAA96AAAAWgAAAA9dCwAAAgAAAA94AAAAWAAAAA9eCwAAAgAAAA9jAAAAQwAAAA9f
+        CwAAAgAAAA92AAAAVgAAAA9gCwAAAgAAAA9iAAAAQgAAAA9hCwAAAgAAAA9uAAAATgAAAA9iCwAAAgAA
+        AA9tAAAATQAAAA9jCwAAAgAAAA8sAAAAOwAAAA9kCwAAAgAAAA8uAAAAOgAAAA9lCwAAAgAAAA8tAAAA
+        XwAAAA9mCwAAAgAAAA88AAAAPgAAAA9nCwAAAAAAAA8PaAsAAAIAAAAPYAAAAH4AAAAPaQsAAAIAAAAP
+        4P///8D///8PagsAAAIAAAAP6P///8j///8PawsAAAIAAAAP5v///8b///8PbAsAAAIAAAAP6////8v/
+        //8PbQsAAAIAAAAP4f///8H///8PbgsAAAIAAAAP8P///9D///8PbwsAAAIAAAAP+P///9j///8PcAsA
+        AAIAAAAP+////9v///8PcQsAAAIAAAAPpf///ygAAAAPcgsAAAIAAAAPtP///ykAAAAPcwsAAAIAAAAP
+        LQAAAF8AAAAPdAsAAAIAAAAP/v///97///8PdQsAAAIAAAAPXAAAAHwAAAAPdgsAAAIAAAAPcQAAAFEA
+        AAAPdwsAAAIAAAAPdwAAAFcAAAAPeAsAAAIAAAAPZQAAAEUAAAAPeQsAAAIAAAAPcgAAAFIAAAAPegsA
+        AAIAAAAPdAAAAFQAAAAPewsAAAIAAAAPeQAAAFkAAAAPfAsAAAIAAAAPdQAAAFUAAAAPfQsAAAIAAAAP
+        aQAAAEkAAAAPfgsAAAIAAAAPbwAAAE8AAAAPfwsAAAIAAAAPcAAAAFAAAAAPgAsAAAIAAAAPWwAAAHsA
+        AAAPgQsAAAIAAAAPXQAAAH0AAAAPggsAAAIAAAAPYQAAAEEAAAAPgwsAAAIAAAAPcwAAAFMAAAAPhAsA
+        AAIAAAAPZAAAAEQAAAAPhQsAAAIAAAAPZgAAAEYAAAAPhgsAAAIAAAAPZwAAAEcAAAAPhwsAAAIAAAAP
+        aAAAAEgAAAAPiAsAAAIAAAAPagAAAEoAAAAPiQsAAAIAAAAPawAAAEsAAAAPigsAAAIAAAAPbAAAAEwA
+        AAAPiwsAAAIAAAAPOwAAADoAAAAPjAsAAAIAAAAPJwAAACIAAAAPjQsAAAIAAAAPegAAAFoAAAAPjgsA
+        AAIAAAAPeAAAAFgAAAAPjwsAAAIAAAAPYwAAAEMAAAAPkAsAAAIAAAAPdgAAAFYAAAAPkQsAAAIAAAAP
+        YgAAAEIAAAAPkgsAAAIAAAAPbgAAAE4AAAAPkwsAAAIAAAAPbQAAAE0AAAAPlAsAAAIAAAAPLAAAADwA
+        AAAPlQsAAAIAAAAPLgAAAD4AAAAPlgsAAAIAAAAPLwAAAD8AAAAPlwsAAAAAAAAPD5gLAAAAAAAADw+Z
+        CwAAAgAAAA8iAAAA6f///w+aCwAAAgAAAA8xAAAAIQAAAA+bCwAAAgAAAA8yAAAAJwAAAA+cCwAAAwAA
+        AA8zAAAAXgAAACMAAAAPnQsAAAMAAAAPNAAAACsAAAAkAAAAD54LAAACAAAADzUAAAAlAAAAD58LAAAC
+        AAAADzYAAAAmAAAAD6ALAAADAAAADzcAAAAvAAAAewAAAA+hCwAAAwAAAA84AAAAKAAAAFsAAAAPogsA
+        AAMAAAAPOQAAACkAAABdAAAAD6MLAAADAAAADzAAAAA9AAAAfQAAAA+kCwAAAwAAAA8qAAAAPwAAAFwA
+        AAAPpQsAAAIAAAAPLQAAAF8AAAAPpgsAAAMAAAAPcQAAAFEAAABAAAAAD6cLAAACAAAAD3cAAABXAAAA
+        D6gLAAACAAAAD2UAAABFAAAAD6kLAAACAAAAD3IAAABSAAAAD6oLAAACAAAAD3QAAABUAAAAD6sLAAAC
+        AAAAD3kAAABZAAAAD6wLAAACAAAAD3UAAABVAAAAD60LAAADAAAAD/3///9JAAAA7v///w+uCwAAAgAA
+        AA9vAAAATwAAAA+vCwAAAgAAAA9wAAAAUAAAAA+wCwAAAgAAAA/w////0P///w+xCwAAAwAAAA/8////
+        3P///34AAAAPsgsAAAMAAAAPYQAAAEEAAADm////D7MLAAADAAAAD3MAAABTAAAA3////w+0CwAAAgAA
+        AA9kAAAARAAAAA+1CwAAAgAAAA9mAAAARgAAAA+2CwAAAgAAAA9nAAAARwAAAA+3CwAAAgAAAA9oAAAA
+        SAAAAA+4CwAAAgAAAA9qAAAASgAAAA+5CwAAAgAAAA9rAAAASwAAAA+6CwAAAgAAAA9sAAAATAAAAA+7
+        CwAAAgAAAA/+////3v///w+8CwAAAgAAAA9pAAAA3f///w+9CwAAAwAAAA8sAAAAOwAAAGAAAAAPvgsA
+        AAIAAAAPegAAAFoAAAAPvwsAAAIAAAAPeAAAAFgAAAAPwAsAAAIAAAAPYwAAAEMAAAAPwQsAAAIAAAAP
+        dgAAAFYAAAAPwgsAAAIAAAAPYgAAAEIAAAAPwwsAAAIAAAAPbgAAAE4AAAAPxAsAAAIAAAAPbQAAAE0A
+        AAAPxQsAAAIAAAAP9v///9b///8PxgsAAAIAAAAP5////8f///8PxwsAAAIAAAAPLgAAADoAAAAPyAsA
+        AAAAAAAPD8kLAAAAAAAADw/KCwAAAgAAAA8iAAAAXAAAAA/LCwAAAgAAAA8xAAAAIQAAAA/MCwAAAgAA
+        AA8yAAAAJwAAAA/NCwAAAgAAAA8zAAAAXgAAAA/OCwAAAgAAAA80AAAAKwAAAA/PCwAAAgAAAA81AAAA
+        JQAAAA/QCwAAAgAAAA82AAAAJgAAAA/RCwAAAgAAAA83AAAALwAAAA/SCwAAAgAAAA84AAAAKAAAAA/T
+        CwAAAgAAAA85AAAAKQAAAA/UCwAAAgAAAA8wAAAAPQAAAA/VCwAAAgAAAA8qAAAAPwAAAA/WCwAAAgAA
+        AA8tAAAAXwAAAA/XCwAAAgAAAA9xAAAAUQAAAA/YCwAAAgAAAA93AAAAVwAAAA/ZCwAAAgAAAA9lAAAA
+        RQAAAA/aCwAAAgAAAA9yAAAAUgAAAA/bCwAAAgAAAA90AAAAVAAAAA/cCwAAAgAAAA95AAAAWQAAAA/d
+        CwAAAgAAAA91AAAAVQAAAA/eCwAAAgAAAA+5////SQAAAA/fCwAAAgAAAA9vAAAATwAAAA/gCwAAAgAA
+        AA9wAAAAUAAAAA/hCwAAAgAAAA+7////q////w/iCwAAAgAAAA/8////3P///w/jCwAAAgAAAA9hAAAA
+        QQAAAA/kCwAAAgAAAA9zAAAAUwAAAA/lCwAAAgAAAA9kAAAARAAAAA/mCwAAAgAAAA9mAAAARgAAAA/n
+        CwAAAgAAAA9nAAAARwAAAA/oCwAAAgAAAA9oAAAASAAAAA/pCwAAAgAAAA9qAAAASgAAAA/qCwAAAgAA
+        AA9rAAAASwAAAA/rCwAAAgAAAA9sAAAATAAAAA/sCwAAAgAAAA+6////qv///w/tCwAAAQAAAA9pAAAA
+        D+4LAAACAAAADywAAAA7AAAAD+8LAAACAAAAD3oAAABaAAAAD/ALAAACAAAAD3gAAABYAAAAD/ELAAAC
+        AAAAD2MAAABDAAAAD/ILAAACAAAAD3YAAABWAAAAD/MLAAACAAAAD2IAAABCAAAAD/QLAAACAAAAD24A
+        AABOAAAAD/ULAAACAAAAD20AAABNAAAAD/YLAAACAAAAD/b////W////D/cLAAACAAAAD+f////H////
+        D/gLAAACAAAADy4AAAA6AAAAD/kLAAACAAAADzwAAAA+AAAAD/oLAAAAAAAADw/7CwAAAgAAAA8rAAAA
+        KgAAAA/8CwAAAgAAAA8xAAAAIQAAAA/9CwAAAgAAAA8yAAAAIgAAAA/+CwAAAwAAAA8zAAAAXgAAACMA
+        AAAP/wsAAAIAAAAPNAAAACQAAAAPAAwAAAIAAAAPNQAAACUAAAAPAQwAAAIAAAAPNgAAACYAAAAPAgwA
+        AAIAAAAPNwAAACcAAAAPAwwAAAIAAAAPOAAAACgAAAAPBAwAAAIAAAAPOQAAACkAAAAPBQwAAAIAAAAP
+        MAAAAD0AAAAPBgwAAAIAAAAPLwAAAD8AAAAPBwwAAAIAAAAPLQAAAF8AAAAPCAwAAAIAAAAPZgAAAEYA
+        AAAPCQwAAAIAAAAPZwAAAEcAAAAPCgwAAAIAAAAPu////6v///8PCwwAAAIAAAAPuf///0kAAAAPDAwA
+        AAIAAAAPbwAAAE8AAAAPDQwAAAIAAAAPZAAAAEQAAAAPDgwAAAIAAAAPcgAAAFIAAAAPDwwAAAIAAAAP
+        bgAAAE4AAAAPEAwAAAIAAAAPaAAAAEgAAAAPEQwAAAIAAAAPcAAAAFAAAAAPEgwAAAIAAAAPcQAAAFEA
+        AAAPEwwAAAIAAAAPdwAAAFcAAAAPFAwAAAIAAAAPdQAAAFUAAAAPFQwAAAEAAAAPaQAAAA8WDAAAAgAA
+        AA9lAAAARQAAAA8XDAAAAgAAAA9hAAAAQQAAAA8YDAAAAgAAAA/8////3P///w8ZDAAAAgAAAA90AAAA
+        VAAAAA8aDAAAAgAAAA9rAAAASwAAAA8bDAAAAgAAAA9tAAAATQAAAA8cDAAAAgAAAA9sAAAATAAAAA8d
+        DAAAAgAAAA95AAAAWQAAAA8eDAAAAgAAAA+6////qv///w8fDAAAAgAAAA94AAAAWAAAAA8gDAAAAgAA
+        AA9qAAAASgAAAA8hDAAAAgAAAA/2////1v///w8iDAAAAgAAAA92AAAAVgAAAA8jDAAAAgAAAA9jAAAA
+        QwAAAA8kDAAAAgAAAA/n////x////w8lDAAAAgAAAA96AAAAWgAAAA8mDAAAAgAAAA9zAAAAUwAAAA8n
+        DAAAAgAAAA9iAAAAQgAAAA8oDAAAAgAAAA8uAAAAOgAAAA8pDAAAAgAAAA8sAAAAOwAAAA8qDAAAAgAA
+        AA88AAAAPgAAAA8rDAAAAAAAAA8PLAwAAAMAAAAPYAAAAH4AAAA7AAAADy0MAAACAAAADzEAAAAhAAAA
+        Dy4MAAACAAAADzIAAABAAAAADy8MAAACAAAADzMAAAAjAAAADzAMAAACAAAADzQAAAAkAAAADzEMAAAC
+        AAAADzUAAAAlAAAADzIMAAACAAAADzYAAABeAAAADzMMAAACAAAADzcAAAAmAAAADzQMAAACAAAADzgA
+        AAAqAAAADzUMAAACAAAADzkAAAAoAAAADzYMAAACAAAADzAAAAApAAAADzcMAAACAAAADy0AAABfAAAA
+        DzgMAAACAAAADz0AAAArAAAADzkMAAADAAAAD3EAAABRAAAALwAAAA86DAAAAwAAAA93AAAAVwAAACcA
+        AAAPOwwAAAMAAAAPZQAAAEUAAAD3////DzwMAAADAAAAD3IAAABSAAAA+P///w89DAAAAwAAAA90AAAA
+        VAAAAOD///8PPgwAAAMAAAAPeQAAAFkAAADo////Dz8MAAADAAAAD3UAAABVAAAA5f///w9ADAAAAwAA
+        AA9pAAAASQAAAO////8PQQwAAAMAAAAPbwAAAE8AAADt////D0IMAAADAAAAD3AAAABQAAAA9P///w9D
+        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
+        AAB+AAAAD/EMAAACAAAADzEAAAAhAAAAD/IMAAACAAAADzIAAABAAAAAD/MMAAACAAAADzMAAAAjAAAA
+        D/QMAAACAAAADzQAAAAkAAAAD/UMAAACAAAADzUAAAAlAAAAD/YMAAACAAAADzYAAABeAAAAD/cMAAAC
+        AAAADzcAAAAmAAAAD/gMAAACAAAADzgAAAAqAAAAD/kMAAACAAAADzkAAAAoAAAAD/oMAAACAAAADzAA
+        AAApAAAAD/sMAAACAAAADy0AAABfAAAAD/wMAAACAAAADz0AAAArAAAAD/0MAAAEAAAAD3EAAABRAAAA
+        OwAAADoAAAAP/gwAAAIAAAAPdwAAAFcAAAAP/wwAAAQAAAAPZQAAAEUAAADl////xf///w8ADQAABAAA
+        AA9yAAAAUgAAAPH////R////DwENAAAEAAAAD3QAAABUAAAA9P///9T///8PAg0AAAQAAAAPeQAAAFkA
+        AAD1////1f///w8DDQAABAAAAA91AAAAVQAAAOj////I////DwQNAAAEAAAAD2kAAABJAAAA6f///8n/
+        //8PBQ0AAAQAAAAPbwAAAE8AAADv////z////w8GDQAABAAAAA9wAAAAUAAAAPD////Q////DwcNAAAC
+        AAAAD1sAAAB7AAAADwgNAAACAAAAD10AAAB9AAAADwkNAAAEAAAAD2EAAABBAAAA4f///8H///8PCg0A
+        AAIAAAAPcwAAAFMAAAAPCw0AAAQAAAAPZAAAAEQAAADk////xP///w8MDQAABAAAAA9mAAAARgAAAPb/
+        ///W////Dw0NAAAEAAAAD2cAAABHAAAA4////8P///8PDg0AAAQAAAAPaAAAAEgAAADn////x////w8P
+        DQAABAAAAA9qAAAASgAAAO7////O////DxANAAAEAAAAD2sAAABLAAAA6v///8r///8PEQ0AAAQAAAAP
+        bAAAAEwAAADr////y////w8SDQAABAAAAA87AAAAOgAAALT///+o////DxMNAAACAAAADycAAAAiAAAA
+        DxQNAAACAAAAD1wAAAB8AAAADxUNAAAEAAAAD3oAAABaAAAA5v///8b///8PFg0AAAQAAAAPeAAAAFgA
+        AAD3////1////w8XDQAABAAAAA9jAAAAQwAAAPj////Y////DxgNAAAEAAAAD3YAAABWAAAA+f///9n/
+        //8PGQ0AAAQAAAAPYgAAAEIAAADi////wv///w8aDQAABAAAAA9uAAAATgAAAO3////N////DxsNAAAE
+        AAAAD20AAABNAAAA7P///8z///8PHA0AAAIAAAAPLAAAADwAAAAPHQ0AAAIAAAAPLgAAAD4AAAAPHg0A
+        AAIAAAAPLwAAAD8AAAAPHw0AAAIAAAAPPAAAAD4AAAAPIA0AAAAAAAAPDyENAAAEAAAAD2AAAAB+AAAA
+        XwAAACUAAAAPIg0AAAQAAAAPMQAAACEAAADl////KwAAAA8jDQAABAAAAA8yAAAAQAAAAC8AAADx////
+        DyQNAAAEAAAADzMAAAAjAAAALQAAAPL///8PJQ0AAAQAAAAPNAAAACQAAADA////8////w8mDQAABAAA
+        AA81AAAAJQAAALb////0////DycNAAAEAAAADzYAAABeAAAA2P///9n///8PKA0AAAQAAAAPNwAAACYA
+        AADW////3////w8pDQAABAAAAA84AAAAKgAAAKT////1////DyoNAAAEAAAADzkAAAAoAAAAtf////b/
+        //8PKw0AAAQAAAAPMAAAACkAAACo////9////w8sDQAABAAAAA8tAAAAXwAAAKL////4////Dy0NAAAE
+        AAAADz0AAAArAAAAqv////n///8PLg0AAAQAAAAPcQAAAFEAAADm////8P///w8vDQAABAAAAA93AAAA
+        VwAAAOT///8iAAAADzANAAAEAAAAD2UAAABFAAAA0////67///8PMQ0AAAQAAAAPcgAAAFIAAAC+////
+        sf///w8yDQAABAAAAA90AAAAVAAAAND///+4////DzMNAAAEAAAAD3kAAABZAAAA0f///+3///8PNA0A
+        AAQAAAAPdQAAAFUAAADV////6v///w81DQAABAAAAA9pAAAASQAAAMP///+z////DzYNAAAEAAAAD28A
+        AABPAAAAuf///8////8PNw0AAAQAAAAPcAAAAFAAAADC////rf///w84DQAABAAAAA9bAAAAewAAALr/
+        //+w////DzkNAAAEAAAAD10AAAB9AAAAxf///ywAAAAPOg0AAAQAAAAPYQAAAEEAAAC/////xP///w87
+        DQAABAAAAA9zAAAAUwAAAMv///+m////DzwNAAAEAAAAD2QAAABEAAAAof///6////8PPQ0AAAQAAAAP
+        ZgAAAEYAAAC0////4v///w8+DQAABAAAAA9nAAAARwAAAOD///+s////Dz8NAAAEAAAAD2gAAABIAAAA
+        6f///+f///8PQA0AAAQAAAAPagAAAEoAAADo////6////w9BDQAABAAAAA9rAAAASwAAANL////J////
+        D0INAAAEAAAAD2wAAABMAAAAyv///8j///8PQw0AAAQAAAAPOwAAADoAAADH////q////w9EDQAABAAA
+        AA8nAAAAIgAAAKf///8uAAAAD0UNAAAEAAAAD1wAAAB8AAAAo////6X///8PRg0AAAQAAAAPegAAAFoA
+        AAC8////KAAAAA9HDQAABAAAAA94AAAAWAAAALv///8pAAAAD0gNAAAEAAAAD2MAAABDAAAA4f///6n/
+        //8PSQ0AAAQAAAAPdgAAAFYAAADN////zv///w9KDQAAAwAAAA9iAAAAQgAAANr///8PSw0AAAQAAAAP
+        bgAAAE4AAADX////7P///w9MDQAABAAAAA9tAAAATQAAALf///8/AAAAD00NAAAEAAAADywAAAA8AAAA
+        wf///7L///8PTg0AAAQAAAAPLgAAAD4AAADj////zP///w9PDQAABAAAAA8vAAAAPwAAAL3////G////
+        D1ANAAAAAAAADw9RDQAAAAAAAA8PUg0AAAIAAAAPQAAAAKf///8PUw0AAAIAAAAPMQAAACEAAAAPVA0A
+        AAIAAAAPMgAAACIAAAAPVQ0AAAIAAAAPMwAAACMAAAAPVg0AAAIAAAAPNAAAACQAAAAPVw0AAAIAAAAP
+        NQAAACUAAAAPWA0AAAIAAAAPNgAAACYAAAAPWQ0AAAIAAAAPNwAAAF8AAAAPWg0AAAIAAAAPOAAAACgA
+        AAAPWw0AAAIAAAAPOQAAACkAAAAPXA0AAAIAAAAPMAAAACcAAAAPXQ0AAAIAAAAPLwAAAD8AAAAPXg0A
+        AAIAAAAPsP///34AAAAPXw0AAAIAAAAPcQAAAFEAAAAPYA0AAAIAAAAPdwAAAFcAAAAPYQ0AAAIAAAAP
+        ZQAAAEUAAAAPYg0AAAIAAAAPcgAAAFIAAAAPYw0AAAIAAAAPdAAAAFQAAAAPZA0AAAIAAAAPeQAAAFkA
+        AAAPZQ0AAAIAAAAPdQAAAFUAAAAPZg0AAAIAAAAPaQAAAEkAAAAPZw0AAAIAAAAPbwAAAE8AAAAPaA0A
+        AAIAAAAPcAAAAFAAAAAPaQ0AAAIAAAAPqP///34AAAAPag0AAAIAAAAPKgAAAHwAAAAPaw0AAAIAAAAP
+        YQAAAEEAAAAPbA0AAAIAAAAPcwAAAFMAAAAPbQ0AAAIAAAAPZAAAAEQAAAAPbg0AAAIAAAAPZgAAAEYA
+        AAAPbw0AAAIAAAAPZwAAAEcAAAAPcA0AAAIAAAAPaAAAAEgAAAAPcQ0AAAIAAAAPagAAAEoAAAAPcg0A
+        AAIAAAAPawAAAEsAAAAPcw0AAAIAAAAPbAAAAEwAAAAPdA0AAAIAAAAPKwAAALH///8PdQ0AAAIAAAAP
+        JwAAAGAAAAAPdg0AAAIAAAAPPAAAAD4AAAAPdw0AAAIAAAAPegAAAFoAAAAPeA0AAAIAAAAPeAAAAFgA
+        AAAPeQ0AAAIAAAAPYwAAAEMAAAAPeg0AAAIAAAAPdgAAAFYAAAAPew0AAAIAAAAPYgAAAEIAAAAPfA0A
+        AAIAAAAPbgAAAE4AAAAPfQ0AAAIAAAAPbQAAAE0AAAAPfg0AAAIAAAAPLAAAADsAAAAPfw0AAAIAAAAP
+        LgAAADoAAAAPgA0AAAIAAAAPLQAAAD0AAAAPgQ0AAAIAAAAPWwAAAF0AAAAPgg0AAAAAAAAPCw==
+</value>
+  </data>
+  <data name="scan_table" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAHAQAAAAEBAAAABQAAAAcHCQIAAAAJAwAAAAkEAAAACQUAAAAJBgAAAA8C
+        AAAAMAAAAAcpAAIAAwAEAAUABgAHAAgACQAKAAsADAANABAAEQASABMAFAAVABYAFwAYABkAGgAbAB4A
+        HwAgACEAIgAjACQAJQAmACcAKAArACwALQAuAC8AMAAxADIAMwA0ADUAVgAPAwAAADAAAAAHKQACAAMA
+        BAAFAAYABwAIAAkACgALABoAGwAoADMANAAZABUAIQAiAC4AEwAmADUADQAeABgAEgAWABcAIAAjABQA
+        MQAfAAwAKwAnABAAJAAlAC0AMAAyABEALwAsAFYADwQAAAAyAAAABykAAgADAAQABQAGAAcACAAJAAoA
+        CwAMAA0AEAARABIAEwAUABUAFgAXABgAGQAaABsAHgAfACAAIQAiACMAJAAlACYAJwAoACsAXgAsAC0A
+        LgAvADAAMQAyADMANAA1AFYANQAPBQAAADAAAAAHAgADAAQABQAGAAcACAAJAAoACwAMAA0AKQAQABEA
+        EgATABQAFQAWABcAGAAZABoAGwAeAB8AIAAhACIAIwAkACUAJgAnACgAKwAsAC0ALgAvADAAMQAyADMA
+        NAA1AFYADwYAAAAwAAAABwIAAwAEAAUABgAHAAgACQAKAAsADAANABoAGwAnACgAKQAzADQANQArAB4A
+        MAAuACAAEgAhACIAIwAXACQAJQAmADIAMQAYABkAEAATAB8AFAAWAC8AEQAtABUALABWAAs=
+</value>
+  </data>
+  <data name="vkey_table" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        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
+        Cw==
+</value>
+  </data>
+</root>
\ No newline at end of file
index ec538abc29f3441d5927656608e29ecdb24ed11c..b5e2e809ae4347f07178b44ada2c6dff97bc0d2e 100644 (file)
@@ -182,7 +182,7 @@ namespace Microsoft.Build.BuildEngine {
                                e = new ConditionFactorExpression (token);
                        } else if (token.Type == TokenType.Item || token.Type == TokenType.Property
                                        || token.Type == TokenType.Metadata) {
-                               e = ParseReferenceExpression (token.Value);
+                               e = ParseReferenceExpression (token.Value [0]);
                        } else if (token.Type == TokenType.Not) {
                                e = ParseNotExpression ();
                        } else
@@ -224,21 +224,33 @@ namespace Microsoft.Build.BuildEngine {
                }
 
                //@prefix: @ or $
-               ConditionExpression ParseReferenceExpression (string prefix)
+               ConditionExpression ParseReferenceExpression (char prefix)
                {
-                       StringBuilder sb = new StringBuilder ();
-
-                       string ref_type = prefix [0] == '$' ? "a property" : "an item list";
                        int token_pos = tokenizer.Token.Position;
+                       string ref_type = prefix == '$' ? "a property" : "an item list";
                        IsAtToken (TokenType.LeftParen, String.Format (
                                                "Expected {0} at position {1} in condition \"{2}\". Missing opening parantheses after the '{3}'.",
                                                ref_type, token_pos, conditionStr, prefix));
-                       tokenizer.GetNextToken ();
 
+
+                       if (prefix == '$') {
+                               //
+                               // Tjhe scan should consider quoted parenthesis but it breaks on .net as well
+                               // we are bug compatible
+                               //
+                               tokenizer.ScanForClosingParens ();
+                       } else {
+                               tokenizer.GetNextToken ();
+                       }
+
+                       if (tokenizer.IsEOF ())
+                               throw new ExpressionParseException ("Missing closing parenthesis in condition " + conditionStr);
+
+                       StringBuilder sb = new StringBuilder ();
                        sb.AppendFormat ("{0}({1}", prefix, tokenizer.Token.Value);
 
                        tokenizer.GetNextToken ();
-                       if (prefix == "@" && tokenizer.Token.Type == TokenType.Transform) {
+                       if (prefix == '@' && tokenizer.Token.Type == TokenType.Transform) {
                                tokenizer.GetNextToken ();
                                sb.AppendFormat ("->'{0}'", tokenizer.Token.Value);
 
@@ -250,9 +262,7 @@ namespace Microsoft.Build.BuildEngine {
                                }
                        }
 
-                       IsAtToken (TokenType.RightParen, String.Format (
-                                               "Expected {0} at position {1} in condition \"{2}\". Missing closing parantheses'.",
-                                               ref_type, token_pos, conditionStr, prefix));
+                       IsAtToken (TokenType.RightParen, "Missing closing parenthesis in condition " + conditionStr);
                        tokenizer.GetNextToken ();
 
                        sb.Append (")");
index 29a4aba628af1765cad1851993be5fe6e4ec9d73..d9ee74475d6b79c919c3f660c01c180806a96bdd 100644 (file)
@@ -257,6 +257,29 @@ namespace Microsoft.Build.BuildEngine {
                        } else
                                throw new ExpressionParseException (String.Format ("Invalid token: {0}", ch));
                }
+
+               public void ScanForClosingParens (int parensCounter = 1)
+               {
+                       tokenPosition = position;
+                       int start = position;
+                       int ch;
+                       while ((ch = ReadChar ()) >= 0) {
+                               switch (ch) {
+                               case ')':
+                                       if (--parensCounter == 0) {
+                                               --position;
+                                               token = new Token (inputString.Substring (start, position - start), TokenType.String, tokenPosition);
+                                               return;
+                                       }
+                                       break;
+                               case '(':
+                                       ++parensCounter;
+                                       break;
+                               }
+                       }
+
+                       token = new Token (null, TokenType.EOF, tokenPosition);
+               }
                
                public int TokenPosition {
                        get { return tokenPosition; }
index 1e0fda2fdd8b9b75617132da1f61dc8d8a09671b..ccfc0fa3a0ea8a46c1a5018af0732e84820892b4 100644 (file)
@@ -55,6 +55,14 @@ namespace Microsoft.Build.BuildEngine {
 
        internal class Expression {
        
+               enum TokenKind
+               {
+                       OpenParens,
+                       CloseParens,
+                       Dot,
+                       End
+               }
+
                ExpressionCollection expressionCollection;
 
                static Regex item_regex;
@@ -232,6 +240,7 @@ namespace Microsoft.Build.BuildEngine {
                                pos += 2;
                                int start = pos;
                                int end = 0;
+                               bool requires_closing_parens = true;
                                        
                                var ch = text [pos];
                                if ((ch == 'r' || ch == 'R') && text.Substring (pos + 1).StartsWith ("egistry:", StringComparison.OrdinalIgnoreCase)) {
@@ -273,6 +282,7 @@ namespace Microsoft.Build.BuildEngine {
                                                                        // Simple property reference $(Foo)
                                                                        //
                                                                        phase.Add (new PropertyReference (name));
+                                                                       requires_closing_parens = false;
                                                                } else {
                                                                        end = 0;
                                                                }
@@ -287,6 +297,14 @@ namespace Microsoft.Build.BuildEngine {
 
                                                pos = end;
                                        }
+
+                                       if (requires_closing_parens) {
+                                               end = text.IndexOf (')', pos);
+                                               if (end < 0)
+                                                       end = 0;
+                                               else
+                                                       pos = end + 1;
+                                       }
                                }
 
                                end = text.IndexOf ("$(", pos, StringComparison.Ordinal);
@@ -493,53 +511,71 @@ namespace Microsoft.Build.BuildEngine {
 
                static MemberInvocationReference ParseInvocation (string text, ref int p, Type type, IReference instance)
                {
-                       var open_parens = text.IndexOf ('(', p);
-                       string name;
-                       int end;
-                       List<string> args;
+                       TokenKind token;
+                       MemberInvocationReference mir = null;
+
+                       while (true) {
+                               int prev = p;
+                               token = ScanName (text, ref p);
+                               var name = text.Substring (prev, p - prev).TrimEnd ();
+
+                               switch (token) {
+                               case TokenKind.Dot:
+                               case TokenKind.OpenParens:
+                                       break;
+                               case TokenKind.CloseParens:
+                                       return new MemberInvocationReference (type, name) {
+                                               Instance = instance
+                                       };
+
+                               case TokenKind.End:
+                                       if (mir == null || name.Length != 0)
+                                               throw new InvalidProjectFileException (string.Format ("Invalid static method invocation syntax '{0}'", text.Substring (p)));
+
+                                       return mir;
+                               default:
+                                       throw new NotImplementedException ();
+                               }
 
-                       //
-                       // Is it method or property
-                       //
-                       if (open_parens > 0) {
-                               name = text.Substring (p, open_parens - p);
-
-                               //
-                               // It can be instance method on static property
-                               //
-                               if (name.IndexOf ('.') > 0) {
-                                       var names = name.Split ('.');
-                                       int i;
-                                       for (i = 0; i < names.Length - 1; ++i) {
-                                               instance = new MemberInvocationReference (type, names [i]) {
-                                                       Instance = instance
-                                               };
-                                       }
+                               instance = mir = new MemberInvocationReference (type, name) {
+                                       Instance = instance
+                               };
+
+                               if (type != null) {
+                                       if (!IsMethodAllowed (type, name))
+                                               throw new InvalidProjectFileException (string.Format ("The function '{0}' on type '{1}' has not been enabled for execution", name, type.FullName));
 
                                        type = null;
-                                       name = names [i];
                                }
-                               ++open_parens;
-                               args = ParseArguments (text, ref open_parens);
-                               end = text.IndexOf (')', open_parens);
-                       } else {
-                               end = text.IndexOf (')', p);
-                               if (end < 0)
-                                       throw new InvalidProjectFileException (string.Format ("Invalid static method invocation syntax '{0}'", text.Substring (p)));
 
-                               name = text.Substring (p, end - p);
-                               args = null;
+                               if (token == TokenKind.OpenParens) {
+                                       ++p;
+                                       mir.Arguments = ParseArguments (text, ref p);
+                               }
+
+                               if (p < text.Length && text [p] == '.') {
+                                       ++p;
+                                       continue;
+                               }
+
+                               return mir;
                        }
+               }
 
-                       name = name.TrimEnd ();
-                       if (!IsMethodAllowed (type, name))
-                               throw new InvalidProjectFileException (string.Format ("The function '{0}' on type '{1}' has not been enabled for execution", name, type.FullName));
+               static TokenKind ScanName (string text, ref int p)
+               {
+                       for (; p < text.Length; ++p) {
+                               switch (text [p]) {
+                               case '(':
+                                       return TokenKind.OpenParens;
+                               case '.':
+                                       return TokenKind.Dot;
+                               case ')':
+                                       return TokenKind.CloseParens;
+                               }
+                       }
 
-                       p = end + 1;
-                       return new MemberInvocationReference (type, name) {
-                               Arguments = args,
-                               Instance = instance
-                       };
+                       return TokenKind.End;
                }
 
                ArrayList SplitMetadata (string text)
index ada57788f2a2e18ccc41690861e67912df33a63a..6430992fba9f81fc08bedd6bf33e0a6c6e7a00ed 100644 (file)
@@ -63,10 +63,16 @@ namespace Microsoft.Build.BuildEngine
                {
                        var flags = BindingFlags.IgnoreCase | BindingFlags.Public;
                        object target;
+                       string member_name = name;
 
                        if (Instance == null) {
                                target = null;
-                               flags |= BindingFlags.Static;
+                               if (string.Equals (member_name, "new", StringComparison.OrdinalIgnoreCase)) {
+                                       member_name = ConstructorInfo.ConstructorName;
+                                       flags |= BindingFlags.CreateInstance | BindingFlags.Instance;
+                               } else {
+                                       flags |= BindingFlags.Static;
+                               }
                        } else {
                                var mir = Instance as MemberInvocationReference;
                                if (mir != null) {
@@ -91,14 +97,14 @@ namespace Microsoft.Build.BuildEngine
                        } else {
                                flags |= BindingFlags.InvokeMethod;
                                ExpandArguments (project, options);
-                               args = PrepareMethodArguments (flags);
+                               args = PrepareMethodArguments (member_name, flags);
                                if (args == null)
                                        throw new InvalidProjectFileException (string.Format ("Method '{0}({1})' arguments cannot be evaluated'", name, string.Join (", ", Arguments.ToArray ())));
                        }
 
                        object value;
                        try {
-                               value = type.InvokeMember (name, flags, null, target, args, CultureInfo.InvariantCulture);
+                               value = type.InvokeMember (member_name, flags, null, target, args, CultureInfo.InvariantCulture);
                        } catch (MissingFieldException) {
                                //
                                // It can be field/constant instead of a property
@@ -106,7 +112,7 @@ namespace Microsoft.Build.BuildEngine
                                if (args == null && Instance == null) {
                                        flags &= ~BindingFlags.GetProperty;
                                        flags |= BindingFlags.GetField;
-                                       value = type.InvokeMember (name, flags, null, null, null, CultureInfo.InvariantCulture);
+                                       value = type.InvokeMember (member_name, flags, null, null, null, CultureInfo.InvariantCulture);
                                } else {
                                        throw;
                                }
@@ -132,9 +138,9 @@ namespace Microsoft.Build.BuildEngine
                        }
                }
 
-               object[] PrepareMethodArguments (BindingFlags flags)
+               object[] PrepareMethodArguments (string name, BindingFlags flags)
                {
-                       var candidates = type.GetMember (name, MemberTypes.Method, flags);
+                       var candidates = type.GetMember (name, MemberTypes.Method | MemberTypes.Constructor, flags);
                        object[] args = null;
                        ParameterInfo[] best = null;
                        foreach (MethodBase candidate in candidates) {
index 708d5b1c55bc96d336de414a2f74e3acd38b8436..df6603cfa8569c53f1ea348724911660b08ee8d4 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
       <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
+      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj">\r
       <Project>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</Project>\r
-      <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
+      <Name>Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 51c3da6cfbf3ff0f779d3b5d4facac81819f1574..c3c8dacabc5c4d3e19f5c2142195cffff4297174 100644 (file)
@@ -357,6 +357,24 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                        Assert.IsNull (proj.EvaluatedProperties ["A"], "A1");
                }
 
+               [Test]
+               public void TestCondition_References ()
+               {
+                       Engine engine = new Engine (Consts.BinPath);
+                       Project proj = engine.CreateNewProject ();
+
+                       string documentString = @"
+                               <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <PropertyGroup>
+                                               <A Condition=""$([System.String]::new('test').StartsWith(`te`))"">valid</A>
+                                       </PropertyGroup>
+                               </Project>
+                       ";
+
+                       proj.LoadXml (documentString);
+
+                       Assert.AreEqual ("valid", proj.GetEvaluatedProperty ("A"), "#1");
+               }
 
                [Test]
                public void TestHasTrailingSlash1 ()
index fba19683c18aeb799a09d5f4eaa23888737574e8..795a71230663dc1bc363989138e1b4d6ec189947 100644 (file)
@@ -160,6 +160,37 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                        Assert.AreEqual (DateTime.Now.ToString ("yyyy.MM.dd"), proj.GetEvaluatedProperty ("Prop1"), "#1");
                }
 
+               [Test]
+               public void InstanceMemberOnStaticProperty ()
+               {
+                       string documentString = @"
+                                       <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                               <PropertyGroup>
+                                                       <Prop1>$([System.DateTime]::Now.Year)</Prop1>
+                                               </PropertyGroup>
+                                       </Project>
+                               ";
+
+                       proj.LoadXml (documentString);
+                       Assert.AreEqual (DateTime.Now.Year.ToString (), proj.GetEvaluatedProperty ("Prop1"), "#1");
+               }
+
+               [Test]
+               public void InstanceMembersOnStaticMethod ()
+               {
+                       string documentString = @"
+                                       <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                               <PropertyGroup>
+                                                       <Prop1>$([System.String]::Concat('a', 'bb', 'c').Length.GetHashCode ())</Prop1>
+
+                                               </PropertyGroup>
+                                       </Project>
+                               ";
+
+                       proj.LoadXml (documentString);
+                       Assert.AreEqual (4.GetHashCode ().ToString (), proj.GetEvaluatedProperty ("Prop1"), "#1");
+               }
+
                [Test]
                public void MSBuildPropertyFunctions ()
                {
@@ -175,6 +206,23 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
 
                        proj.LoadXml (documentString);
                        Assert.AreEqual ("6.6", proj.GetEvaluatedProperty ("Prop1"), "#1");
-               }               
+               }
+
+               [Test]
+               public void Constructor ()
+               {
+                       string documentString = @"
+                                       <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                               <PropertyGroup>
+                                                       <NumberOne>0.6</NumberOne>
+                                                       <NumberTwo>6</NumberTwo>
+                                                       <Prop1>$([System.String]::new('value').EndsWith ('ue'))</Prop1>
+                                               </PropertyGroup>
+                                       </Project>
+                               ";
+
+                       proj.LoadXml (documentString);
+                       Assert.AreEqual ("True", proj.GetEvaluatedProperty ("Prop1"), "#1");
+               }
        }
 }
index e11230333de0b57a9eaec3b1b61aa008388f44ed..64b5a4134b70d3d34011aadd4a6af19e74900a7d 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 134fdb51ff93a47a3ceca48df45a7adfb48e1241..a811de97c38850fab72db3b2ac1bad0d5a68fa8a 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
       <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
+      <Name>System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj">\r
       <Project>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</Project>\r
-      <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
+      <Name>Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
       <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
+      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj">\r
       <Project>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</Project>\r
-      <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
+      <Name>Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj">\r
       <Project>{73FB1B7E-09F9-4E7F-A63A-C407A93BCA59}</Project>\r
-      <Name>Mono.XBuild.Tasks\Mono.XBuild.Tasks-net_4_5</Name>\r
+      <Name>Mono.XBuild.Tasks-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1fc961b72dc1f56a4865b6a55bb1c583ef706087..2833e27fda1227ab3a49ddbc0f21c82908c3410e 100644 (file)
@@ -57,9 +57,15 @@ namespace Microsoft.Build.Tasks {
                                else
                                        commandLine.AppendSwitch ("/delaysign-");
                        commandLine.AppendSwitchIfNotNull ("/description:", Description);
-                       if (EmbedResources != null)
-                               foreach (ITaskItem item in EmbedResources)
-                                       commandLine.AppendSwitchIfNotNull ("/embed:", item.ItemSpec);
+                       if (EmbedResources != null) {
+                               foreach (ITaskItem item in EmbedResources) {
+                                       string logical_name = item.GetMetadata ("LogicalName");
+                                       if (!string.IsNullOrEmpty (logical_name))
+                                               commandLine.AppendSwitchIfNotNull ("/embed:", string.Format ("{0},{1}", item.ItemSpec, logical_name));
+                                       else
+                                               commandLine.AppendSwitchIfNotNull ("/embed:", item.ItemSpec);
+                               }
+                       }
                        commandLine.AppendSwitchIfNotNull ("/evidence:", EvidenceFile);
                        commandLine.AppendSwitchIfNotNull ("/fileversion:", FileVersion);
                        commandLine.AppendSwitchIfNotNull ("/flags:", Flags);
index 7b92594d0b894ec9851372f3899ce0a710fc00e3..56f9ea36813e00b7d3b6b822eaa39372f026b613 100644 (file)
@@ -27,6 +27,7 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using Microsoft.Build.BuildEngine;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Tasks;
@@ -287,6 +288,20 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        Assert.AreEqual ("/embed:a /embed:b", clbe.ToString (), "A1");
                }
 
+               [Test]
+               public void TestEmbedResourcesWithLogicalName ()
+               {
+                       ALExtended ale = new ALExtended ();
+                       CommandLineBuilderExtension clbe = new CommandLineBuilderExtension ();
+                       var dict = new Dictionary<string, string> ();
+                       dict ["LogicalName"] = "value";
+
+                       ale.EmbedResources = new ITaskItem [2] { new TaskItem ("a", dict), new TaskItem ("b", dict) };
+                       ale.ARFC (clbe);
+
+                       Assert.AreEqual ("/embed:a,value /embed:b,value", clbe.ToString (), "A1");
+               }
+
                [Test]
                public void TestEvidenceFile ()
                {
index b4c72efa977eb388f111593db3c3fc8a9e0d52f6..f68c6db23ea1b6e0e298fd5610d8da793a23ca3f 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
       <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
+      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 7717a1f9ee0d608fe62350c9225413d29f5f93ef..f3aa310c09b00323c8952f631e32ecd9f0bd9de7 100644 (file)
@@ -190,9 +190,9 @@ namespace Microsoft.Build.Utilities
                                                              string targetFrameworkProfile)
                {
                        var path = Path.Combine (xbuildFxDir, targetFrameworkIdentifier);
-                       if (targetFrameworkVersion != null) {
+                       if (!string.IsNullOrEmpty (targetFrameworkVersion)) {
                                path = Path.Combine (path, targetFrameworkVersion);
-                               if (targetFrameworkProfile != null)
+                               if (!string.IsNullOrEmpty (targetFrameworkProfile))
                                        path = Path.Combine (path, "Profile", targetFrameworkProfile);
                        }
                        if (!Directory.Exists (path))
@@ -200,7 +200,6 @@ namespace Microsoft.Build.Utilities
                        var flist = Path.Combine (path, "RedistList", "FrameworkList.xml");
                        if (!File.Exists (flist))
                                return null;
-                       
                        var xml = XmlReader.Create (flist);
                        xml.MoveToContent ();
                        var targetFxDir = xml.GetAttribute ("TargetFrameworkDirectory");
index b1a3758e98012e9862b68bcf0d790ab2040661d5..4e2248a2d48fcba9e145f7ac13231938b0d50b7e 100644 (file)
@@ -2,4 +2,5 @@ Microsoft.Build.Utilities/CommandLineBuilderTest.cs
 Microsoft.Build.Utilities/LoggerTest.cs
 Microsoft.Build.Utilities/TaskItemTest.cs
 Microsoft.Build.Utilities/TaskLoggingHelperTest.cs
+Microsoft.Build.Utilities/ToolLocationHelperTest.cs
 Microsoft.Build.Utilities/ToolTaskTest.cs
diff --git a/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs b/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolLocationHelperTest.cs
new file mode 100644 (file)
index 0000000..fbb567d
--- /dev/null
@@ -0,0 +1,21 @@
+#if NET_4_0
+using System;
+using NUnit.Framework;
+using Microsoft.Build.Utilities;
+
+namespace MonoTests.Microsoft.Build.Utilities
+{
+       [TestFixture]
+       public class ToolLocationHelperTest
+       {
+               [Test]
+               [Category ("NotWorking")] // this test needs extra xbuild testing settings, as the target framework path is different.
+               public void GetPathToStandardLibraries ()
+               {
+                       Assert.IsTrue (!string.IsNullOrEmpty (ToolLocationHelper.GetPathToStandardLibraries (".NETFramework", "v4.0", null)), "std path");
+                       Assert.IsTrue (!string.IsNullOrEmpty (ToolLocationHelper.GetPathToStandardLibraries (".NETFramework", "v4.0", string.Empty)), "empty Profile path");
+               }
+       }
+}
+
+#endif
index bd043e993e328fc008818e9d3ca2ed94046f49b3..b35509f52474b274a9d00c566849dac6080f40f3 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj">\r
       <Project>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</Project>\r
-      <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
+      <Name>Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
       <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
+      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index d7d5d77249b84d51a3addaae52efc374236b95fd..c9bcf5cdda457d2088c965ed40352687b90bd87d 100644 (file)
@@ -533,6 +533,8 @@ namespace Microsoft.Build.Construction
                                 var item = CreateItemGroupElement ();
                                 AppendChild (item);
                                 return item;
+                       case "ImportGroup":
+                                return AddImportGroup ();
                         case "Import":
                                 return AddImport (null);
                         case "Target":
index 4c7766573345d4e87e62c1ea0c32f4a3a88440d4..4170fa00253e29343e428b1e8bcd9534e5b8ca7c 100644 (file)
@@ -494,6 +494,11 @@ namespace Microsoft.Build.Evaluation
                                });
                        yield return create ("MSBuildToolsPath", () => toolset.ToolsPath);
                        yield return create ("MSBuildToolsVersion", () => toolset.ToolsVersion);
+
+                       // This is an implementation specific special property for this Microsoft.Build.dll to differentiate
+                       // the build from Microsoft.Build.Engine.dll. It is significantly used in some *.targets file we share
+                       // between old and new build engine.
+                       yield return create ("MonoUseMicrosoftBuildDll", () => "True");
                }
                
                // These are required for reserved property, represents dynamically changing property values.
index cb6badde216a5e527227485786bdaf11c1d7c2b8..00d9802134c05a47e92b9b9ebe35938ed2918bdc 100644 (file)
@@ -164,7 +164,7 @@ namespace Microsoft.Build.Execution
                                // FIXME: this is kind of workaround for unavoidable issue that PLATFORM=* is actually given
                                // on some platforms and that prevents setting default "PLATFORM=AnyCPU" property.
                                if (!string.Equals ("PLATFORM", (string) p.Key, StringComparison.OrdinalIgnoreCase))
-                                       this.properties [(string) p.Key] = new ProjectPropertyInstance ((string) p.Key, false, (string) p.Value);
+                                       this.properties [(string) p.Key] = new ProjectPropertyInstance ((string) p.Key, true, (string) p.Value);
                        foreach (var p in global_properties)
                                this.properties [p.Key] = new ProjectPropertyInstance (p.Key, false, p.Value);
                        var tools = projects.GetToolset (tools_version) ?? projects.GetToolset (projects.DefaultToolsVersion);
@@ -256,7 +256,7 @@ namespace Microsoft.Build.Execution
 
                void EvaluateItems (ProjectRootElement xml, IEnumerable<ProjectElement> elements)
                {
-                       foreach (var child in elements) {
+                       foreach (var child in elements.Reverse ()) {
                                var ige = child as ProjectItemGroupElement;
                                if (ige != null) {
                                        foreach (var p in ige.Items) {
@@ -435,6 +435,7 @@ namespace Microsoft.Build.Execution
                        var parameters = new BuildParameters (projects) {
                                ForwardingLoggers = remoteLoggers,
                                Loggers = loggers,
+                               DefaultToolsVersion = projects.DefaultToolsVersion,
                        };
                        var requestData = new BuildRequestData (this, targets ?? DefaultTargets.ToArray ());
                        var result = manager.Build (parameters, requestData);
index 4540fa0f31245f2bc87a32d079f58153c59bd94c..4dc8b32c94dd1859634ea69cfadc238bdc8300cb 100644 (file)
@@ -37,6 +37,7 @@ using Microsoft.Build.Exceptions;
 using System.Globalization;
 using Microsoft.Build.Construction;
 using Microsoft.Build.Internal.Expressions;
+using System.Xml;
 
 namespace Microsoft.Build.Internal
 {
@@ -121,17 +122,23 @@ namespace Microsoft.Build.Internal
                        
                        try {
                                
-                               var initialPropertiesFormatted = "Initial Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ());
-                               LogMessageEvent (new BuildMessageEventArgs (initialPropertiesFormatted, null, null, MessageImportance.Low));
+                               var initialGlobalPropertiesFormatted = "Initial Global Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Where (p => p.IsImmutable).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ());
+                               LogMessageEvent (new BuildMessageEventArgs (initialGlobalPropertiesFormatted, null, null, MessageImportance.Low));
+                               var initialProjectPropertiesFormatted = "Initial Project Properties:\n" + string.Join (Environment.NewLine, project.Properties.OrderBy (p => p.Name).Where (p => !p.IsImmutable).Select (p => string.Format ("{0} = {1}", p.Name, p.EvaluatedValue)).ToArray ());
+                               LogMessageEvent (new BuildMessageEventArgs (initialProjectPropertiesFormatted, null, null, MessageImportance.Low));
                                var initialItemsFormatted = "Initial Items:\n" + string.Join (Environment.NewLine, project.Items.OrderBy (i => i.ItemType).Select (i => string.Format ("{0} : {1}", i.ItemType, i.EvaluatedInclude)).ToArray ());
                                LogMessageEvent (new BuildMessageEventArgs (initialItemsFormatted, null, null, MessageImportance.Low));
                                
                                // null targets -> success. empty targets -> success(!)
+                               foreach (var targetName in (request.ProjectInstance.InitialTargets).Where (t => t != null))
+                                       BuildTargetByName (targetName, args);
                                if (request.TargetNames == null)
-                                       args.Result.OverallResult = BuildResultCode.Success;
+                                       args.Result.OverallResult = args.CheckCancel () ? BuildResultCode.Failure : args.Result.ResultsByTarget.Any (p => p.Value.ResultCode == TargetResultCode.Failure) ? BuildResultCode.Failure : BuildResultCode.Success;
                                else {
-                                       foreach (var targetName in (args.TargetNames ?? request.TargetNames).Where (t => t != null))
-                                               BuildTargetByName (targetName, args);
+                                       foreach (var targetName in (args.TargetNames ?? request.TargetNames).Where (t => t != null)) {
+                                               if (!BuildTargetByName (targetName, args))
+                                                       break;
+                                       }
                        
                                        // FIXME: check .NET behavior, whether cancellation always results in failure.
                                        args.Result.OverallResult = args.CheckCancel () ? BuildResultCode.Failure : args.Result.ResultsByTarget.Any (p => p.Value.ResultCode == TargetResultCode.Failure) ? BuildResultCode.Failure : BuildResultCode.Success;
@@ -253,6 +260,7 @@ namespace Microsoft.Build.Internal
                                                        var value = args.Project.ExpandString (p.Value);
                                                        project.SetProperty (p.Name, value);
                                                }
+                                               continue;
                                        }
 
                                        var ii = child as ProjectItemGroupTaskInstance;
@@ -264,6 +272,7 @@ namespace Microsoft.Build.Internal
                                                                continue;
                                                        project.AddItem (item.ItemType, project.ExpandString (item.Include));
                                                }
+                                               continue;
                                        }
                                        
                                        var task = child as ProjectTaskInstance;
@@ -275,7 +284,14 @@ namespace Microsoft.Build.Internal
                                                }
                                                if (!RunBuildTask (target, task, targetResult, args))
                                                        return false;
+                                               continue;
                                        }
+
+                                       var onError = child as ProjectOnErrorInstance;
+                                       if (onError != null)
+                                               continue; // evaluated under catch clause.
+
+                                       throw new NotSupportedException (string.Format ("Unexpected Target element children \"{0}\"", child.GetType ()));
                                }
                        } catch (Exception ex) {
                                // fallback task specified by OnError element
@@ -452,7 +468,7 @@ namespace Microsoft.Build.Internal
                        }
                        public void SetMetadataValueLiteral (string metadataName, string metadataValue)
                        {
-                               metadata [metadataName] = ProjectCollection.Unescape (metadataValue);
+                               metadata [metadataName] = WindowsCompatibilityExtensions.NormalizeFilePath (ProjectCollection.Unescape (metadataValue));
                        }
                        public IDictionary CloneCustomMetadataEscaped ()
                        {
@@ -490,7 +506,7 @@ namespace Microsoft.Build.Internal
                        }
                        public void SetMetadata (string metadataName, string metadataValue)
                        {
-                               metadata [metadataName] = metadataValue;
+                               metadata [metadataName] = WindowsCompatibilityExtensions.NormalizeFilePath (metadataValue);
                        }
                        public string ItemSpec { get; set; }
                        public int MetadataCount {
@@ -574,13 +590,16 @@ namespace Microsoft.Build.Internal
                // To NOT reuse this IBuildEngine instance for different build, we create another BuildManager and BuildSubmisson and then run it.
                public bool BuildProjectFile (string projectFileName, string[] targetNames, IDictionary globalProperties, IDictionary targetOutputs, string toolsVersion)
                {
+                       toolsVersion = string.IsNullOrEmpty (toolsVersion) ? project.ToolsVersion : toolsVersion;
                        var globalPropertiesThatMakeSense = new Dictionary<string,string> ();
                        foreach (DictionaryEntry p in globalProperties)
                                globalPropertiesThatMakeSense [(string) p.Key] = (string) p.Value;
-                       var result = new BuildManager ().Build (this.submission.BuildManager.OngoingBuildParameters.Clone (), new BuildRequestData (projectFileName, globalPropertiesThatMakeSense, toolsVersion, targetNames, null));
-                       foreach (var p in result.ResultsByTarget)
-                               targetOutputs [p.Key] = p.Value.Items;
-                       return result.OverallResult == BuildResultCode.Success;
+                       var projectToBuild = new ProjectInstance (ProjectRootElement.Create (XmlReader.Create (projectFileName)), globalPropertiesThatMakeSense, toolsVersion, Projects);
+                       IDictionary<string,TargetResult> outs;
+                       var ret = projectToBuild.Build (targetNames ?? new string [] {"Build"}, Projects.Loggers, out outs);
+                       foreach (var p in outs)
+                               targetOutputs [p.Key] = p.Value.Items ?? new ITaskItem [0];
+                       return ret;
                }
 
                public bool BuildProjectFilesInParallel (string[] projectFileNames, string[] targetNames, IDictionary[] globalProperties, IDictionary[] targetOutputsPerProject, string[] toolsVersion, bool useResultsCache, bool unloadProjectsOnCompletion)
index 587db74962197a4ec4e43b7a99f8e7e0df9e3241..6cd0b1670e2b26e1605d448fbfe7ead97fbf6f27 100644 (file)
@@ -212,6 +212,16 @@ namespace Microsoft.Build.Internal.Expressions
                        get { return string.Format ("%([{0}].[{1}])", ItemType, Metadata); }
                }
        }
+
+       partial class QuotedExpression : Expression
+       {
+               public char QuoteChar { get; set; }
+               public ExpressionList Contents { get; set; }
+
+               public override string ExpressionString {
+                       get { return QuoteChar + string.Concat (Contents.Select (e => e.ExpressionString)).Replace (QuoteChar.ToString (), "\\" + QuoteChar) + QuoteChar; }
+               }
+       }
        
        partial class StringLiteral : Expression
        {
index 696447c88422330b3940241aee66b08dda60910c..7fbd1cf5542ac6b9cc64bbce8c75feec9168041b 100644 (file)
@@ -346,12 +346,12 @@ namespace Microsoft.Build.Internal.Expressions
                                                var args = Access.Arguments.Select (e => e.EvaluateAsObject (context)).ToArray ();
                                                var method = FindMethod (type, Access.Name.Name, args);
                                                if (method == null)
-                                                       throw new InvalidProjectFileException (Location, string.Format ("access to undefined static method '{0}' of '{1}' at {2}", Access.Name.Name, Access.Target.EvaluateAsString (context), Location));
+                                                       throw new InvalidProjectFileException (Location, string.Format ("access to undefined static method '{0}' of '{1}' at {2}", Access.Name.Name, type, Location));
                                                return method.Invoke (null, AdjustArgsForCall (method, args));
                                        } else {
                                                var prop = type.GetProperty (Access.Name.Name);
                                                if (prop == null)
-                                                       throw new InvalidProjectFileException (Location, string.Format ("access to undefined static property '{0}' of '{1}' at {2}", Access.Name.Name, Access.Target.EvaluateAsString (context), Location));
+                                                       throw new InvalidProjectFileException (Location, string.Format ("access to undefined static property '{0}' of '{1}' at {2}", Access.Name.Name, type, Location));
                                                return prop.GetValue (null, null);
                                        }
                                }
@@ -491,6 +491,30 @@ namespace Microsoft.Build.Internal.Expressions
                        return EvaluateAsString (context);
                }
        }
+
+       partial class QuotedExpression : Expression
+       {
+               public override string EvaluateAsString (EvaluationContext context)
+               {
+                       return QuoteChar + EvaluateAsStringWithoutQuote (context) + QuoteChar;
+               }
+
+               public string EvaluateAsStringWithoutQuote (EvaluationContext context)
+               {
+                       return string.Concat (Contents.Select (e => e.EvaluateAsString (context)));
+               }
+
+               public override bool EvaluateAsBoolean (EvaluationContext context)
+               {
+                       var ret = EvaluateAsStringWithoutQuote (context);
+                       return EvaluateStringAsBoolean (context, ret);
+               }
+
+               public override object EvaluateAsObject (EvaluationContext context)
+               {
+                       return EvaluateAsStringWithoutQuote (context);
+               }
+       }
        
        partial class FunctionCallExpression : Expression
        {
index a8c7dc4d61d94660b3788d06d8d021366dc0627c..73bac64445e11fa5b98bf225bc1d56867c3fb7c8 100644 (file)
@@ -60,14 +60,13 @@ namespace Microsoft.Build.Internal.Expressions
                        while (start < end) {
                                int bak = start;
                                ret.Add (ParseSingle (ref start, end));
-                               SkipSpaces (ref start);
                                if (bak == start)
                                        throw new Exception ("Parser failed to progress token position: " + source);
                        }
                        return ret;
                }
                
-               static readonly char [] token_starters = "$@%(),".ToCharArray ();
+               static readonly char [] token_starters = "$@%(),'\"".ToCharArray ();
                
                Expression ParseSingle (ref int start, int end)
                {
@@ -101,7 +100,23 @@ namespace Microsoft.Build.Internal.Expressions
                                        ret = EvaluateItemExpression (start, last);
                                start = last + 1;
                                return ret;
-                               
+                       
+                       case '\'':
+                       case '"':
+                               var quoteChar = source [start];
+                               start++;
+                               last = FindMatchingCloseQuote (quoteChar, start, end);
+                               if (last < 0) {
+                                       if (validation_type == ExpressionValidationType.StrictBoolean)
+                                               throw new InvalidProjectFileException (string.Format ("expression did not have matching ')' since index {0} in \"{1}\"", start, source));
+                                       else {
+                                               start--;
+                                               goto default; // treat as raw literal to the section end
+                                       }
+                               }
+                               ret = new QuotedExpression () { QuoteChar = quoteChar, Contents = Parse (start, last) };
+                               start = last + 1;
+                               return ret;
                        // Below (until default) are important only for Condition evaluation
                        case '(':
                                if (validation_type == ExpressionValidationType.LaxString)
@@ -134,7 +149,7 @@ namespace Microsoft.Build.Internal.Expressions
                                return ret;
                        }
                }
-               
+
                int FindMatchingCloseParen (int start, int end)
                {
                        int n = 0;
@@ -148,7 +163,21 @@ namespace Microsoft.Build.Internal.Expressions
                        }
                        return -1; // invalid
                }
-               
+
+               int FindMatchingCloseQuote (char quote, int start, int end)
+               {
+                       int n = 0;
+                       for (int i = start; i < end; i++) {
+                               if (i < end + 1 && source [i] == '\\' && (source [i + 1] == quote || source [i + 1] == '\\'))
+                                       n += 2;
+                               else if (source [i] == quote) {
+                                       if (n-- == 0)
+                                               return i;
+                               }
+                       }
+                       return -1; // invalid
+               }
+
                static readonly string spaces = " \t\r\n";
                
                void SkipSpaces (ref int start)
@@ -166,6 +195,7 @@ namespace Microsoft.Build.Internal.Expressions
                                // property access without member specification
                                int parenAt = source.IndexOf ('(', start, end - start);
                                string name = parenAt < 0 ? source.Substring (start, end - start) : source.Substring (start, parenAt - start);
+                               name = name.Trim ();
                                var access = new PropertyAccess () {
                                        Name = new NameToken () { Name = name },
                                        TargetType = PropertyTargetType.Object
@@ -181,6 +211,7 @@ namespace Microsoft.Build.Internal.Expressions
                                int mstart = dotAt + 1;
                                int parenAt = source.IndexOf ('(', mstart, end - mstart);
                                string name = parenAt < 0 ? source.Substring (mstart, end - mstart) : source.Substring (mstart, parenAt - mstart);
+                               name = name.Trim ();
                                var access = new PropertyAccess () {
                                        Name = new NameToken () { Name = name },
                                        TargetType = PropertyTargetType.Object,
@@ -196,10 +227,11 @@ namespace Microsoft.Build.Internal.Expressions
                                string type = source.Substring (start, colonsAt - start);
                                if (type.Length < 2 || type [0] != '[' || type [type.Length - 1] != ']')
                                        throw new InvalidProjectFileException (string.Format ("Static function call misses appropriate type name surrounded by '[' and ']' at {0} in \"{1}\"", start, source));
-                               type = type.Substring (1, type.Length - 2);
+                               type = type.Substring (1, type.Length - 2).Trim ();
                                start = colonsAt + 2;
                                int parenAt = source.IndexOf ('(', start, end - start);
                                string member = parenAt < 0 ? source.Substring (start, end - start) : source.Substring (start, parenAt - start);
+                               member = member.Trim ();
                                if (member.Length == 0)
                                        throw new InvalidProjectFileException ("Static member name is missing");
                                var access = new PropertyAccess () {
@@ -228,6 +260,7 @@ namespace Microsoft.Build.Internal.Expressions
                                        if (source [start] != ',')
                                                throw new InvalidProjectFileException (string.Format ("invalid function call arguments specification. ',' is expected, got '{0}'", source [start]));
                                        start++;
+                                       SkipSpaces (ref start);
                                }
                                args.Add (ParseSingle (ref start, end));
                        } while (true);
index 44157a84444609638e8a2cdd30acbc9949d64d76..30524ffd278796c7ef394688d75ba8aa7a133af4 100644 (file)
@@ -291,6 +291,56 @@ namespace MonoTests.Microsoft.Build.Execution
                        Assert.IsNotNull (p, "#1");
                        Assert.AreEqual ("False", p.EvaluatedValue, "#2");
                }
+
+               [Test]
+               public void ConditionalExpression ()
+               {
+                       string project_xml = @"<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
+       <PropertyGroup>
+               <NoCompilerStandardLib>true</NoCompilerStandardLib>
+                <ResolveAssemblyReferencesDependsOn>$(ResolveAssemblyReferencesDependsOn);_AddCorlibReference</ResolveAssemblyReferencesDependsOn>
+        </PropertyGroup>
+</Project>";
+                       var xml = XmlReader.Create (new StringReader (project_xml));
+                       var root = ProjectRootElement.Create (xml);
+                       root.FullPath = "ProjectInstanceTest.ConditionalExpression.proj";
+                       var proj = new ProjectInstance (root);
+                       var p = proj.GetProperty ("ResolveAssemblyReferencesDependsOn");
+                       Assert.IsNotNull (p, "#1");
+                       Assert.AreEqual (";_AddCorlibReference", p.EvaluatedValue, "#2");
+               }
+
+               [Test]
+               [Category ("NotWorking")] // until we figure out why it fails on wrench.
+               public void ItemsInTargets ()
+               {
+                       string project_xml = @"<Project DefaultTargets='Default' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
+       <Target Name='Default'>
+               <PropertyGroup>
+                       <_ExplicitMSCorlibPath>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries ('$(TargetFrameworkIdentifier)', '$(TargetFrameworkVersion)', '$(TargetFrameworkProfile)'))\mscorlib.dll</_ExplicitMSCorlibPath>
+               </PropertyGroup>
+               <ItemGroup>
+                       <_ExplicitReference
+                               Include='$(_ExplicitMSCorlibPath)'
+                               Condition='Exists($(_ExplicitMSCorlibPath))'>
+                               <Private>false</Private>
+                       </_ExplicitReference>
+               </ItemGroup>
+       </Target>
+       <Import Project='$(MSBuildBinPath)\\Microsoft.CSharp.targets' />
+</Project>";
+                       var xml = XmlReader.Create (new StringReader (project_xml));
+                       var root = ProjectRootElement.Create (xml);
+                       root.FullPath = "ProjectInstanceTest.ConditionalExpression.proj";
+                       var proj = new ProjectInstance (root, null, "4.0", ProjectCollection.GlobalProjectCollection);
+                       proj.Build ();
+                       // make sure the property value expansion is done successfully.
+                       Assert.IsTrue (!string.IsNullOrEmpty (proj.GetPropertyValue ("_ExplicitMSCorlibPath")), "premise: propertyValue by ToolLocationHelper func call");
+                       var items = proj.GetItems ("_ExplicitReference");
+                       // make sure items are stored after build.
+                       Assert.IsTrue (items.Any (), "items.Any");
+                       Assert.IsTrue (!string.IsNullOrEmpty (items.First ().EvaluatedInclude), "item.EvaluatedInclude");
+               }
        }
        
        namespace SubNamespace
index ebd662e249f2c9432fd597943e2d57ce6b63aa5d..16694f762259e988ad895a1025af0578f29fbef7 100644 (file)
@@ -335,6 +335,22 @@ namespace MonoTests.Microsoft.Build.Internal
                        var result = p.Build (new ILogger [] { new ConsoleLogger (LoggerVerbosity.Minimal, sw.WriteLine, null, null)});
                        Assert.IsTrue (result, "#1: " + sw);
                }
+
+               [Test]
+               public void FunctionCall ()
+               {
+                       string project_xml = @"<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
+  <Target Name='Foo'>
+    <Warning Text=""$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries ('$(TargetFrameworkIdentifier)', '$(TargetFrameworkVersion)', '$(TargetFrameworkProfile)'))\mscorlib.dll'"" />
+  </Target>
+</Project>";
+                       var xml = XmlReader.Create (new StringReader (project_xml));
+                       var root = ProjectRootElement.Create (xml);
+                       var p = new ProjectInstance (root, null, "4.0", ProjectCollection.GlobalProjectCollection);
+                       var sw = new StringWriter ();
+                       var result = p.Build (new ILogger [] { new ConsoleLogger (LoggerVerbosity.Minimal, sw.WriteLine, null, null)});
+                       Assert.IsTrue (result, "#1: " + sw);
+               }
        }
 }
 
index 38006848872ca74d049901d12780664f93b254c4..36f0ad6dbba0c061ce9f8a1b25dff847e5b88456 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.CSharp/Mono.CSharp-net_4_5.csproj">\r
       <Project>{811AC316-9CC2-497D-A45E-7B6B1E0E481B}</Project>\r
-      <Name>Mono.CSharp\Mono.CSharp-net_4_5</Name>\r
+      <Name>Mono.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 6014172763413aa97180bca1f3c89857bda826a4..fdc3b194187581f48189bd1261a50b8e3aebf1bd 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index a840d891af82fb1bd2ff70bd2d804ea7d8c3618a..2077c59c4ff0d1cc2fa54ad5706d30ab95dc4150 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 270d7a4b83b2fdc7412f02d006df0c91c4b319d5..a4783febcaa27f38f02f6b992816b1af7597e3aa 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 9fb2df1c2c8cb6ea9e69eb243833f082d43cc272..c3cdc5974a0fd5d11fb9edb5c3a773f150ff4db2 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index bd0167efbf026ec84cb9d7125973fc78d5f0f85b..970aa33443d459a23509d782e18ede555c9b8ab1 100644 (file)
@@ -98,5 +98,13 @@ namespace MonoTests.EvaluatorTest
                        Evaluator.Run ("struct B { public string foo; public int bar; }");
                        Evaluator.Run ("B aStruct = new B { foo = \"foo\", bar = 1 };");
                }
+
+               [Test]
+               public void NestedType ()
+               {
+                       Evaluator.Run ("class A { class B { } }");
+                       Evaluator.Run ("var x = new A ();");
+
+               }
        }
 }
\ No newline at end of file
index 116f8fed010852b28272d33552e15b2488eb51f2..7781cfdbf7593dc0a2e5fdc4e02c2dcc8b426bb8 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1eff46c1ec19e6c177469166a5e07290c456db03..57cb86cd8b0e855c9f6ee28749240cd5e39766c0 100644 (file)
@@ -161,10 +161,10 @@ namespace Cairo {
                        }
                }
 
-               [Obsolete ("Use SetSourceRGBA method")]
+               [Obsolete ("Use SetSourceColor method")]
                public Color Color {
                        set {
-                               NativeMethods.cairo_set_source_rgba (handle, value.R, value.G, value.B, value.A);
+                               SetSourceColor (value);
                        }
                }
 
@@ -280,6 +280,12 @@ namespace Cairo {
                        }
                }
 
+               public bool HasCurrentPoint {
+                       get {
+                               return NativeMethods.cairo_has_current_point (handle);
+                       }
+               }
+
                [Obsolete ("Use GetTarget/SetTarget")]
                public Cairo.Surface Target {
                        set {
@@ -331,6 +337,11 @@ namespace Cairo {
                        get { return NativeMethods.cairo_get_reference_count (handle); }
                }
 
+               public void SetSourceColor (Color color)
+               {
+                       NativeMethods.cairo_set_source_rgba (handle, color.R, color.G, color.B, color.A);
+               }
+
                public void SetSourceRGB (double r, double g, double b)
                {
                        NativeMethods.cairo_set_source_rgb (handle, r, g, b);
@@ -548,6 +559,11 @@ namespace Cairo {
                        NativeMethods.cairo_reset_clip (handle);
                }
 
+               public bool InClip (double x, double y)
+               {
+                       return NativeMethods.cairo_in_clip (handle, x, y);
+               }
+
                public bool InStroke (double x, double y)
                {
                        return NativeMethods.cairo_in_stroke (handle, x, y);
index c53f0009c0019c37312a8f0bc1517fc60665ee71..8509c6db25f03d121ce15aab46d36f870955f792 100644 (file)
@@ -258,6 +258,10 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs);
                
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               [return: MarshalAs (UnmanagedType.U1)]
+               internal static extern bool cairo_has_current_point (IntPtr cr);
+
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_identity_matrix (IntPtr cr);
                
@@ -292,6 +296,10 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern int cairo_image_surface_get_width  (IntPtr surface);
 
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               [return: MarshalAs (UnmanagedType.U1)]
+               internal static extern bool cairo_in_clip (IntPtr cr, double x, double y);
+
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                [return: MarshalAs (UnmanagedType.U1)]
                internal static extern bool cairo_in_fill (IntPtr cr, double x, double y);
index 558d6dcd1cef2e4d40a2df4cf9843ff368592ae2..8c1b0c48e5ab10cd6b7b335d65335ecdff5ce600 100644 (file)
     <AssemblyName>Mono.Cecil.Mdb</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../mono.snk</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Cecil/Mono.Cecil-net_4_5.csproj">\r
       <Project>{F6DD456E-ADE4-419D-997F-41ECA0CE79F7}</Project>\r
-      <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
+      <Name>Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 69e43221eb5ff99617c9c8fbdf89b47dcd69389c..5810015d5b98ccb2c3a4c737a29229c58bd9fd30 100644 (file)
     <AssemblyName>Mono.Cecil</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../mono.snk</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 3bbef32483608446191ad697fefc815de83c555d..7f50fed785f370836a6b43a407d5609122f88bf8 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Cecil/Mono.Cecil-net_4_5.csproj">\r
       <Project>{F6DD456E-ADE4-419D-997F-41ECA0CE79F7}</Project>\r
-      <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
+      <Name>Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj">\r
       <Project>{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}</Project>\r
-      <Name>Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5</Name>\r
+      <Name>Mono.Cecil.Mdb-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 3155074eb5b879140773043c43f8659cdc4f7b3c..5c2bd0b31361e1dfedc61b4c62d35dabfa4b477f 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 8dca41b2659885eb98a620d241ad29067b7f22fa..226f6e668101fdadb2fb681f5a3c34e342a1e8db 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
       <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
+      <Name>System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 4d8ab1edf1f34fb3a8c84c7a9ea3973e85343659..d54e8b0c829f2ef9e3a779e24947efc0d08afa3e 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 083c66e6e9a5dbc812acb5272855b5241731061d..c61490cd1a5afd0bfa47b4474a3cdb823a812802 100644 (file)
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../mono.snk</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Cecil/Mono.Cecil-net_4_5.csproj">\r
       <Project>{F6DD456E-ADE4-419D-997F-41ECA0CE79F7}</Project>\r
-      <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
+      <Name>Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 6d196aabbab374ff4ff9f70ce974cd3e7c9210eb..29e782c7f146a9036dd9163b59bac0621f2b92a1 100644 (file)
@@ -404,8 +404,7 @@ namespace Mono.Debugger.Soft
 
                static readonly bool EnableConnectionLogging = !String.IsNullOrEmpty (Environment.GetEnvironmentVariable ("MONO_SDB_LOG"));
                static int ConnectionId;
-               readonly StreamWriter LoggingStream = EnableConnectionLogging ? 
-                       new StreamWriter (string.Format ("/tmp/sdb_conn_log_{0}", ConnectionId++), false) : null;
+               readonly StreamWriter LoggingStream;
 
                /*
                 * Th version of the wire-protocol implemented by the library. The library
@@ -1068,6 +1067,19 @@ namespace Mono.Debugger.Soft
                        reply_cbs = new Dictionary<int, ReplyCallback> ();
                        reply_cb_counts = new Dictionary<int, int> ();
                        reply_packets_monitor = new Object ();
+                       if (EnableConnectionLogging) {
+                               var path = Environment.GetEnvironmentVariable ("MONO_SDB_LOG");
+                               if (path.Contains ("{0}")) {
+                                       //C:\SomeDir\sdbLog{0}.txt -> C:\SomeDir\sdbLog1.txt
+                                       LoggingStream = new StreamWriter (string.Format (path, ConnectionId++), false);
+                               } else if (Path.HasExtension (path)) {
+                                       //C:\SomeDir\sdbLog.txt -> C:\SomeDir\sdbLog1.txt
+                                       LoggingStream = new StreamWriter (Path.GetDirectoryName (path) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension (path) + ConnectionId++ + "." + Path.GetExtension (path), false);
+                               } else {
+                                       //C:\SomeDir\sdbLog -> C:\SomeDir\sdbLog1
+                                       LoggingStream = new StreamWriter (path + ConnectionId++, false);
+                               }
+                       }
                }
                
                protected abstract int TransportReceive (byte[] buf, int buf_offset, int len);
@@ -1432,18 +1444,18 @@ namespace Mono.Debugger.Soft
                //
                public void StartBuffering () {
                        buffer_packets = true;
-                       if (Version.AtLeast (3, 34))
+                       if (Version.AtLeast (2, 34))
                                VM_StartBuffering ();
                }
 
                public void StopBuffering () {
-                       if (Version.AtLeast (3, 34))
+                       if (Version.AtLeast (2, 34))
                                VM_StopBuffering ();
                        buffer_packets = false;
 
                        WritePackets (buffered_packets);
                        if (EnableConnectionLogging) {
-                               LoggingStream.WriteLine (String.Format ("Sent {1} packets.", buffered_packets.Count));
+                               LoggingStream.WriteLine (String.Format ("Sent {0} packets.", buffered_packets.Count));
                                LoggingStream.Flush ();
                        }
                        buffered_packets.Clear ();
@@ -1983,21 +1995,20 @@ namespace Mono.Debugger.Soft
                        return SendReceive (CommandSet.THREAD, (int)CmdThread.GET_NAME, new PacketWriter ().WriteId (id)).ReadString ();
                }
 
-               internal FrameInfo[] Thread_GetFrameInfo (long id, int start_frame, int length) {
-                       var res = SendReceive (CommandSet.THREAD, (int)CmdThread.GET_FRAME_INFO, new PacketWriter ().WriteId (id).WriteInt (start_frame).WriteInt (length));
-                       int count = res.ReadInt ();
-
-                       var frames = new FrameInfo [count];
-                       for (int i = 0; i < count; ++i) {
-                               var f = new FrameInfo ();
-                               f.id = res.ReadInt ();
-                               f.method = res.ReadId ();
-                               f.il_offset = res.ReadInt ();
-                               f.flags = (StackFrameFlags)res.ReadByte ();
-                               frames [i] = f;
-                       }
-
-                       return frames;
+               internal void Thread_GetFrameInfo (long id, int start_frame, int length, Action<FrameInfo[]> resultCallaback) {
+                       Send (CommandSet.THREAD, (int)CmdThread.GET_FRAME_INFO, new PacketWriter ().WriteId (id).WriteInt (start_frame).WriteInt (length), (res) => {
+                               int count = res.ReadInt ();
+                               var frames = new FrameInfo[count];
+                               for (int i = 0; i < count; ++i) {
+                                       var f = new FrameInfo ();
+                                       f.id = res.ReadInt ();
+                                       f.method = res.ReadId ();
+                                       f.il_offset = res.ReadInt ();
+                                       f.flags = (StackFrameFlags)res.ReadByte ();
+                                       frames [i] = f;
+                               }
+                               resultCallaback (frames);
+                       }, 1);
                }
 
                internal int Thread_GetState (long id) {
index e0175f36bdfe9ee6adacf79dc0c25723a9c9e99d..b4d6073819c359f1c98a9c3c57d32135afb3f1a1 100644 (file)
@@ -23,67 +23,347 @@ namespace Mono.Debugger.Soft
                        // IL_0008:  br         IL_000d
                        // IL_000d:  ldloc.0
                        // IL_000e:  ret
+                       // ... or returns a simple constant:
+                       // IL_0000:  ldc.i4 1024
+                       // IL_0005:  conv.i8
+                       // IL_0006:  ret
                        if (args != null && args.Length != 0)
-                               throw new NotSupportedException ();                             
+                               throw new NotSupportedException ();
+
                        if (method.IsStatic || method.DeclaringType.IsValueType || this_val == null || !(this_val is ObjectMirror))
                                throw new NotSupportedException ();
 
                        var instructions = body.Instructions;
-                       if (instructions.Count > 16)
+                       if (instructions.Count < 1 || instructions.Count > 16)
                                throw new NotSupportedException ();
 
-                       Value[] stack = new Value [16];
+                       var stack = new Value [16];
+                       var ins = instructions [0];
                        Value locals_0 = null;
-                       Value res = null;
-
-                       int sp = 0;
                        int ins_count = 0;
-                       var ins = instructions [0];
+                       int sp = 0;
+
                        while (ins != null) {
                                if (ins_count > 16)
                                        throw new NotImplementedException ();
-                               ins_count ++;
+
                                var next = ins.Next;
+                               ins_count++;
 
                                var op = ins.OpCode;
                                if (op == OpCodes.Nop) {
                                } else if (op == OpCodes.Ldarg_0) {
-                                       if (sp > 0)
+                                       if (sp != 0)
                                                throw new NotSupportedException ();
+
                                        stack [sp++] = this_val;
                                } else if (op == OpCodes.Ldfld) {
                                        if (sp != 1)
                                                throw new NotSupportedException ();
-                                       var obj = (ObjectMirror)stack [--sp];
-                                       var field = (FieldInfoMirror)ins.Operand;
+
+                                       var obj = (ObjectMirror) stack [--sp];
+                                       var field = (FieldInfoMirror) ins.Operand;
                                        try {
                                                stack [sp++] = obj.GetValue (field);
                                        } catch (ArgumentException) {
                                                throw new NotSupportedException ();
                                        }
+                               } else if (op == OpCodes.Ldc_I4_0) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 0);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_1) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 1);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_2) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 2);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_3) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 3);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_4) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 4);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_5) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 5);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_6) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 6);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_7) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 7);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_8) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, 8);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_M1) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, -1);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I4_S) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_I8) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_R4) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Ldc_R8) {
+                                       if (sp != 0)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, ins.Operand);
+                                       } catch (ArgumentException) {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_I) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_I1) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToSByte (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_U1) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToByte (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_I2) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt16 (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_U2) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt16 (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_I4) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_U4) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt32 (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_I8) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToInt64 (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_U8) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt64 (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_R4) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToSingle (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
+                               } else if (op == OpCodes.Conv_R8) {
+                                       if (sp != 1)
+                                               throw new NotSupportedException ();
+
+                                       try {
+                                               var primitive = (PrimitiveValue) stack [--sp];
+                                               stack [sp++] = new PrimitiveValue (method.VirtualMachine, Convert.ToDouble (primitive.Value));
+                                       } catch {
+                                               throw new NotSupportedException ();
+                                       }
                                } else if (op == OpCodes.Stloc_0) {
                                        if (sp != 1)
                                                throw new NotSupportedException ();
+
                                        locals_0 = stack [--sp];
                                } else if (op == OpCodes.Br) {
-                                       next = (ILInstruction)ins.Operand;
+                                       next = (ILInstruction) ins.Operand;
                                } else if (op == OpCodes.Ldloc_0) {
                                        if (sp != 0)
                                                throw new NotSupportedException ();
+
                                        stack [sp++] = locals_0;
                                } else if (op == OpCodes.Ret) {
-                                       if (sp == 0)
-                                               res = null;
-                                       else
-                                               res = stack [--sp];
-                                       break;
+                                       if (sp > 0) {
+                                               var res = stack [--sp];
+
+                                               var primitive = res as PrimitiveValue;
+                                               if (method.ReturnType.IsPrimitive && primitive != null) {
+                                                       // cast the primitive value to the return type
+                                                       try {
+                                                               switch (method.ReturnType.CSharpName) {
+                                                               case "double": res = new PrimitiveValue (method.VirtualMachine, Convert.ToDouble (primitive.Value)); break;
+                                                               case "float": res = new PrimitiveValue (method.VirtualMachine, Convert.ToSingle (primitive.Value)); break;
+                                                               case "ulong": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt64 (primitive.Value)); break;
+                                                               case "long": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt64 (primitive.Value)); break;
+                                                               case "uint": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt32 (primitive.Value)); break;
+                                                               case "int": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt32 (primitive.Value)); break;
+                                                               case "ushort": res = new PrimitiveValue (method.VirtualMachine, Convert.ToUInt16 (primitive.Value)); break;
+                                                               case "short": res = new PrimitiveValue (method.VirtualMachine, Convert.ToInt16 (primitive.Value)); break;
+                                                               case "sbyte": res = new PrimitiveValue (method.VirtualMachine, Convert.ToSByte (primitive.Value)); break;
+                                                               case "byte": res = new PrimitiveValue (method.VirtualMachine, Convert.ToByte (primitive.Value)); break;
+                                                               case "char": res = new PrimitiveValue (method.VirtualMachine, Convert.ToChar (primitive.Value)); break;
+                                                               case "bool": res = new PrimitiveValue (method.VirtualMachine, Convert.ToBoolean (primitive.Value)); break;
+                                                               }
+                                                       } catch {
+                                                               throw new NotSupportedException ();
+                                                       }
+                                               }
+
+                                               return res;
+                                       }
+
+                                       return null;
                                } else {
                                        throw new NotSupportedException ();
                                }
+
                                ins = next;
                        }
 
-                       return res;
+                       return null;
                }
        }
 }
index f3eedccaf5b24592ce35e5b1cc1c0af05df033ac..030fa3e3e4ad431ec00f50e1b45a96451e2d56b2 100644 (file)
@@ -262,7 +262,7 @@ namespace Mono.Debugger.Soft
                                f |= InvokeFlags.SINGLE_THREADED;
 
                        InvokeAsyncResult r = new InvokeAsyncResult { AsyncState = state, AsyncWaitHandle = new ManualResetEvent (false), VM = vm, Thread = thread, Callback = callback };
-
+                       thread.InvalidateFrames ();
                        r.ID = vm.conn.VM_BeginInvokeMethod (thread.Id, method.Id, this_obj != null ? vm.EncodeValue (this_obj) : vm.EncodeValue (vm.CreateValue (null)), vm.EncodeValues (arguments), f, InvokeCB, r);
 
                        return r;
@@ -301,15 +301,15 @@ namespace Mono.Debugger.Soft
                                } catch (CommandException ex) {
                                        if (ex.ErrorCode == ErrorCode.INVALID_ARGUMENT)
                                                throw new ArgumentException ("Incorrect number or types of arguments", "arguments");
-                                       else
-                                               throw;
+
+                                       throw;
                                }
                                throw new NotImplementedException ();
                        } else {
                                if (r.Exception != null)
                                        throw new InvocationException ((ObjectMirror)r.VM.DecodeValue (r.Exception));
-                               else
-                                       return r.VM.DecodeValue (r.Value);
+
+                               return r.VM.DecodeValue (r.Value);
                        }
                }
 
@@ -370,6 +370,7 @@ namespace Mono.Debugger.Soft
                        var args = new List<ValueImpl[]> ();
                        for (int i = 0; i < methods.Length; ++i)
                                args.Add (vm.EncodeValues (arguments [i]));
+                       thread.InvalidateFrames ();
                        r.ID = vm.conn.VM_BeginInvokeMethods (thread.Id, mids, this_obj != null ? vm.EncodeValue (this_obj) : vm.EncodeValue (vm.CreateValue (null)), args, f, InvokeMultipleCB, r);
 
                        return r;
index 696f6493f4043a726e058dcc41365c9c62290975..2e9c806f8bb8d4337507cb9774b13541be71ff59 100644 (file)
@@ -22,8 +22,11 @@ namespace Mono.Debugger.Soft
                public override bool Equals (object obj) {
                        if (value == obj)
                                return true;
-                       if (obj != null && obj is PrimitiveValue)
-                               return value == (obj as PrimitiveValue).Value;
+
+                       var primitive = obj as PrimitiveValue;
+                       if (primitive != null)
+                               return value == primitive.Value;
+
                        return base.Equals (obj);
                }
 
index 38c733ccaf5e07e60681abcd77cf7c58be440608..541118d66d6cc1ad4b6c4f0f8bdc681891d68b58 100644 (file)
@@ -7,7 +7,12 @@ namespace Mono.Debugger.Soft
        public class ThreadMirror : ObjectMirror
        {
                string name;
+               bool cacheInvalid = true;
+               bool fetching;
+               object fetchingLocker = new object ();
+               ManualResetEvent fetchingEvent = new ManualResetEvent (false);
                ThreadInfo info;
+               StackFrame[] frames;
 
                internal ThreadMirror (VirtualMachine vm, long id) : base (vm, id) {
                }
@@ -15,22 +20,58 @@ namespace Mono.Debugger.Soft
                internal ThreadMirror (VirtualMachine vm, long id, TypeMirror type, AppDomainMirror domain) : base (vm, id, type, domain) {
                }
 
-               // FIXME: Cache, invalidate when the thread/runtime is resumed
                public StackFrame[] GetFrames () {
-                       FrameInfo[] frame_info = vm.conn.Thread_GetFrameInfo (id, 0, -1);
+                       FetchFrames (true);
+                       fetchingEvent.WaitOne ();
+                       return frames;
+               }
 
-                       var frames = new List<StackFrame> ();
+               internal void InvalidateFrames () {
+                       cacheInvalid = true;
+               }
 
-                       for (int i = 0; i < frame_info.Length; ++i) {
-                               FrameInfo info = (FrameInfo)frame_info [i];
-                               MethodMirror method = vm.GetMethod (info.method);
-                               var f = new StackFrame (vm, info.id, this, method, info.il_offset, info.flags);
-                               if (!(f.IsNativeTransition && !NativeTransitions))
-                                       frames.Add (f);
+               internal void FetchFrames (bool mustFetch = false) {
+                       lock (fetchingLocker) {
+                               if (fetching || !cacheInvalid)
+                                       return;
+                               cacheInvalid = false;
+                               fetching = true;
+                               fetchingEvent.Reset ();
                        }
+                       vm.conn.Thread_GetFrameInfo (id, 0, -1, (frame_info) => {
+                               var framesList = new List<StackFrame> ();
+                               for (int i = 0; i < frame_info.Length; ++i) {
+                                       var frameInfo = (FrameInfo)frame_info [i];
+                                       var method = vm.GetMethod (frameInfo.method);
+                                       var f = new StackFrame (vm, frameInfo.id, this, method, frameInfo.il_offset, frameInfo.flags);
+                                       if (!(f.IsNativeTransition && !NativeTransitions))
+                                               framesList.Add (f);
+                               }
+                               lock (fetchingLocker) {
+                                       vm.AddThreadToInvalidateList (this);
+                                       fetching = false;
+                                       //In case it was invalidated during waiting for response from
+                                       //runtime and mustFetch was set refetch
+                                       if (cacheInvalid && mustFetch) {
+                                               FetchFrames (mustFetch);
+                                               return;
+                                       }
+                                       frames = framesList.ToArray ();
+                                       fetchingEvent.Set ();
+                               }
+                       });
+               }
 
-                       return frames.ToArray ();
-           }
+               public static void FetchFrames(IList<ThreadMirror> threads)
+               {
+                       if (threads.Count == 0)
+                               return;
+                       threads [0].vm.conn.StartBuffering ();
+                       foreach (var thread in threads) {
+                               thread.FetchFrames ();
+                       }
+                       threads [0].vm.conn.StopBuffering ();
+               }
 
                public string Name {
                        get {
@@ -38,7 +79,7 @@ namespace Mono.Debugger.Soft
                                        name = vm.conn.Thread_GetName (id);
                                return name;
                        }
-           }
+               }
 
                public new long Id {
                        get {
@@ -111,8 +152,8 @@ namespace Mono.Debugger.Soft
                        } catch (CommandException ex) {
                                if (ex.ErrorCode == ErrorCode.INVALID_ARGUMENT)
                                        throw new ArgumentException ("loc doesn't refer to a location in the current method of this thread.", "loc");
-                               else
-                                       throw;
+
+                               throw;
                        }
                }
     }
index 61ee11c18314fb401424ade351529c4fa6e29d81..ee5806d4722a6cce409547d9e0095f0a8764c63e 100644 (file)
@@ -121,12 +121,13 @@ namespace Mono.Debugger.Soft
 
                public void Resume () {
                        try {
+                               InvalidateThreadAndFrameCaches ();
                                conn.VM_Resume ();
                        } catch (CommandException ex) {
                                if (ex.ErrorCode == ErrorCode.NOT_SUSPENDED)
                                        throw new VMNotSuspendedException ();
-                               else
-                                       throw;
+
+                               throw;
                        }
            }
 
@@ -151,12 +152,44 @@ namespace Mono.Debugger.Soft
                        conn.ForceDisconnect ();
                }
 
+               HashSet<ThreadMirror> threadsToInvalidate = new HashSet<ThreadMirror> ();
+               ThreadMirror[] threadCache;
+               object threadCacheLocker = new object ();
+
+               void InvalidateThreadAndFrameCaches () {
+                       lock (threadsToInvalidate) {
+                               foreach (var thread in threadsToInvalidate)
+                                       thread.InvalidateFrames ();
+                               threadsToInvalidate.Clear ();
+                       }
+                       lock (threadCacheLocker) {
+                               threadCache = null;
+                       }
+               }
+
+               internal void InvalidateThreadCache () {
+                       lock (threadCacheLocker) {
+                               threadCache = null;
+                       }
+               }
+
+               internal void AddThreadToInvalidateList (ThreadMirror threadMirror)
+               {
+                       lock (threadsToInvalidate) {
+                               threadsToInvalidate.Add (threadMirror);
+                       }
+               }
+
                public IList<ThreadMirror> GetThreads () {
-                       long[] ids = vm.conn.VM_GetThreads ();
-                       ThreadMirror[] res = new ThreadMirror [ids.Length];
-                       for (int i = 0; i < ids.Length; ++i)
-                               res [i] = GetThread (ids [i]);
-                       return res;
+                       lock (threadCacheLocker) {
+                               if (threadCache == null) {
+                                       long[] ids = vm.conn.VM_GetThreads ();
+                                       threadCache = new ThreadMirror [ids.Length];
+                                       for (int i = 0; i < ids.Length; ++i)
+                                               threadCache [i] = GetThread (ids [i]);
+                               }
+                               return threadCache;
+                       }
                }
 
                // Same as the mirrorOf methods in JDI
@@ -675,9 +708,11 @@ namespace Mono.Debugger.Soft
                                        vm.notify_vm_event (EventType.VMDeath, suspend_policy, req_id, thread_id, null, ei.ExitCode);
                                        break;
                                case EventType.ThreadStart:
+                                       vm.InvalidateThreadCache ();
                                        l.Add (new ThreadStartEvent (vm, req_id, id));
                                        break;
                                case EventType.ThreadDeath:
+                                       vm.InvalidateThreadCache ();
                                        l.Add (new ThreadDeathEvent (vm, req_id, id));
                                        break;
                                case EventType.AssemblyLoad:
@@ -718,8 +753,6 @@ namespace Mono.Debugger.Soft
                                case EventType.UserLog:
                                        l.Add (new UserLogEvent (vm, req_id, thread_id, ei.Level, ei.Category, ei.Message));
                                        break;
-                               default:
-                                       break;
                                }
                        }
                        
index da0eaa1a1a70b3f1955e3e6d8760ee71e85a624f..6083b3d0ebc54324eae817eff2196d81598409c0 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj">\r
       <Project>{0B587DBA-BA92-4B92-821A-AA200C612A7E}</Project>\r
-      <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5</Name>\r
+      <Name>ICSharpCode.SharpZipLib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 91984c92bf22e5a7b40c5a0a437d0898c5147ddf..0e98d81156edb84ef5db1b16b034c768699c3046 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Posix/Mono.Posix-net_4_5.csproj">\r
       <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
+      <Name>Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 5747dcd2ba9564f61a7bc9614d295ef8a6779a6c..9870cab073c851d5ffd6b1eafb01f0e3e8831b06 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Messaging/System.Messaging-net_4_5.csproj">\r
       <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
+      <Name>System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Messaging/Mono.Messaging-net_4_5.csproj">\r
       <Project>{DDCC93B5-9425-4E9A-95DC-3400D0028508}</Project>\r
-      <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
+      <Name>Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj">\r
       <Project>{55AA0C89-63D9-438E-A139-3ED9F72AE295}</Project>\r
-      <Name>client\RabbitMQ.Client-net_4_5</Name>\r
+      <Name>RabbitMQ.Client-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 38b4bc70bdaab846a142ec658d1af79a8aa6d423..1288172ab1d5c84ef511405364962d01ebcde8b5 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index f3d1d0fe30bbe2ff9f7254d10b4e68b119858639..bc2f7b6a2f3e1d52c83af9310f9c540e408c7a69 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 47b2dd4eb311dae54dcf5b631e2d20d93a2dfeb5..89a4d5fddf61a5986ee1e36ba759e55fc829d3bc 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1161ee4ce8b05f89cc4904ed54595d4911dfda2f..b0a8c4cb312c9739a21d38a6df02988bf874d664 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 7ba53e922bf7d1dd53db2206246a8281c522af7c..0b8f1e6fa028cea47e904a1fbb9ce1a061dbc9c7 100644 (file)
@@ -2842,7 +2842,7 @@ namespace Mono.Unix.Native {
                        ee.events = events;
                        ee.fd = fd;
 
-                       return sys_epoll_ctl (epfd, op, fd, ref ee);
+                       return epoll_ctl (epfd, op, fd, ref ee);
                }
 
                public static int epoll_wait (int epfd, EpollEvent [] events, int max_events, int timeout)
@@ -2860,7 +2860,7 @@ namespace Mono.Unix.Native {
                private static extern int sys_epoll_create1 (EpollFlags flags);
 
                [DllImport (LIBC, SetLastError=true, EntryPoint="epoll_ctl")]
-               private static extern int sys_epoll_ctl (int epfd, EpollOp op, int fd, ref EpollEvent ee);
+               public static extern int epoll_ctl (int epfd, EpollOp op, int fd, ref EpollEvent ee);
 
                [DllImport (LIBC, SetLastError=true, EntryPoint="epoll_wait")]
                private static extern int sys_epoll_wait (int epfd, EpollEvent [] ee, int maxevents, int timeout);
index fa7a6d50843cbabd92e2d10803829b7de7fa54f2..1b8525bd30d0cdda14fed059ceb337657c11a9b8 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
@@ -83,7 +84,7 @@
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 0c0f4a628139d8d0ce73a35f629bae913a73556c..1de32f0bb99eefaa164040a8c31f92b9be5bae84 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-bare-net_4_5.csproj">\r
       <Project>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</Project>\r
-      <Name>System\System-bare-net_4_5</Name>\r
+      <Name>System-bare-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index a00ab1b55a33083eacf78a41b8539ce2a691e653..3da8463338b3f21468e6b54c4b8acd309676e3b2 100644 (file)
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type1MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type2MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type3MessageTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\BasicConstraintsExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\ExtendedKeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\KeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\SubjectAltNameExtensionTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\PKCS12Test.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X501NameTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X509CertificateTest.cs" />\r
index 4b1f0c56c9a71a7ca7d84694aa39021a8d6b4123..fa6828bdb8a461df196e64bf44774c8fcb7be391 100644 (file)
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type1MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type2MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type3MessageTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\BasicConstraintsExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\ExtendedKeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\KeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\SubjectAltNameExtensionTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\PKCS12Test.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X501NameTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X509CertificateTest.cs" />\r
index 27e8ad50ba5804add70d49516384b6627646c093..9f6dd3aab9c7f7bc086348d1e5edae69ef4a990c 100644 (file)
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type1MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type2MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type3MessageTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\BasicConstraintsExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\ExtendedKeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\KeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\SubjectAltNameExtensionTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\PKCS12Test.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X501NameTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X509CertificateTest.cs" />\r
index fb6f940a1ecbc9f4355bf11602c330229ed75bda..858ee1e7e59895c7cbe55cee79deb47da343127c 100644 (file)
@@ -87,6 +87,18 @@ namespace Mono.Security.X509.Extensions {
                        }
                }
 
+               protected override void Encode ()
+               {
+                       ASN1 seq = new ASN1 (0x30);
+                       if (aki == null) {
+                               throw new InvalidOperationException ("Invalid AuthorityKeyIdentifier extension");
+                       }
+
+                       seq.Add (new ASN1 (0x80, aki));
+                       extnValue = new ASN1 (0x04);
+                       extnValue.Add (seq);
+               }
+
                public override string Name {
                        get { return "Authority Key Identifier"; }
                }
@@ -97,6 +109,7 @@ namespace Mono.Security.X509.Extensions {
                                        return null;
                                return (byte[]) aki.Clone (); 
                        }
+                       set { aki = value; }
                }
 
                public override string ToString () 
index 945111675e3b95e3169422f01a56d1c099bba9a7..8f15c28e34a13d7595f53f073b46fcec1cd19743 100644 (file)
@@ -75,6 +75,17 @@ namespace Mono.Security.X509.Extensions {
                        ski = sequence.Value;
                }
 
+               protected override void Encode ()
+               {
+                       if (ski == null) {
+                               throw new InvalidOperationException ("Invalid SubjectKeyIdentifier extension");
+                       }
+
+                       var seq = new ASN1 (0x04, ski);
+                       extnValue = new ASN1 (0x04);
+                       extnValue.Add (seq);
+               }
+
                public override string Name {
                        get { return "Subject Key Identifier"; }
                }
@@ -85,6 +96,7 @@ namespace Mono.Security.X509.Extensions {
                                        return null;
                                return (byte[]) ski.Clone (); 
                        }
+                       set { ski = value; }
                }
 
                public override string ToString () 
index 16777e98972ecb045e113c3c24db2d312980a8ae..9d5ac35f66a98d80bdbb38d92bb63566bca9a5a1 100644 (file)
@@ -37,7 +37,9 @@ Mono.Security.X509/X501NameTest.cs
 Mono.Security.X509/X509CertificateTest.cs
 Mono.Security.X509/X509CrlTest.cs
 Mono.Security.X509/X520AttributesTest.cs
+Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs
 Mono.Security.X509.Extensions/KeyUsageExtensionTest.cs
 Mono.Security.X509.Extensions/ExtendedKeyUsageExtensionTest.cs
 Mono.Security.X509.Extensions/BasicConstraintsExtensionTest.cs
 Mono.Security.X509.Extensions/SubjectAltNameExtensionTest.cs
+Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs
diff --git a/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs b/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs
new file mode 100644 (file)
index 0000000..e095df4
--- /dev/null
@@ -0,0 +1,122 @@
+//
+// AuthorityKeyIdentifierExtensionTest.cs - NUnit Test Cases for 
+//     Mono.Security.X509.Extensions.AuthorityKeyIdentifierExtension
+//
+// Authors:
+//     Lex Li  <support@lextm.com>
+//
+// Copyright (C) 2014 Lex Li
+// 
+// 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 Mono.Security.X509.Extensions;
+using NUnit.Framework;
+
+namespace MonoTests.Mono.Security.X509.Extensions
+{
+       [TestFixture]
+       public class AuthorityKeyIdentifierExtensionTest
+       {
+               private void Empty (AuthorityKeyIdentifierExtension aki)
+               {
+                       Assert.IsFalse (aki.Critical, "Critical");
+                       Assert.AreEqual ("2.5.29.35", aki.Oid, "Oid");
+                       Assert.IsNotNull (aki.Name, "Name");
+                       Assert.IsFalse (aki.Name == aki.Oid, "Name!=Oid");
+                       Assert.AreEqual (new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       }, aki.Identifier, "Identifier");
+               }
+
+               [Test]
+               public void Constructor_Empty ()
+               {
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension ();
+                       aki.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       Empty (aki);
+               }
+
+               [Test]
+               public void Constructor_Extension ()
+               {
+                       AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension ();
+                       ext.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext);
+                       Empty (aki);
+               }
+
+               [Test]
+               public void Constructor_ASN1 ()
+               {
+                       AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension ();
+                       ext.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext.ASN1);
+                       Empty (aki);
+               }
+
+               [Test]
+               public void AuthorityKeyIdentifier_Critical ()
+               {
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension ();
+                       aki.Critical = true;
+                       aki.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       Assert.AreEqual ("30-22-06-03-55-1D-23-01-01-FF-04-18-30-16-80-14-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00", BitConverter.ToString (aki.GetBytes ()), "GetBytes");
+
+                       AuthorityKeyIdentifierExtension aki2 = new AuthorityKeyIdentifierExtension (aki.ASN1);
+                       Assert.IsTrue (aki2.Critical, "Critical");
+                       Assert.AreEqual (new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       }, aki2.Identifier, "Identifier");
+               }
+
+               [Test]
+               [ExpectedException (typeof(InvalidOperationException))]
+               public void EmptyIdentifier ()
+               {
+                       AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension ();
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext);
+                       Empty (aki);
+               }
+       }
+}
diff --git a/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs b/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs
new file mode 100644 (file)
index 0000000..5acdd73
--- /dev/null
@@ -0,0 +1,122 @@
+//
+// SubjectKeyIdentifierExtensionTest.cs - NUnit Test Cases for 
+//     Mono.Security.X509.Extensions.SubjectKeyIdentifierExtension
+//
+// Authors:
+//     Lex Li  <support@lextm.com>
+//
+// Copyright (C) 2014 Lex Li
+// 
+// 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 Mono.Security.X509.Extensions;
+using NUnit.Framework;
+
+namespace MonoTests.Mono.Security.X509.Extensions
+{
+       [TestFixture]
+       public class SubjectKeyIdentifierExtensionTest
+       {
+               private void Empty (SubjectKeyIdentifierExtension ski)
+               {
+                       Assert.IsFalse (ski.Critical, "Critical");
+                       Assert.AreEqual ("2.5.29.14", ski.Oid, "Oid");
+                       Assert.IsNotNull (ski.Name, "Name");
+                       Assert.IsFalse (ski.Name == ski.Oid, "Name!=Oid");
+                       Assert.AreEqual (new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       }, ski.Identifier, "Identifier");
+               }
+
+               [Test]
+               public void Constructor_Empty ()
+               {
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension ();
+                       ski.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       Empty (ski);
+               }
+
+               [Test]
+               public void Constructor_Extension ()
+               {
+                       SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension ();
+                       ext.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext);
+                       Empty (ski);
+               }
+
+               [Test]
+               public void Constructor_ASN1 ()
+               {
+                       SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension ();
+                       ext.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext.ASN1);
+                       Empty (ski);
+               }
+
+               [Test]
+               public void AuthorityKeyIdentifier_Critical ()
+               {
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension ();
+                       ski.Critical = true;
+                       ski.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       Assert.AreEqual ("30-20-06-03-55-1D-0E-01-01-FF-04-16-04-14-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00", BitConverter.ToString (ski.GetBytes ()), "GetBytes");
+
+                       SubjectKeyIdentifierExtension ski2 = new SubjectKeyIdentifierExtension (ski.ASN1);
+                       Assert.IsTrue (ski2.Critical, "Critical");
+                       Assert.AreEqual (new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       }, ski2.Identifier, "Identifier");
+               }
+
+               [Test]
+               [ExpectedException (typeof(InvalidOperationException))]
+               public void EmptyIdentifier ()
+               {
+                       SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension ();
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext);
+                       Empty (ski);
+               }
+       }
+}
index 1c5d3c8655f444c6ed917c6dde41c71deba610cf..14595b380787265c3e41be215b2c0f28105392c0 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index f7b41bb32cdbfb49a031611272f45103e9d18d05..f74e4b7e54dfa770d3512cc13c6028eeb36e48ac 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
@@ -73,7 +74,7 @@
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 318b19b20b56fc51ae0f10acb67f2b867eafec55..998b16d4bbd397b8053f0690d66ff342c5b8811f 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 7bb9cb88199c806700af7d51a7d70b6412233d77..965e4b4975233fe5428bbdbdc43bf8ee204bf3c5 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1fb94134719e825f959b014e0571d8411529b8dd..2de21cef819d122122c6c14794bb98594dec6630 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index a388fd751bead4a85b42beff026adedad5ddeba4..f2d7caef871ec1d0cd13caa5d12c62582d521be3 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index ce84b0fd4c8d042abcdb1928ab0e55f586899942..13b2303bdad90ab1bd30c400016459bfcd3734bb 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 903039d5b80d7b098741a8beebe548926cffce4f..222ab037c1ea297db5ca01057826ed8a3002d597 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 9ae7d6af649831b57db4af3b7edab6cb59c5ad3e..8d3bca2afa34a4fd78d2b4adca923e034bd83c14 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../../../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../../../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 491ad795085e50a1ae44d8337e36ad94967dc3fb..9b6a7217eb1d210a862e1c3d269954a02f39d45e 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 34e4a621000703295655ce71bfab22bfd9c80ade..c0b799cf8b2245eeff47d91ad3235112b7dbe2c9 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 9cd827887cfbd802586976907fddc8330ba99525..ec4da6c37ab628498a0d3b54529edc228ba06c3d 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index b52020dc0be4f5892ac95a00315cb89ab85f7885..a4c37a0fd4530e8ab6d6839095dfb5ecbf3fb42a 100644 (file)
@@ -1,12 +1,14 @@
 thisdir = class/System.Configuration
 SUBDIRS =
+
 include ../../build/rules.make
 
 LIBRARY = System.Configuration.dll
 
 LOCAL_MCS_FLAGS = -lib:$(secxml_libdir) -lib:$(bare_libdir)
+test_remove = $(LOCAL_MCS_FLAGS)
 LIB_MCS_FLAGS = -r:$(corlib) -r:System.dll -r:System.Xml.dll -r:System.Security.dll -nowarn:618 
-TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
+TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) 
 
 include ../../build/library.make
 
index ab5314c23ae018c46111b14691d965699c907b51..c4858d21b4113605309728db0e5805c61e581c58 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-secxml-net_4_5.csproj">\r
       <Project>{46F151F2-A422-4A1B-9D29-2E148CE73629}</Project>\r
-      <Name>System\System-secxml-net_4_5</Name>\r
+      <Name>System-secxml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-bare-net_4_5.csproj">\r
       <Project>{21FB091E-0F84-479E-AB16-6503D36852F9}</Project>\r
-      <Name>System.XML\System.Xml-bare-net_4_5</Name>\r
+      <Name>System.Xml-bare-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
       <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
+      <Name>System.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index b7cf6b04c72093539233a2f2a9a619887d59faa5..73f12afc504a0aaea142992804e9cb6eb5c2ecb6 100644 (file)
@@ -37,14 +37,17 @@ using Microsoft.Win32.SafeHandles;
 namespace Microsoft.Win32.SafeHandles
 {
        public sealed class SafeMemoryMappedViewHandle : SafeBuffer {
-               internal SafeMemoryMappedViewHandle (IntPtr handle, long size) : base (true) {
-                       this.handle = handle;
+               IntPtr mmap_handle;
+
+               internal SafeMemoryMappedViewHandle (IntPtr mmap_handle, IntPtr base_address, long size) : base (true) {
+                       this.mmap_handle = mmap_handle;
+                       this.handle = base_address;
                        Initialize ((ulong)size);
                }
 
                protected override bool ReleaseHandle () {
                        if (this.handle != (IntPtr) (-1))
-                               return MemoryMapImpl.Unmap (this.handle, ByteLength);
+                               return MemoryMapImpl.Unmap (this.mmap_handle);
                        throw new NotImplementedException ();
                }
        }
index 3808b8457ab5cd2c8cc46454eb461e0366ecce72..d749c862b5d95e60f5b8a03379aec66cd6c6a985 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Posix/Mono.Posix-net_4_5.csproj">\r
       <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
+      <Name>Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index fa259cd1e078314c300ae08a6f392f6bd362457e..2d1945f82ce041891c5d10035d6dcb7705647d62 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Posix/Mono.Posix-net_4_5.csproj">\r
       <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
+      <Name>Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 20973c00c6549f335cc00dce8069ff044925efc7..feaaa5ab98493990f371a852f448aaddf549e297 100644 (file)
@@ -25,7 +25,6 @@
 // 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_0
 
 using System;
@@ -33,425 +32,84 @@ using System.IO;
 using System.Collections.Generic;
 using Microsoft.Win32.SafeHandles;
 using System.Runtime.InteropServices;
-
-
-#if !MOBILE
-using Mono.Unix.Native;
-using Mono.Unix;
-#else
 using System.Runtime.CompilerServices;
-#endif
+
 
 namespace System.IO.MemoryMappedFiles
 {
-#if !MOBILE
-       internal static class MemoryMapImpl {
-               //
-               // Turns the FileMode into the first half of open(2) flags
-               //
-               static OpenFlags ToUnixMode (FileMode mode)
-               {
-                       switch (mode){
-                       case FileMode.CreateNew:
-                               return OpenFlags.O_CREAT | OpenFlags.O_EXCL;
-                               
-                       case FileMode.Create:
-                               return OpenFlags.O_CREAT | OpenFlags.O_TRUNC;
-                               
-                       case FileMode.OpenOrCreate:
-                               return OpenFlags.O_CREAT;
-                               
-                       case FileMode.Truncate:
-                               return OpenFlags.O_TRUNC;
-                               
-                       case FileMode.Append:
-                               return OpenFlags.O_APPEND;
-                       default:
-                       case FileMode.Open:
-                               return 0;
-                       }
-               }
-
-               //
-               // Turns the MemoryMappedFileAccess into the second half of open(2) flags
-               //
-               static OpenFlags ToUnixMode (MemoryMappedFileAccess access)
-               {
-                       switch (access){
-                       case MemoryMappedFileAccess.CopyOnWrite:
-                       case MemoryMappedFileAccess.ReadWriteExecute:
-                       case MemoryMappedFileAccess.ReadWrite:
-                               return OpenFlags.O_RDWR;
-                               
-                       case MemoryMappedFileAccess.Write:
-                               return OpenFlags.O_WRONLY;
-
-                       case MemoryMappedFileAccess.ReadExecute:
-                       case MemoryMappedFileAccess.Read:
-                       default:
-                               return OpenFlags.O_RDONLY;
-                       }
-               }
-
-               static MmapProts ToUnixProts (MemoryMappedFileAccess access)
-               {
-                       switch (access){
-                       case MemoryMappedFileAccess.ReadWrite:
-                               return MmapProts.PROT_WRITE | MmapProts.PROT_READ;
-                               
-                       case MemoryMappedFileAccess.Write:
-                               return MmapProts.PROT_WRITE;
-                               
-                       case MemoryMappedFileAccess.CopyOnWrite:
-                               return MmapProts.PROT_WRITE | MmapProts.PROT_READ;
-                               
-                       case MemoryMappedFileAccess.ReadExecute:
-                               return MmapProts.PROT_EXEC;
-                               
-                       case MemoryMappedFileAccess.ReadWriteExecute:
-                               return MmapProts.PROT_WRITE | MmapProts.PROT_READ | MmapProts.PROT_EXEC;
-                               
-                       case MemoryMappedFileAccess.Read:
-                       default:
-                               return MmapProts.PROT_READ;
-                       }
-               }
-
-               internal static int Open (string path, FileMode mode, ref long capacity, MemoryMappedFileAccess access)
-               {
-                       if (MonoUtil.IsUnix){
-                               Stat buf;
-                               if (Syscall.stat (path, out buf) == -1)
-                                       UnixMarshal.ThrowExceptionForLastError ();
-
-                               if (capacity == 0) {
-                                       // Special files such as FIFOs, sockets, and devices can
-                                       // have a size of 0. Specifying a capacity for these
-                                       // also makes little sense, so don't do the check if the
-                                       // file is one of these.
-                                       if (buf.st_size == 0 &&
-                                               (buf.st_mode & (FilePermissions.S_IFCHR |
-                                                               FilePermissions.S_IFBLK |
-                                                               FilePermissions.S_IFIFO |
-                                                               FilePermissions.S_IFSOCK)) == 0) {
-                                               throw new ArgumentException ("A positive capacity must be specified for a Memory Mapped File backed by an empty file.");
-                                       }
-
-                                       capacity = buf.st_size;
-                               } else if (capacity < buf.st_size) {
-                                       throw new ArgumentException ("The capacity may not be smaller than the file size.");
-                               }
-
-                               int fd = Syscall.open (path, ToUnixMode (mode) | ToUnixMode (access), FilePermissions.DEFFILEMODE);
-
-                               if (fd == -1)
-                                       UnixMarshal.ThrowExceptionForLastError ();
-                               return fd;
-                       }
-
-                       throw new NotImplementedException ();
-               }
-               
-               internal static void CloseFD (int fd) {
-                       Syscall.close (fd);
-               }
-
-               internal static void Flush (int fd) {
-                       if (MonoUtil.IsUnix)
-                               Syscall.fsync (fd);
-                       else
-                               throw new NotImplementedException ("Not implemented on Windows");
-                       
-               }
-
-               static int pagesize;
-
-               internal static unsafe void Map (int file_handle, long offset, ref long size, MemoryMappedFileAccess access, out IntPtr map_addr, out int offset_diff)
-               {
-                       if (!MonoUtil.IsUnix)
-                               throw new NotImplementedException ("Not implemented on windows.");
-
-                       if (pagesize == 0)
-                               pagesize = Syscall.getpagesize ();
-
-                       Stat buf;
-                       Syscall.fstat (file_handle, out buf);
-                       long fsize = buf.st_size;
-
-                       if (size == 0 || size > fsize)
-                               size = fsize;
-                       
-                       // Align offset
-                       long real_offset = offset & ~(pagesize - 1);
-
-                       offset_diff = (int)(offset - real_offset);
-
-                       // FIXME: Need to determine the unix fd for the file, Handle is only
-                       // equal to it by accident
-                       //
-                       // The new API no longer uses FileStream everywhere, but exposes instead
-                       // the filename (with one exception), we could move this API to use
-                       // file descriptors instead of the FileStream plus its Handle.
-                       //
-                       map_addr = Syscall.mmap (IntPtr.Zero, (ulong) size,
-                                                ToUnixProts (access),
-                                                access == MemoryMappedFileAccess.CopyOnWrite ? MmapFlags.MAP_PRIVATE : MmapFlags.MAP_SHARED,
-                                                file_handle, real_offset);
-
-                       if (map_addr == (IntPtr)(-1))
-                               throw new IOException ("mmap failed for fd#" + file_handle + "(" + offset + ", " + size + ")");
-               }
-
-               internal static bool Unmap (IntPtr map_addr, ulong map_size)
-               {
-                       if (!MonoUtil.IsUnix)
-                               return false;
-                       return Syscall.munmap (map_addr, map_size) == 0;
-               }
-
-               static void ConfigureUnixFD (IntPtr handle, HandleInheritability h)
-               {
-                       // TODO: Mono.Posix is lacking O_CLOEXEC definitions for fcntl.
-               }
-
-
-               [DllImport("kernel32", SetLastError = true)]
-               static extern bool SetHandleInformation (IntPtr hObject, int dwMask, int dwFlags);
-               static void ConfigureWindowsFD (IntPtr handle, HandleInheritability h)
-               {
-                       SetHandleInformation (handle, 1 /* FLAG_INHERIT */, h == HandleInheritability.None ? 0 : 1);
-               }
-               
-               internal static void ConfigureFD (IntPtr handle, HandleInheritability inheritability)
-               {
-                       if (MonoUtil.IsUnix)
-                               ConfigureUnixFD (handle, inheritability);
-                       else
-                               ConfigureWindowsFD (handle, inheritability);
-               }
-
-       }
-#else
        internal static class MemoryMapImpl {
-               [DllImport ("libc")]
-               static extern int fsync (int fd);
-
-               [DllImport ("libc")]
-               static extern int close (int fd);
-
-               [DllImport ("libc")]
-               static extern int fcntl (int fd, int cmd, int arg0);
-
-               //XXX check if android off_t is 64bits or not. on iOS / darwin it is.
-               [DllImport ("libc")]
-               static extern IntPtr mmap (IntPtr addr, IntPtr len, int prot, int flags, int fd, long offset);
-
-               [DllImport ("libc")]
-               static extern int munmap (IntPtr addr, IntPtr size);
-
-               [DllImport ("libc", SetLastError=true)]
-               static extern int open (string path, int flags, int access);
-
-#if MONODROID
-               [DllImport ("__Internal")]
-               static extern int monodroid_getpagesize ();
-
-               static int getpagesize ()
-               {
-                       return monodroid_getpagesize ();
-               }
-#else
-               [DllImport ("libc")]
-               static extern int getpagesize ();
-#endif
-
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               static extern long mono_filesize_from_path (string str);
+               static extern IntPtr OpenFileInternal (string path, FileMode mode, string mapName, out long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, out int error);
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               static extern long mono_filesize_from_fd (int fd);
+               static extern IntPtr OpenHandleInternal (IntPtr handle, string mapName, out long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, out int error);
 
-               //Values valid on iOS/OSX and android ndk r6
-               const int F_GETFD = 1;
-               const int F_SETFD = 2;
-               const int FD_CLOEXEC = 1;
-               const int DEFFILEMODE = 0x666;
-
-               const int O_RDONLY = 0x0;
-               const int O_WRONLY = 0x1;
-               const int O_RDWR   = 0x2;
-
-               const int PROT_READ  = 0x1;
-               const int PROT_WRITE = 0x2;
-               const int PROT_EXEC  = 0x4;
-
-               const int MAP_PRIVATE = 0x2;
-               const int MAP_SHARED  = 0x1;
-
-               const int EINVAL = 22;
-
-#if MONODROID
-               const int O_CREAT = 0x040;
-               const int O_TRUNC = 0x080;
-               const int O_EXCL  = 0x200;
-
-               const int ENAMETOOLONG = 63;
-#else
-               /* MONOTOUCH - usr/include/sys/fcntl.h */
-               const int O_CREAT = 0x0200;
-               const int O_TRUNC = 0x0400;
-               const int O_EXCL  = 0x0800;
-
-               // usr/include/sys/errno.h
-               const int ENAMETOOLONG = 63;
-#endif
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               internal extern static void CloseMapping (IntPtr handle);
 
-               static int ToUnixMode (FileMode mode)
-               {
-                       switch (mode) {
-                       case FileMode.CreateNew:
-                               return O_CREAT | O_EXCL;
-                               
-                       case FileMode.Create:
-                               return O_CREAT | O_TRUNC;
-                               
-                       case FileMode.OpenOrCreate:
-                               return O_CREAT;
-                               
-                       case FileMode.Truncate:
-                               return O_TRUNC;
-                       default:
-                       case FileMode.Open:
-                               return 0;
-                       }
-               }
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               internal extern static void Flush (IntPtr file_handle);
 
-               //
-               // Turns the MemoryMappedFileAccess into the second half of open(2) flags
-               //
-               static int ToUnixMode (MemoryMappedFileAccess access)
-               {
-                       switch (access) {
-                       case MemoryMappedFileAccess.CopyOnWrite:
-                       case MemoryMappedFileAccess.ReadWriteExecute:
-                       case MemoryMappedFileAccess.ReadWrite:
-                               return O_RDWR;
-                               
-                       case MemoryMappedFileAccess.Write:
-                               return O_WRONLY;
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               internal extern static void ConfigureHandleInheritability (IntPtr handle, HandleInheritability inheritability);
 
-                       case MemoryMappedFileAccess.ReadExecute:
-                       case MemoryMappedFileAccess.Read:
-                       default:
-                               return O_RDONLY;
-                       }
-               }
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               internal extern static bool Unmap (IntPtr mmap_handle);
 
-               static int ToUnixProts (MemoryMappedFileAccess access)
-               {
-                       switch (access){
-                       case MemoryMappedFileAccess.ReadWrite:
-                               return PROT_WRITE | PROT_READ;
-                               
-                       case MemoryMappedFileAccess.Write:
-                               return PROT_WRITE;
-                               
-                       case MemoryMappedFileAccess.CopyOnWrite:
-                               return PROT_WRITE | PROT_READ;
-                               
-                       case MemoryMappedFileAccess.ReadExecute:
-                               return PROT_EXEC;
-                               
-                       case MemoryMappedFileAccess.ReadWriteExecute:
-                               return PROT_WRITE | PROT_READ | PROT_EXEC;
-                               
-                       case MemoryMappedFileAccess.Read:
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               extern static int MapInternal (IntPtr handle, long offset, ref long size, MemoryMappedFileAccess access, out IntPtr mmap_handle, out IntPtr base_address);
+
+               internal static void Map (IntPtr handle, long offset, ref long size, MemoryMappedFileAccess access, out IntPtr mmap_handle, out IntPtr base_address)
+               {
+                       int error = MapInternal (handle, offset, ref size, access, out mmap_handle, out base_address);
+                       if (error != 0)
+                               throw CreateException (error, "<none>");
+               }
+
+               static Exception CreateException (int error, string path) {
+                       switch (error){
+                       case 1:
+                               return new ArgumentException ("A positive capacity must be specified for a Memory Mapped File backed by an empty file.");
+                       case 2:
+                               return new ArgumentOutOfRangeException ("The capacity may not be smaller than the file size.");
+                       case 3:
+                               return new FileNotFoundException (path);
+                       case 4:
+                               return new IOException ("The file already exists");
+                       case 5:
+                               return new PathTooLongException ();
+                       case 6:
+                               return new IOException ("Could not open file");
+                       case 7:
+                               return new ArgumentException ("Capacity must be bigger than zero for non-file mappings");
+                       case 8:
+                               return new ArgumentException ("Invalid FileMode value.");
+                       case 9:
+                               return new IOException ("Could not map file");
                        default:
-                               return PROT_READ;
-                       }
-               }
-
-               static void ThrowErrorFromErrno (int errno) 
-               {
-                       switch (errno) {
-                       case EINVAL:            throw new ArgumentException ();
-                       case ENAMETOOLONG:      throw new PathTooLongException ();
-                       default: throw new IOException ("Failed with errno " + errno);
+                               return new IOException ("Failed with unknown error code " + error);
                        }
                }
 
-               internal static int Open (string path, FileMode mode, ref long capacity, MemoryMappedFileAccess access)
-               {
-                       long file_size = mono_filesize_from_path (path);
-                       if (file_size < 0)
-                               throw new FileNotFoundException (path);
-
-                       if (capacity > file_size)
-                               throw new ArgumentException ("capacity");
-
-                       int fd = open (path, ToUnixMode (mode) | ToUnixMode (access), DEFFILEMODE);
-
-                       if (fd == -1)
-                               ThrowErrorFromErrno (Marshal.GetLastWin32Error ());
-                       return fd;
-               }
-
-               internal static void CloseFD (int fd)
-               {
-                       close (fd);
-               }
-
-               internal static void Flush (int fd)
-               {
-                       fsync (fd);
-               }
-
-               internal static bool Unmap (IntPtr map_addr, ulong map_size)
-               {
-                       return munmap (map_addr, (IntPtr)map_size) == 0;
-               }
-
-               static int pagesize;
-
-               internal static unsafe void Map (int file_handle, long offset, ref long size, MemoryMappedFileAccess access, out IntPtr map_addr, out int offset_diff)
+               internal static IntPtr OpenFile (string path, FileMode mode, string mapName, out long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options)
                {
-                       if (pagesize == 0)
-                               pagesize = getpagesize ();
-
-                       long fsize = mono_filesize_from_fd (file_handle);
-                       if (fsize < 0)
-                               throw new FileNotFoundException ();
-
-                       if (size == 0 || size > fsize)
-                               size = fsize;
-                       
-                       // Align offset
-                       long real_offset = offset & ~(pagesize - 1);
-
-                       offset_diff = (int)(offset - real_offset);
-
-                       map_addr = mmap (IntPtr.Zero, (IntPtr) size,
-                                                ToUnixProts (access),
-                                                access == MemoryMappedFileAccess.CopyOnWrite ? MAP_PRIVATE : MAP_SHARED,
-                                                file_handle, real_offset);
-
-                       if (map_addr == (IntPtr)(-1))
-                               throw new IOException ("mmap failed for fd#" + file_handle + "(" + offset + ", " + size + ")");
+                       int error = 0;
+                       IntPtr res = OpenFileInternal (path, mode, mapName, out capacity, access, options, out error);
+                       if (error != 0)
+                               throw CreateException (error, path);
+                       return res;
                }
 
-               internal static void ConfigureFD (IntPtr handle, HandleInheritability inheritability)
+               internal static IntPtr OpenHandle (IntPtr handle, string mapName, out long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options)
                {
-                       int fd = (int)handle;
-                       int flags = fcntl (fd, F_GETFD, 0);
-                       if (inheritability == HandleInheritability.None)
-                               flags &= ~FD_CLOEXEC;
-                       else
-                               flags |= FD_CLOEXEC;
-                       fcntl (fd, F_SETFD, flags);
+                       int error = 0;
+                       IntPtr res = OpenHandleInternal (handle, mapName, out capacity, access, options, out error);
+                       if (error != 0)
+                               throw CreateException (error, "<none>");
+                       return res;
                }
-
        }
-#endif
+
 
        public class MemoryMappedFile : IDisposable {
                MemoryMappedFileAccess fileAccess;
@@ -466,7 +124,7 @@ namespace System.IO.MemoryMappedFiles
                //
                FileStream stream;
                bool keepOpen;
-               int unix_fd;
+               IntPtr handle;
 
                public static MemoryMappedFile CreateFromFile (string path)
                {
@@ -475,7 +133,21 @@ namespace System.IO.MemoryMappedFiles
 
                public static MemoryMappedFile CreateFromFile (string path, FileMode mode)
                {
-                       return CreateFromFile (path, mode, null, 0, MemoryMappedFileAccess.ReadWrite);
+                       long capacity = 0;
+                       if (path == null)
+                               throw new ArgumentNullException ("path");
+                       if (path.Length == 0)
+                               throw new ArgumentException ("path");
+                       if (mode == FileMode.Append)
+                               throw new ArgumentException ("mode");
+
+                       IntPtr handle = MemoryMapImpl.OpenFile (path, mode, null, out capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.DelayAllocatePages);
+
+                       return new MemoryMappedFile () {
+                               handle = handle,
+                               fileAccess = MemoryMappedFileAccess.ReadWrite,
+                               fileCapacity = capacity
+                       };
                }
 
                public static MemoryMappedFile CreateFromFile (string path, FileMode mode, string mapName)
@@ -501,26 +173,21 @@ namespace System.IO.MemoryMappedFiles
                        if (capacity < 0)
                                throw new ArgumentOutOfRangeException ("capacity");
 
-                       int fd = MemoryMapImpl.Open (path, mode, ref capacity, access);
+                       IntPtr handle = MemoryMapImpl.OpenFile (path, mode, mapName, out capacity, access, MemoryMappedFileOptions.DelayAllocatePages);
                        
                        return new MemoryMappedFile () {
-                               unix_fd = fd,
+                               handle = handle,
                                fileAccess = access,
                                name = mapName,
                                fileCapacity = capacity
                        };
                }
 
-#if MOBILE
-               public static MemoryMappedFile CreateFromFile (FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access,
-                                                              HandleInheritability inheritability,
-                                                              bool leaveOpen)
-#else
+
                [MonoLimitation ("memoryMappedFileSecurity is currently ignored")]
                public static MemoryMappedFile CreateFromFile (FileStream fileStream, string mapName, long capacity, MemoryMappedFileAccess access,
                                                               MemoryMappedFileSecurity memoryMappedFileSecurity, HandleInheritability inheritability,
                                                               bool leaveOpen)
-#endif
                {
                        if (fileStream == null)
                                throw new ArgumentNullException ("fileStream");
@@ -529,86 +196,92 @@ namespace System.IO.MemoryMappedFiles
                        if ((!MonoUtil.IsUnix && capacity == 0 && fileStream.Length == 0) || (capacity > fileStream.Length))
                                throw new ArgumentException ("capacity");
 
-                       MemoryMapImpl.ConfigureFD (fileStream.Handle, inheritability);
+                       IntPtr handle = MemoryMapImpl.OpenHandle (fileStream.Handle, mapName, out capacity, access, MemoryMappedFileOptions.DelayAllocatePages);
+                       
+                       MemoryMapImpl.ConfigureHandleInheritability (handle, inheritability);
                                
                        return new MemoryMappedFile () {
-                               stream = fileStream,
+                               handle = handle,
                                fileAccess = access,
                                name = mapName,
                                fileCapacity = capacity,
+
+                               stream = fileStream,
                                keepOpen = leaveOpen
                        };
                }
 
-               [MonoLimitation ("CreateNew requires that mapName be a file name on Unix")]
+
+               static MemoryMappedFile CoreShmCreate (string mapName, long capacity, MemoryMappedFileAccess access,
+                                                         MemoryMappedFileOptions options, MemoryMappedFileSecurity memoryMappedFileSecurity,
+                                                         HandleInheritability inheritability, FileMode mode)
+               {
+                       if (mapName != null && mapName.Length == 0)
+                               throw new ArgumentException ("mapName");
+                       if (capacity < 0)
+                               throw new ArgumentOutOfRangeException ("capacity");
+
+                       IntPtr handle = MemoryMapImpl.OpenFile (null, mode, mapName, out capacity, access, options);
+                       
+                       return new MemoryMappedFile () {
+                               handle = handle,
+                               fileAccess = access,
+                               name = mapName,
+                               fileCapacity = capacity
+                       };                      
+               }
+
+               [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile CreateNew (string mapName, long capacity)
                {
-#if MOBILE
-                       return CreateNew (mapName, capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.DelayAllocatePages, 0);
-#else
-                       return CreateNew (mapName, capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.DelayAllocatePages, null, 0);
-#endif
+                       return CreateNew (mapName, capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.DelayAllocatePages, null, HandleInheritability.None);
                }
 
-               [MonoLimitation ("CreateNew requires that mapName be a file name on Unix")]
+               [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile CreateNew (string mapName, long capacity, MemoryMappedFileAccess access) 
                {
-#if MOBILE
-                       return CreateNew (mapName, capacity, access, MemoryMappedFileOptions.DelayAllocatePages, 0);
-#else
-                       return CreateNew (mapName, capacity, access, MemoryMappedFileOptions.DelayAllocatePages, null, 0);
-#endif
+                       return CreateNew (mapName, capacity, access, MemoryMappedFileOptions.DelayAllocatePages, null, HandleInheritability.None);
                }
 
-#if MOBILE
-               public static MemoryMappedFile CreateNew (string mapName, long capacity, MemoryMappedFileAccess access,
-                                                         MemoryMappedFileOptions options, 
-                                                         HandleInheritability handleInheritability)
-#else
-               [MonoLimitation ("CreateNew requires that mapName be a file name on Unix; options and memoryMappedFileSecurity are ignored")]
+               [MonoLimitation ("Named mappings scope is process local; options and memoryMappedFileSecurity are ignored")]
                public static MemoryMappedFile CreateNew (string mapName, long capacity, MemoryMappedFileAccess access,
                                                          MemoryMappedFileOptions options, MemoryMappedFileSecurity memoryMappedFileSecurity,
                                                          HandleInheritability inheritability)
-#endif
                {
-                       return CreateFromFile (mapName, FileMode.CreateNew, mapName, capacity, access);
+                       return CoreShmCreate (mapName, capacity, access, options, memoryMappedFileSecurity, inheritability, FileMode.CreateNew);
                }
 
-               [MonoLimitation ("CreateOrOpen requires that mapName be a file name on Unix")]
+               [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile CreateOrOpen (string mapName, long capacity)
                {
                        return CreateOrOpen (mapName, capacity, MemoryMappedFileAccess.ReadWrite);
                }
 
-               [MonoLimitation ("CreateOrOpen requires that mapName be a file name on Unix")]
+               [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile CreateOrOpen (string mapName, long capacity, MemoryMappedFileAccess access)
                {
-                       return CreateFromFile (mapName, FileMode.OpenOrCreate, mapName, capacity, access); 
+                       return CreateOrOpen (mapName, capacity, access, MemoryMappedFileOptions.DelayAllocatePages, null, HandleInheritability.None);
                }
 
-               [MonoTODO]
-#if MOBILE
-               public static MemoryMappedFile CreateOrOpen (string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, HandleInheritability inheritability)
-#else
+               [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile CreateOrOpen (string mapName, long capacity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, MemoryMappedFileSecurity memoryMappedFileSecurity, HandleInheritability inheritability)
-#endif
                {
-                       throw new NotImplementedException ();
+                       return CoreShmCreate (mapName, capacity, access, options, memoryMappedFileSecurity, inheritability, FileMode.OpenOrCreate);
                }
 
-               [MonoTODO]
+               [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile OpenExisting (string mapName)
                {
                        throw new NotImplementedException ();
                }
 
-               [MonoTODO]
+               [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile OpenExisting (string mapName, MemoryMappedFileRights desiredAccessRights)
                {
                        throw new NotImplementedException ();
                }
 
-               [MonoTODO]
+               [MonoLimitation ("Named mappings scope is process local")]
                public static MemoryMappedFile OpenExisting (string mapName, MemoryMappedFileRights desiredAccessRights, HandleInheritability inheritability)
                {
                        throw new NotImplementedException ();
@@ -616,7 +289,7 @@ namespace System.IO.MemoryMappedFiles
 
                public MemoryMappedViewStream CreateViewStream ()
                {
-                       return CreateViewStream (0, 0);
+                       return CreateViewStream (0, 0);//FIXME this is wrong
                }
 
                public MemoryMappedViewStream CreateViewStream (long offset, long size)
@@ -626,7 +299,7 @@ namespace System.IO.MemoryMappedFiles
 
                public MemoryMappedViewStream CreateViewStream (long offset, long size, MemoryMappedFileAccess access)
                {
-                       return new MemoryMappedViewStream (stream != null ? (int)stream.Handle : unix_fd, offset, size, access);
+                       return new MemoryMappedViewStream (handle, offset, size, access);
                }
 
                public MemoryMappedViewAccessor CreateViewAccessor ()
@@ -641,9 +314,7 @@ namespace System.IO.MemoryMappedFiles
 
                public MemoryMappedViewAccessor CreateViewAccessor (long offset, long size, MemoryMappedFileAccess access)
                {
-                       int file_handle = stream != null ? (int) stream.Handle : unix_fd;
-                       
-                       return new MemoryMappedViewAccessor (file_handle, offset, size, access);
+                       return new MemoryMappedViewAccessor (handle, offset, size, access);
                }
 
                MemoryMappedFile ()
@@ -661,17 +332,15 @@ namespace System.IO.MemoryMappedFiles
                                if (stream != null){
                                        if (keepOpen == false)
                                                stream.Close ();
-                                       unix_fd = -1;
                                        stream = null;
                                }
-                               if (unix_fd != -1) {
-                                       MemoryMapImpl.CloseFD (unix_fd);
-                                       unix_fd = -1;
+                               if (handle != IntPtr.Zero) {
+                                       MemoryMapImpl.CloseMapping (handle);
+                                       handle = IntPtr.Zero;
                                }
                        }
                }
 
-#if !MOBILE
                [MonoTODO]
                public MemoryMappedFileSecurity GetAccessControl ()
                {
@@ -683,7 +352,6 @@ namespace System.IO.MemoryMappedFiles
                {
                        throw new NotImplementedException ();
                }
-#endif
 
                [MonoTODO]
                public SafeMemoryMappedFileHandle SafeMemoryMappedFileHandle {
index 0535337210d4297a24a44074269833d6f9e402df..c66acdb55c6cd6fd24bbbb9de684bd0bccd59141 100644 (file)
@@ -36,14 +36,12 @@ using Microsoft.Win32.SafeHandles;
 namespace System.IO.MemoryMappedFiles
 {
        public sealed class MemoryMappedViewAccessor : UnmanagedMemoryAccessor, IDisposable {
-               int file_handle;
-               IntPtr mmap_addr;
-               SafeMemoryMappedViewHandle handle;
+               IntPtr mmap_handle;
+               SafeMemoryMappedViewHandle safe_handle;
 
-               internal MemoryMappedViewAccessor (int file_handle, long offset, long size, MemoryMappedFileAccess access)
+               internal MemoryMappedViewAccessor (IntPtr handle, long offset, long size, MemoryMappedFileAccess access)
                {
-                       this.file_handle = file_handle;
-                       Create (offset, size, access);
+                       Create (handle, offset, size, access);
                }
 
                static FileAccess ToFileAccess (MemoryMappedFileAccess access)
@@ -64,19 +62,19 @@ namespace System.IO.MemoryMappedFiles
                        }
                }
                
-               unsafe void Create (long offset, long size, MemoryMappedFileAccess access)
+               unsafe void Create (IntPtr handle, long offset, long size, MemoryMappedFileAccess access)
                {
-                       int offset_diff;
+                       IntPtr base_address;
 
-                       MemoryMapImpl.Map (file_handle, offset, ref size, access, out mmap_addr, out offset_diff);
+                       MemoryMapImpl.Map (handle, offset, ref size, access, out mmap_handle, out base_address);
+                       safe_handle = new SafeMemoryMappedViewHandle (mmap_handle, base_address, size);
 
-                       handle = new SafeMemoryMappedViewHandle ((IntPtr)((long)mmap_addr + offset_diff), size);
-                       Initialize (handle, 0, size, ToFileAccess (access));
+                       Initialize (safe_handle, 0, size, ToFileAccess (access));
                }
 
                public SafeMemoryMappedViewHandle SafeMemoryMappedViewHandle {
                        get {
-                               return handle;
+                               return safe_handle;
                        }
                }
 
@@ -91,7 +89,7 @@ namespace System.IO.MemoryMappedFiles
 
                public void Flush ()
                {
-                       MemoryMapImpl.Flush (file_handle);
+                       MemoryMapImpl.Flush (mmap_handle);
                }
        }
 }
index 0f6aa75dc4203b5a8fd36c184ab853add906a805..651e2d0d262449e04229a281fd4bd3ff86ba26ef 100644 (file)
@@ -35,15 +35,12 @@ using Microsoft.Win32.SafeHandles;
 namespace System.IO.MemoryMappedFiles
 {
        public sealed class MemoryMappedViewStream : UnmanagedMemoryStream {
-               IntPtr mmap_addr;
-               ulong mmap_size;
+               IntPtr mmap_handle;
                object monitor;
-               int fd;
                
-               internal MemoryMappedViewStream (int fd, long offset, long size, MemoryMappedFileAccess access) {
-                       this.fd = fd;
+               internal MemoryMappedViewStream (IntPtr handle, long offset, long size, MemoryMappedFileAccess access) {
                        monitor = new Object ();
-                       CreateStream (fd, offset, size, access);
+                       CreateStream (handle, offset, size, access);
                }
 
                public SafeMemoryMappedViewHandle SafeMemoryMappedViewHandle { 
@@ -52,13 +49,13 @@ namespace System.IO.MemoryMappedFiles
                        }
                }
 
-               unsafe void CreateStream (int fd, long offset, long size, MemoryMappedFileAccess access)
+               unsafe void CreateStream (IntPtr handle, long offset, long size, MemoryMappedFileAccess access)
                {
-                       int offset_diff;
-                       mmap_size = (ulong) size;
-                       MemoryMapImpl.Map (fd, offset, ref size, access, out mmap_addr, out offset_diff);
-                       FileAccess faccess;
+                       IntPtr base_address;
+
+                       MemoryMapImpl.Map (handle, offset, ref size, access, out mmap_handle, out base_address);
 
+                       FileAccess faccess;
                        switch (access) {
                        case MemoryMappedFileAccess.ReadWrite:
                                faccess = FileAccess.ReadWrite;
@@ -72,23 +69,23 @@ namespace System.IO.MemoryMappedFiles
                        default:
                                throw new NotImplementedException ("access mode " + access + " not supported.");
                        }
-                       Initialize ((byte*)mmap_addr + offset_diff, size, size, faccess);
+                       Initialize ((byte*)base_address, size, size, faccess);
                }
                 
                protected override void Dispose (bool disposing)
                {
                        base.Dispose (disposing);
                        lock (monitor) {
-                               if (mmap_addr != (IntPtr)(-1)) {
-                                       MemoryMapImpl.Unmap (mmap_addr, mmap_size);
-                                       mmap_addr = (IntPtr)(-1);
+                               if (mmap_handle != (IntPtr)(-1)) {
+                                       MemoryMapImpl.Unmap (mmap_handle);
+                                       mmap_handle = (IntPtr)(-1);
                                }
                        }
                }
 
                public override void Flush ()
                {
-                       MemoryMapImpl.Flush (fd);
+                       MemoryMapImpl.Flush (mmap_handle);
                }
        }
 }
index 8047da25ee2487acab23f7a589e464ce9fb39416..8e47c0a8fffb0bef3483a0962ecdf6ceb2b9b99d 100644 (file)
@@ -51,6 +51,13 @@ namespace MonoTests.System.IO.MemoryMappedFiles {
                        Assert.IsTrue (thrown);
                }
 
+               static int named_index;
+               static String MkNamedMapping ()
+               {
+                       return "test-" + named_index++;
+               }
+
+
                static string tempDir = Path.Combine (Path.GetTempPath (), typeof (MemoryMappedFileTest).FullName);
 
                string fname;
@@ -92,6 +99,43 @@ namespace MonoTests.System.IO.MemoryMappedFiles {
                        }
                }
 
+               [Test]
+               public void CreateNew ()
+               {
+                       // This must succeed
+                       MemoryMappedFile.CreateNew (Path.Combine (tempDir, "createNew.test"), 8192);
+               }
+
+               [Test]
+               [ExpectedException (typeof (IOException))]
+               public void CreateNew_OnExistingFile ()
+               {
+                       // This must succeed
+                       MemoryMappedFile.CreateNew (Path.Combine (tempDir, "createNew.test"), 8192);
+                       
+                       // This should fail, the file exists
+                       MemoryMappedFile.CreateNew (Path.Combine (tempDir, "createNew.test"), 8192);
+               }
+
+               // Call this twice, it should always work
+               [Test]
+               public void CreateOrOpen_Multiple ()
+               {
+                       MemoryMappedFile.CreateOrOpen (Path.Combine (tempDir, "createOrOpen.test"), 8192);
+                       MemoryMappedFile.CreateOrOpen (Path.Combine (tempDir, "createOrOpen.test"), 8192);
+               }
+
+               [Test]
+               [ExpectedException(typeof(ArgumentOutOfRangeException))]
+               public void CreateFromFileWithSmallerCapacityThanFile ()
+               {
+                       var f = Path.Combine (tempDir, "8192-file");
+                       File.WriteAllBytes (f, new byte [8192]);
+
+                       // We are requesting fewer bytes to map.
+                       MemoryMappedFile.CreateFromFile (f, FileMode.Open, "myMap", 4192);
+               }
+       
                [Test]
                public void CreateFromFile_Null () {
                        AssertThrows<ArgumentNullException> (delegate () {
@@ -169,6 +213,98 @@ namespace MonoTests.System.IO.MemoryMappedFiles {
                                Assert.AreEqual ("Hello", s);
                        }
                }
+
+
+               [Test]
+               public void NamedMappingToInvalidFile ()
+               {
+                       var fileName = Path.Combine (tempDir, "temp_file_123");
+               if (File.Exists (fileName))
+                   File.Delete (fileName);
+               var memoryMappedFile90 = MemoryMappedFile.CreateNew (fileName, 4194304, MemoryMappedFileAccess.ReadWrite);
+               memoryMappedFile90.CreateViewStream (4186112, 3222, MemoryMappedFileAccess.Write);
+               }
+
+               [Test]
+               public void CreateTheSameAreaTwiceShouldFail ()
+               {
+                       var name = MkNamedMapping ();
+                       using (var m0 = MemoryMappedFile.CreateNew(name, 4096, MemoryMappedFileAccess.ReadWrite)) {
+                               try {
+                                       using (var m1 = MemoryMappedFile.CreateNew (name, 4096, MemoryMappedFileAccess.ReadWrite)) {
+                                               Assert.Fail ("Must fail");
+                                       }
+                               } catch (IOException) {}
+                       }
+               }
+
+               [Test]
+               public void MapAFileToAMemoryAreaShouldFail ()
+               {
+                       var name = MkNamedMapping ();
+                       using (var m0 = MemoryMappedFile.CreateNew(name, 4096, MemoryMappedFileAccess.ReadWrite)) {
+                               try {
+                                       using (var m1 = MemoryMappedFile.CreateFromFile (fname, FileMode.OpenOrCreate, name)) {
+                                               Assert.Fail ("Must fail");
+                                       }
+                               } catch (IOException) {}
+                       }
+               }
+
+               [Test]
+               public void NamedMappingsShareMemoryArea ()
+               {
+                       var name = MkNamedMapping ();
+                       using (var m0 = MemoryMappedFile.CreateNew(name, 4096, MemoryMappedFileAccess.ReadWrite)) {
+                               using (var m1 = MemoryMappedFile.CreateOrOpen (name, 4096, MemoryMappedFileAccess.ReadWrite)) {
+                                       using (MemoryMappedViewAccessor v0 = m0.CreateViewAccessor (), v1 = m1.CreateViewAccessor ()) {
+                                               v0.Write (10, 0x12345);
+                                               Assert.AreEqual (0x12345, v1.ReadInt32 (10));
+                                       }
+                               }
+                       }
+               }
+
+               [Test]
+               public void NamedFileCanBeOpen ()
+               {
+                       var name = MkNamedMapping ();
+                       using (var sw = new FileStream (fname, FileMode.Open)) {
+                               byte[] b = new byte[20];
+                               for (int i = 0; i < 20; ++i)
+                                       b[i] = 0xFF;
+                               sw.Write (b, 0, 20);
+                       }
+
+                       using (var m0 = MemoryMappedFile.CreateFromFile (fname, FileMode.Open, name)) {
+                               using (var m1 = MemoryMappedFile.CreateOrOpen (name, 4096)) {
+                                       using (MemoryMappedViewAccessor v0 = m0.CreateViewAccessor (), v1 = m1.CreateViewAccessor ()) {
+                                               v0.Write (10, 0x11223344);
+                                               Assert.AreEqual (0x11223344, v1.ReadInt32 (10));
+                                       }
+                               }
+                       }
+               }
+
+               [Test]
+               public void MapAtEdgeOfPage ()
+               {
+                       using (var f = new FileStream (fname, FileMode.Open)) {
+                               var b = new byte [4096];
+                               for (int i = 0; i < 4096; ++i)
+                                       b[i] = 0xAA;
+                               for (int i = 0; i < 2; ++i)
+                                       f.Write (b, 0, 4096);
+                       }
+                       var m0 = MemoryMappedFile.CreateFromFile (fname, FileMode.Open);
+                       var v0 = m0.CreateViewAccessor (500, 4096);
+                       var v1 = m0.CreateViewAccessor (0, 4096 * 2);
+                       for (int i = 0; i < 4096; ++i) {
+                               Assert.AreEqual (0xAA, v1.ReadByte (i + 500));
+                               v0.Write (i, (byte)0xFF);
+                               Assert.AreEqual (0xFF, v1.ReadByte (i + 500));
+                       }
+               }
        }
 }
 
index ba66db603d70144b0c00cc7b9b8e793a5d854f54..a63481f69d6cde7414f0753bbd4a153b4a3c6764 100644 (file)
@@ -93,6 +93,7 @@ System.IO.MemoryMappedFiles/MemoryMappedFile.cs
 System.IO.MemoryMappedFiles/MemoryMappedFileAccess.cs
 System.IO.MemoryMappedFiles/MemoryMappedFileOptions.cs
 System.IO.MemoryMappedFiles/MemoryMappedFileRights.cs
+System.IO.MemoryMappedFiles/MemoryMappedFileSecurity.cs
 System.IO.MemoryMappedFiles/MemoryMappedViewStream.cs
 System.IO.MemoryMappedFiles/MemoryMappedViewAccessor.cs
 Microsoft.Win32.SafeHandles/SafeMemoryMappedFileHandle.cs
index 1ee118c3084ad33a43340de872e0cbf7d2eb63ca..a8c627360dab6b08e5b73c6bfed6f83cbfc0c5e5 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1d6b5f7d052eab5b46e5bd1f13b9b55dc8faead9..adae7bd5664bd96aa5281df9e056ddb00bad7b14 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index b2f14dc0d5d072cfc33a80bcbf5ef1c33ca59a3c..a045f9fbc5fdb19fe1cfc9cf47eff62bebf5ccd1 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
       <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
+      <Name>System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 25ca6f3fe68bcc05c8141a7a2a2b915af8a6c515..82ad0c24860d92e8317c2a4befa3510f9400845b 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
       <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
+      <Name>System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../WindowsBase/WindowsBase-net_4_5.csproj">\r
       <Project>{8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D}</Project>\r
-      <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
+      <Name>WindowsBase-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index fcd40b1d6f989fd78553ca5cb7d5320567d45dfe..d0b2c9d8aa5bb63996debb474a2173e5beed2a46 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj">\r
       <Project>{BD4DF654-42EE-40E8-A3F4-8A80959E7879}</Project>\r
-      <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
+      <Name>System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj">\r
       <Project>{E9B87AE3-9A05-4146-83CC-082BE32D8EB2}</Project>\r
-      <Name>System.Data.Services.Client\System.Data.Services.Client-net_4_5</Name>\r
+      <Name>System.Data.Services.Client-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj">\r
       <Project>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</Project>\r
-      <Name>System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5</Name>\r
+      <Name>System.ServiceModel.Activation-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 3208718e7da3d2f2f594d725979c5527cbd750f5..256da0cfa142545c2a0d0605ba51a6284d2342c1 100644 (file)
@@ -136,10 +136,10 @@ namespace Mono.Data.SqlExpressions {
 
                        string str = sb.ToString ();
 
-                       if (str.IndexOf(".") == -1)
-                               return Int64.Parse (str);
-                       else
-                               return double.Parse (str);
+                       if (str.IndexOf ('.') < 0)
+                               return Int64.Parse (str, CultureInfo.InvariantCulture);
+
+                       return double.Parse (str, CultureInfo.InvariantCulture);
                }
 
                private char ProcessEscapes(char c)
@@ -327,7 +327,7 @@ namespace Mono.Data.SqlExpressions {
 
                        case '#':
                                string date = ReadString ('#');
-                               val = DateTime.Parse (date);
+                               val = DateTime.Parse (date, CultureInfo.InvariantCulture);
                                return Token.DateLiteral;
 
                        case '\'':
index 0497bb8647807fd3e20bccae0701be4b5c69c3fd..95dead37499f066bc460e7be0cb115b2c6bea82f 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
       <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
+      <Name>System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj">\r
       <Project>{CB7949AC-5FA7-4FAB-893A-8FAF436BF514}</Project>\r
-      <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
+      <Name>Mono.Data.Tds-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
       <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
+      <Name>System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index b8c4ad723029560e38590d8db53a0cea32410551..dcc8c7392f0a4a5ec9069f40f522eee9e2e7c358 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
       <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
+      <Name>System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Accessibility/Accessibility-net_4_5.csproj">\r
       <Project>{FACE8136-C95A-4788-90B2-DB0ECF7A020A}</Project>\r
-      <Name>Accessibility\Accessibility-net_4_5</Name>\r
+      <Name>Accessibility-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 0c7d629b8cfffed9a5236039a5fef7a829c9f3d9..566b6a2222b74c0577403745e9ee557fbc063303 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.DirectoryServices/System.DirectoryServices-net_4_5.csproj">\r
       <Project>{EC4E43E7-63C0-4D64-8B7A-E00C097872A5}</Project>\r
-      <Name>System.DirectoryServices\System.DirectoryServices-net_4_5</Name>\r
+      <Name>System.DirectoryServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1544be525e6b51fc4ed0b0ea7e5cde67def76af7..5c6cebd8b824f4cf6558df8ddfcbb0a69b3fd3ad 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj">\r
       <Project>{E6070FFA-2CBA-4C24-99C1-63A4F5052821}</Project>\r
-      <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
+      <Name>Novell.Directory.Ldap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 0fda4a534e1714fa7e72103d50f30e857bd14fe9..d67485ff8c28652775732e919d44ab1d284c16c5 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
       <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
+      <Name>System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 445b593b05c7a84648811a5dc4d332ba7ec0f7eb..4d0789ccd4dff5ce1002fd0e62f41f53953f2fb5 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 827bdee0881b82eb3f42d9b18bc5f9052eda5709..6e18fe690df20ea4287a77756ad21a1e29f34e86 100644 (file)
@@ -1744,7 +1744,7 @@ namespace System.Drawing
                                if (GDIPlus.Display == IntPtr.Zero) {
                                        GDIPlus.Display = GDIPlus.XOpenDisplay (IntPtr.Zero);
                                        if (GDIPlus.Display == IntPtr.Zero)
-                                               throw new NotSupportedException ("Could not open display (X-Server required. Check you DISPLAY environment variable)");
+                                               throw new NotSupportedException ("Could not open display (X-Server required. Check your DISPLAY environment variable)");
                                }
                                if (hwnd == IntPtr.Zero) {
                                        hwnd = GDIPlus.XRootWindow (GDIPlus.Display, GDIPlus.XDefaultScreen (GDIPlus.Display));
index 71a1033dd425f9add0841b445a6281c8b229f1a8..3f2cec0d706099e094f39316e7f57bacd8e45b89 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 5bb647f3bc950746d9b06d843b757e23e1b72555..c0d00ac30bdc7f7c350176bfa11c2bbc9a364eec 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
       <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
+      <Name>System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index eae409618af20b25f83753a17c4678f04834a27d..3825d4cb606c2a41caf1202d1dda6b1889061260 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.IO.Compression/System.IO.Compression-net_4_5.csproj">\r
       <Project>{BDF04E30-60D9-4279-A1DF-3291328A5AFD}</Project>\r
-      <Name>System.IO.Compression\System.IO.Compression-net_4_5</Name>\r
+      <Name>System.IO.Compression-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c19d32943e7314a5e1800a72a6fe62b1d7d63490..22c83d5bb2e4d03ebeddb47f348755765068212b 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index dd82f0b0e78cce59ff4d1737fcd381d09fb5db45..afb8ae891aed83e8729913495a87727fc25410fc 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
       <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
+      <Name>System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
       <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
+      <Name>System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 38fd187fdd5b799fcb561d800f753564ad85b7f3..17888b5d370f7f50c64a4024c6ca87bea6f6f668 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
       <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
+      <Name>System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
       <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
+      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index f978549ad5d2d9bb0eafe75b490efbb54bec5ff8..dd2198f4914af0d25408244d7c9b666e0f150851 100644 (file)
     <AssemblyName>System.Json.Microsoft</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj">\r
       <Project>{D554618C-5D38-413A-82BA-7A70B6FC61A3}</Project>\r
-      <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
+      <Name>Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 3fda9997b13caea5a91869bbe58f0d03c4b12434..ad056809095a25cabab06bbc1a0224d9a5daeed5 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index ec51f9f7ba8492ea65edb31c60398267ba19e3ec..4204826702f98f5a8229583ac9d31ee165efc08e 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration.Install/System.Configuration.Install-net_4_5.csproj">\r
       <Project>{E6E1740E-37DD-487C-8947-F1C0612D4738}</Project>\r
-      <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
+      <Name>System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 081f4191aa5f02157e49d7ce06c83eaa022942d5..2754b9d6738924410b1fb942699bc2623fd91259 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration.Install/System.Configuration.Install-net_4_5.csproj">\r
       <Project>{E6E1740E-37DD-487C-8947-F1C0612D4738}</Project>\r
-      <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
+      <Name>System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
       <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
+      <Name>System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Messaging/Mono.Messaging-net_4_5.csproj">\r
       <Project>{DDCC93B5-9425-4E9A-95DC-3400D0028508}</Project>\r
-      <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
+      <Name>Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index b738a48bc640b7895fc9da587c41d228a06d471e..1241af63ff618173deffb7c6e7fbce03e62aff8f 100644 (file)
     <AssemblyName>System.Net.Http.Formatting</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
       <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
+      <Name>System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
       <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
+      <Name>System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 612cafa47423b53c2c2ca628b1074c918edfff98..238097aeb249bf8bfc5c629fe2386f830c908ff7 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
       <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
+      <Name>System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 6ff2417947c49bd549450e1e9c951ed5b9fd1f82..06d2ae9c4e40a3333a1e2f6a644c71b99efdaeca 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index fd9e444f7edad524ffa41fde1a4bd6ec1cbba5cf..7f74497c60b8c83e56306dc25118c185f98764fe 100644 (file)
@@ -327,6 +327,11 @@ namespace System.Net.Http
 
                                var stream = await wrequest.GetRequestStreamAsync ().ConfigureAwait (false);
                                await request.Content.CopyToAsync (stream).ConfigureAwait (false);
+                       } else if (HttpMethod.Post.Equals (request.Method) || HttpMethod.Put.Equals (request.Method) || HttpMethod.Delete.Equals (request.Method)) {
+                               // Explicitly set this to make sure we're sending a "Content-Length: 0" header.
+                               // This fixes the issue that's been reported on the forums:
+                               // http://forums.xamarin.com/discussion/17770/length-required-error-in-http-post-since-latest-release
+                               wrequest.ContentLength = 0;
                        }
 
                        HttpWebResponse wresponse = null;
index edcd18fe2a424337b28762a7cd6b020d59afe185..d2871f60875b7ebafd8245f2958370f0f0bb40af 100644 (file)
@@ -533,6 +533,38 @@ namespace MonoTests.System.Net.Http
                        }
                }
 
+               [Test]
+               public void Send_Complete_NoContent ()
+               {
+                       foreach (var method in new HttpMethod[] { HttpMethod.Post, HttpMethod.Put, HttpMethod.Delete }) {
+                               bool? failed = null;
+                               var listener = CreateListener (l => {
+                                       try {
+                                               var request = l.Request;
+
+                                               Assert.AreEqual (2, request.Headers.Count, "#1");
+                                               Assert.AreEqual ("0", request.Headers ["Content-Length"], "#1b");
+                                               Assert.AreEqual (method.Method, request.HttpMethod, "#2");
+                                               failed = false;
+                                       } catch {
+                                               failed = true;
+                                       }
+                               });
+
+                               try {
+                                       var client = new HttpClient ();
+                                       var request = new HttpRequestMessage (method, LocalServer);
+                                       var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result;
+
+                                       Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100");
+                                       Assert.AreEqual (HttpStatusCode.OK, response.StatusCode, "#101");
+                                       Assert.AreEqual (false, failed, "#102");
+                               } finally {
+                                       listener.Close ();
+                               }
+                       }
+               }
+
                [Test]
                public void Send_Complete_Error ()
                {
index 5a61b0f57ed29b9a09988a086ae4287c32dacc3d..5aebaa0add7f7c1fafff803a91eb2d89de085a08 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index aa973986ecc94e174047909718c8f96252a1e254..58b950df3a6766957f3fb871b5629714d954a56a 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 48eef1e1fb7609af6245cda48a53ca4ee4bd8e29..c3d05c0943ed5799e308c99a393398196fe04b9e 100644 (file)
     <AssemblyName>System.Reactive.Core</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 8f52a18a013c92c904adf61d1f0ac79d54cf2c56..6e9d230ecf6fde88caaccda5acc05f4df0fe93fc 100644 (file)
     <AssemblyName>System.Reactive.Debugger</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
       <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
+      <Name>System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 6392053ad62a2bf7beeb5319bf7faf1a8437c506..ecd5ef66c38bb5669ca94d2b58e4e8d672809adf 100644 (file)
     <AssemblyName>System.Reactive.Experimental</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
       <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
+      <Name>System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 5173cf1de09d2d2fc49e18635ed907e09c37e36c..c7590b4de86e4a47edcc7a31ea38744e29b20fa1 100644 (file)
     <AssemblyName>System.Reactive.Interfaces</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1fb3317c962ee330e6982c3a4a7c88649ae8b2ce..48c5cb1f74049a69b9a6f1b8f630f6fdf2403cc1 100644 (file)
     <AssemblyName>System.Reactive.Linq</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 0ec36c38e1188fb5b83780fa79d5b3103ae4cd57..55671c8cbf9ce459125a2953e412476155c47edc 100644 (file)
     <AssemblyName>System.Reactive.Observable.Aliases</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
       <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
+      <Name>System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj">\r
       <Project>{8D27108A-3DD4-46D7-917E-7833A3C4D479}</Project>\r
-      <Name>System.Reactive.Providers\System.Reactive.Providers-net_4_5</Name>\r
+      <Name>System.Reactive.Providers-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c00a435d988c51c04eccdb020452c23ca0a60277..2fc9e385a4506bf4fce8534158aac707c73b0c08 100644 (file)
     <AssemblyName>System.Reactive.PlatformServices</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
       <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
+      <Name>System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 841b297835087ed007a3fa2e527b30eb4a227964..f39a6e823bceb7ad3f6cd85fd22addf9e7f157bb 100644 (file)
     <AssemblyName>System.Reactive.Providers</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
       <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
+      <Name>System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 62a25babdfce4ce18361cf11512aaa9ca9beb9c4..a9647c3b7371f29e514992b057f13b498df4ad4e 100644 (file)
     <AssemblyName>System.Reactive.Runtime.Remoting</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
       <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
+      <Name>System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1a495e4ae0622368b10fb8925cd7804aa2b03d41..639e9d73a77c469cb9f6d4025b50b61a950f45c8 100644 (file)
     <AssemblyName>System.Reactive.Windows.Forms</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
       <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
+      <Name>System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
       <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
+      <Name>System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 2141b412e481137d3a2a66700d607184b0170cea..85c8cddba105435a3270e687ead50240b77fca6c 100644 (file)
     <AssemblyName>System.Reactive.Windows.Threading</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
       <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
+      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
       <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
+      <Name>System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
       <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
+      <Name>System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../WindowsBase/WindowsBase-net_4_5.csproj">\r
       <Project>{8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D}</Project>\r
-      <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
+      <Name>WindowsBase-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index aaca2b059f5ec410b6ba8af5d3e5ca2d3164a09b..40003195c3e8384ebc1a0fd12e056b6d3987a725 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index cbeccdbf9801ca7b9edbd9c8f6d2b5debd41c3df..e8cfc440b4699a6a99e38cc4daa5d3a699d13024 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
       <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
+      <Name>System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 244d5504fffb741ca2785e5673f88a1443e604e4..82d13338a769e3a2ebcce0b46f1dfc876dd3b174 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
       <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 83f5eeff79a1e4d45f3ba82f9369c265bc525826..9ca8bba321d6f5aa872a886f0b2232079b2906fd 100644 (file)
@@ -218,7 +218,7 @@ namespace System.Runtime.Remoting.Channels.Tcp
                                        try {
                                                if (!threadPool.RunThread (new ThreadStart (reader.ProcessMessages)))
                                                        socket.Close ();
-                                       } catch (Exception) 
+                                       } catch (Exception e
                                        {
 #if DEBUG
                                                Console.WriteLine("Exception caught in TcpServerChannel.WaitForConnections during start process message: {0} {1}", e.GetType(), e.Message);
@@ -226,7 +226,7 @@ namespace System.Runtime.Remoting.Channels.Tcp
                                        }
                                }
                        }
-                       catch (Exception)
+                       catch (Exception e)
                        {
 #if DEBUG
                                Console.WriteLine("Exception caught in TcpServerChannel.WaitForConnections, stop channel's thread : {0} {1}", e.GetType(), e.Message);
index 52954456e5cb5675db267145c203b48f65860007..aa99a6554872244ad712418160a8fe74aa1ab473 100644 (file)
@@ -169,7 +169,7 @@ namespace System.Runtime.Remoting.Channels
                                try {
                                        work ();
                                }
-                               catch (Exception)
+                               catch (Exception ex)
                                {
 #if DEBUG
                                        Console.WriteLine("The exception was caught during RemotingThreadPool.PoolThread - work: {0}, {1}", ex.GetType(), ex.Message);
index 27813db136caac4be7d986d68bd7a477b71e9de0..b9862693a57901d29bd93629f141a4dd4b4db59f 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index fe1c9a98ead526ec887a211fb53160fc247b47bc..ef8b730315a13a09c119f1971a28e1965ccd1406 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 5808c10c4c56d94a9b2ede0e2a3d65c29227ac67..95e35b0a09fad0355a6b1e267c8f632213ba1c14 100755 (executable)
@@ -566,9 +566,14 @@ namespace System.Runtime.Serialization
                }
 #endif
 
-               private bool IsAny() {
+               private bool IsAny ()
+               {
                        var xpa = type.GetCustomAttribute<XmlSchemaProviderAttribute> (true);
-                       return xpa.IsAny;
+
+                       if (xpa != null)
+                               return xpa.IsAny;
+
+                       return false;
                }
        }
 }
index 3ba1539f43aab3b924268ea102de27efd318348f..d97385f225c49bf9293297830374beebb9192ea9 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-secxml-net_4_5.csproj">\r
       <Project>{46F151F2-A422-4A1B-9D29-2E148CE73629}</Project>\r
-      <Name>System\System-secxml-net_4_5</Name>\r
+      <Name>System-secxml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-bare-net_4_5.csproj">\r
       <Project>{21FB091E-0F84-479E-AB16-6503D36852F9}</Project>\r
-      <Name>System.XML\System.Xml-bare-net_4_5</Name>\r
+      <Name>System.Xml-bare-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 22073a2cfb2a423684909f05725a722b2f80e93a..7f34560859a042dc4b6ebec7092160230e223a1c 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj">\r
       <Project>{0E3CFD7E-2F93-4B5B-B7FA-2AEBE0F850C0}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-plainservice-net_4_5</Name>\r
+      <Name>System.ServiceModel-plainservice-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c0971d9e4aa9dc5b9e86a3f683dab831d688a23d..e97737daecdb24e5c3db445c11eee0e8d767a9cc 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
       <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
+      <Name>System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index ef0e827376e270087a9bcce88ae395403a02f248..318ef05c74bfc1a020d825eb592392e8a6058e8f 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 9ccf447e5bf927c49f9d28a133f3208254b409e6..9ea5bf907d66c683dec2965e5ddf5fe930b370aa 100644 (file)
@@ -121,21 +121,21 @@ namespace System.Runtime.Serialization.Json
                                        writer.WriteString (qn.Namespace);
                                } else if (TypeMap.IsDictionary (type)) {
                                        writer.WriteAttributeString ("type", "array");
-                                       var itemGetter = type.GetProperty ("Item");
-                                       var keysGetter = type.GetProperty ("Keys");
-                                       var argarr = new object [1];
-                                       foreach (object o in (IEnumerable) keysGetter.GetValue (graph, null)) {
-                                               writer.WriteStartElement ("item");
-                                               writer.WriteAttributeString ("type", "object");
-                                               // outputting a KeyValuePair as <Key .. /><Value ... />
-                                               writer.WriteStartElement ("Key");
-                                               WriteObjectContent (o, false, !(graph is Array && type.GetElementType () != typeof (object)));
-                                               writer.WriteEndElement ();
-                                               writer.WriteStartElement ("Value");
-                                               argarr [0] = o;
-                                               WriteObjectContent (itemGetter.GetValue (graph, argarr), false, !(graph is Array && type.GetElementType () != typeof (object)));
-                                               writer.WriteEndElement ();
-                                               writer.WriteEndElement ();
+                                       bool otn = !(graph is Array && type.GetElementType () != typeof (object));
+                                       var d = graph as IDictionary;
+                                       if (d != null) {
+                                               // Optimize the IDictionary case to avoid reflection
+                                               foreach (object k in d.Keys)
+                                                       WriteItem (k, d [k], otn);
+                                       } else {
+                                               // we can't typecast to IDictionary<,> and can't use dynamic for iOS support
+                                               var itemGetter = GetDictionaryProperty (type, "Item");
+                                               var keysGetter = GetDictionaryProperty (type, "Keys");
+                                               var argarr = new object [1];
+                                               foreach (object o in (IEnumerable) keysGetter.GetValue (graph, null)) {
+                                                       argarr [0] = o;
+                                                       WriteItem (o, itemGetter.GetValue (graph, argarr), otn);
+                                               }
                                        }
                                } else if (graph is Array || TypeMap.IsEnumerable (type)) {
                                        writer.WriteAttributeString ("type", "array");
@@ -162,6 +162,36 @@ throw new InvalidDataContractException (String.Format ("Type {0} cannot be seria
                        }
                }
 
+               void WriteItem (object key, object value, bool outputTypeName)
+               {
+                       writer.WriteStartElement ("item");
+                       writer.WriteAttributeString ("type", "object");
+                       // outputting a KeyValuePair as <Key .. /><Value ... />
+                       writer.WriteStartElement ("Key");
+                       WriteObjectContent (key, false, outputTypeName);
+                       writer.WriteEndElement ();
+                       writer.WriteStartElement ("Value");
+                       WriteObjectContent (value, false, outputTypeName);
+                       writer.WriteEndElement ();
+                       writer.WriteEndElement ();
+               }
+
+               PropertyInfo GetDictionaryProperty (Type type, string propertyName)
+               {
+                       var p = type.GetProperty (propertyName);
+                       if (p != null)
+                               return p;
+                       // check explicit - but the generic names might differ, e.g. TKey,TValue vs T,V
+                       var ap = type.GetProperties (BindingFlags.Instance | BindingFlags.NonPublic);
+                       foreach (var cp in ap) {
+                               if (!cp.Name.EndsWith (propertyName, StringComparison.Ordinal))
+                                       continue;
+                               if (cp.Name.StartsWith ("System.Collections.Generic.IDictionary<", StringComparison.Ordinal))
+                                       return cp;
+                       }
+                       return null;
+               }
+
                string FormatTypeName (Type type)
                {
                        return String.Format ("{0}:#{1}", type.Name, type.Namespace);
index b74e00fa02ce27174a47a389cfca81ae629ab33e..9bbf869afb323a9b6ed92eb6d0c49dd6a07242a7 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Extensions/System.Web.Extensions-net_4_5.csproj">\r
       <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
+      <Name>System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj">\r
       <Project>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</Project>\r
-      <Name>System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5</Name>\r
+      <Name>System.ServiceModel.Activation-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 7bcb40ccf8f8774cd82ff7effe091a1d0e5fab39..68d9fb6a083ce21a6a60b36523769bf4afbd47ba 100644 (file)
@@ -1453,7 +1453,24 @@ namespace MonoTests.System.Runtime.Serialization.Json
                        Assert.AreEqual (1, dict.Count, "#2");
                        Assert.AreEqual ("value", dict ["key"], "#3");
                }
-               
+
+               [Test]
+               public void ExplicitCustomDictionarySerialization ()
+               {
+                       var dict = new MyExplicitDictionary<string,string> ();
+                       dict.Add ("key", "value");
+                       var serializer = new DataContractJsonSerializer (dict.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, dict);
+                       stream.Position = 0;
+
+                       Assert.AreEqual ("[{\"Key\":\"key\",\"Value\":\"value\"}]", new StreamReader (stream).ReadToEnd (), "#1");
+                       stream.Position = 0;
+                       dict = (MyExplicitDictionary<string,string>) serializer.ReadObject (stream);
+                       Assert.AreEqual (1, dict.Count, "#2");
+                       Assert.AreEqual ("value", dict ["key"], "#3");
+               }
+
                [Test]
                public void Bug13485 ()
                {
@@ -2113,6 +2130,91 @@ public class MyDictionary<K, V> : System.Collections.Generic.IDictionary<K, V>
        }
 }
 
+public class MyExplicitDictionary<K, V> : IDictionary<K, V> {
+
+       Dictionary<K,V> dic = new Dictionary<K,V> ();
+
+       public void Add (K key, V value)
+       {
+               dic.Add (key,  value);
+       }
+
+       public bool ContainsKey (K key)
+       {
+               return dic.ContainsKey (key);
+       }
+
+       ICollection<K> IDictionary<K, V>.Keys {
+               get { return dic.Keys; }
+       }
+
+       public bool Remove (K key)
+       {
+               return dic.Remove (key);
+       }
+
+       public bool TryGetValue (K key, out V value)
+       {
+               return dic.TryGetValue (key, out value);
+       }
+
+       ICollection<V> IDictionary<K, V>.Values {
+               get { return dic.Values; }
+       }
+
+       public V this [K key] {
+               get { return dic [key]; }
+               set { dic [key] = value; }
+       }
+
+       IEnumerator IEnumerable.GetEnumerator ()
+       {
+               return dic.GetEnumerator ();
+       }
+
+       ICollection<KeyValuePair<K,V>> Coll {
+               get { return (ICollection<KeyValuePair<K,V>>) dic; }
+       }
+
+       public void Add (KeyValuePair<K, V> item)
+       {
+               Coll.Add (item);
+       }
+
+       public void Clear ()
+       {
+               dic.Clear ();
+       }
+
+       public bool Contains (KeyValuePair<K, V> item)
+       {
+               return Coll.Contains (item);
+       }
+
+       public void CopyTo (KeyValuePair<K, V> [] array, int arrayIndex)
+       {
+               Coll.CopyTo (array, arrayIndex);
+       }
+
+       public int Count {
+               get { return dic.Count; }
+       }
+
+       public bool IsReadOnly {
+               get { return Coll.IsReadOnly; }
+       }
+
+       public bool Remove (KeyValuePair<K, V> item)
+       {
+               return Coll.Remove (item);
+       }
+
+       public IEnumerator<KeyValuePair<K, V>> GetEnumerator ()
+       {
+               return Coll.GetEnumerator ();
+       }
+}
+
 [DataContract]
 public class Bug13485Type
 {
index cf1038dac22e3e1be442878d3d1b5205c5cd0848..99376fbcd64aa04eb89028734708cbfe73102a38 100644 (file)
@@ -45,7 +45,7 @@ namespace MonoTests.System.ServiceModel.Web
                [Category("NotWorking")]\r
                public void ServiceDebugBehaviorTest () {\r
 \r
-                       var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/"));\r
+                       var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/"));\r
                        ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");\r
 \r
                        Assert.AreEqual (true, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageEnabled, "HttpHelpPageEnabled #1");\r
@@ -63,7 +63,7 @@ namespace MonoTests.System.ServiceModel.Web
                [Category ("NotWorking")]\r
                public void WebHttpBehaviorTest1 () {\r
 \r
-                       var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/"));\r
+                       var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/"));\r
                        ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");\r
                        ServiceEndpoint basicHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new BasicHttpBinding (), "BasicHttpBinding");\r
 \r
@@ -83,7 +83,7 @@ namespace MonoTests.System.ServiceModel.Web
                [Category("NotWorking")]\r
                public void WebHttpBehaviorTest2 () {\r
 \r
-                       var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/"));\r
+                       var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/"));\r
                        ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");\r
                        MyWebHttpBehavior behavior = new MyWebHttpBehavior ();\r
                        behavior.ApplyDispatchBehaviorBegin += delegate {\r
@@ -103,7 +103,7 @@ namespace MonoTests.System.ServiceModel.Web
                [Test]\r
                public void ServiceBaseUriTest () {\r
 \r
-                       var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:8080/"));\r
+                       var host = new WebServiceHost (typeof (MyService), new Uri ("http://localhost:30158/"));\r
                        Assert.AreEqual (0, host.Description.Endpoints.Count, "no endpoints yet");\r
                        host.Open ();\r
                        Assert.AreEqual (1, host.Description.Endpoints.Count, "default endpoint after open");\r
@@ -136,4 +136,4 @@ namespace MonoTests.System.ServiceModel.Web
 \r
        }\r
 }\r
-#endif
\ No newline at end of file
+#endif\r
index 02d12751dc38961d4e9bc8c843c87d820be5b009..033b2cdb0c58a08e89653d2bf3c34d00b4c1e20b 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
       <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
+      <Name>System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
       <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
+      <Name>System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj">\r
       <Project>{AB4F77BB-4340-4A79-9B66-EF5B4221E1F2}</Project>\r
-      <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5</Name>\r
+      <Name>System.IdentityModel.Selectors-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
       <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
+      <Name>System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Messaging/System.Messaging-net_4_5.csproj">\r
       <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
+      <Name>System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Services/System.Web.Services-net_4_5.csproj">\r
       <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
+      <Name>System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
       <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
+      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj">\r
       <Project>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</Project>\r
-      <Name>System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5</Name>\r
+      <Name>System.ServiceModel.Activation-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 4dda1162f5c7c7091bdd63f1fcd3c0e6219cc185..56c41fea352a5f9d411c503e900168990d7ac707 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
       <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
+      <Name>System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
       <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
+      <Name>System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj">\r
       <Project>{AB4F77BB-4340-4A79-9B66-EF5B4221E1F2}</Project>\r
-      <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5</Name>\r
+      <Name>System.IdentityModel.Selectors-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
       <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
+      <Name>System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Messaging/System.Messaging-net_4_5.csproj">\r
       <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
+      <Name>System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Services/System.Web.Services-net_4_5.csproj">\r
       <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
+      <Name>System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
       <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
+      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 8f0be289fda52f3862bce040258dfe6cf38f76b3..35cd408af1a7953de60d787143a636879379fee7 100644 (file)
@@ -69,7 +69,7 @@ namespace MonoTests.System.ServiceModel.Description
                        Assert.AreEqual (MessageVersion.Soap12WSAddressing10, b.GetProperty<MessageVersion> (new BindingParameterCollection ()), "#6");
 
                        var host = new ServiceHost (typeof (MetadataExchange));
-                       host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), CreateUri ("http://localhost:8080"));
+                       host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), CreateUri ("http://localhost:30158"));
                        host.Open ();
                        try {
                                // it still does not rewrite MessageVersion.None. It's rather likely ServiceMetadataExtension which does overwriting.
@@ -96,7 +96,7 @@ namespace MonoTests.System.ServiceModel.Description
                        Assert.AreEqual(Uri.UriSchemeHttps, b.Scheme, "#8");
 
                        var host = new ServiceHost(typeof(MetadataExchange));
-                       host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), CreateUri("https://localhost:8080"));
+                       host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), CreateUri("https://localhost:30158"));
                        host.Open();
                        try
                        {
index 38bece2f990797fb71982cffafa1dc41c11b68c2..a4a22cb18d2431d467147b983992944fa0d2e5ba 100644 (file)
@@ -56,7 +56,7 @@ namespace MonoTests.System.ServiceModel.Description
 
                [Test]
                public void InitializeRuntime1 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "e1");
                                host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true });
 
@@ -93,10 +93,10 @@ namespace MonoTests.System.ServiceModel.Description
 
                [Test]
                public void InitializeRuntime2 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
-                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex_and_help") });
-                               host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageUrl = new Uri ("http://localhost:8080/mex_and_help");
+                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex_and_help") });
+                               host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageUrl = new Uri ("http://localhost:30158/mex_and_help");
 
                                Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
 
@@ -125,10 +125,10 @@ namespace MonoTests.System.ServiceModel.Description
 
                [Test]
                public void InitializeRuntime3 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
-                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") });
-                               host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageUrl = new Uri ("http://localhost:8080/help");
+                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") });
+                               host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageUrl = new Uri ("http://localhost:30158/help");
 
                                Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
 
@@ -176,9 +176,9 @@ namespace MonoTests.System.ServiceModel.Description
 
                [Test]
                public void InitializeRuntime4 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
-                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") });
+                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") });
                                host.Description.Behaviors.Remove<ServiceDebugBehavior> ();
 
                                Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
@@ -204,7 +204,7 @@ namespace MonoTests.System.ServiceModel.Description
                                Assert.AreEqual (0, ed.FilterPriority, "FilterPriority");
 
                                EndpointAddress ea = ed.EndpointAddress;
-                               Assert.AreEqual (new Uri ("http://localhost:8080/mex"), ea.Uri, "Uri");
+                               Assert.AreEqual (new Uri ("http://localhost:30158/mex"), ea.Uri, "Uri");
 
                                DispatchRuntime dr = ed.DispatchRuntime;
                                Assert.AreEqual (1, dr.Operations.Count, "Operations.Count");
@@ -221,9 +221,9 @@ namespace MonoTests.System.ServiceModel.Description
 
                [Test]
                public void ServiceMetadataExtension1 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
-                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") });
+                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") });
                                host.Description.Behaviors.Remove<ServiceDebugBehavior> ();
 
                                host.Open ();
@@ -237,9 +237,9 @@ namespace MonoTests.System.ServiceModel.Description
 
                [Test]
                public void ServiceMetadataExtension2 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:8080"))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:30158"))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
-                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:8080/mex") });
+                               host.Description.Behaviors.Add (new ServiceMetadataBehavior () { HttpGetEnabled = true, HttpGetUrl = new Uri ("http://localhost:30158/mex") });
                                host.Description.Behaviors.Remove<ServiceDebugBehavior> ();
 
                                ServiceMetadataExtension extension = new ServiceMetadataExtension ();
index adff5706c8dccf61d96feb0cb84948936ed57422..3607b4f2a02858c19731a6c55b4c1226786e131c 100644 (file)
@@ -53,7 +53,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                        // free to change if MS implementation does not make 
                        // sense.
                        DispatchRuntime r = new EndpointDispatcher (
-                               new EndpointAddress ("http://localhost:8080"), "IFoo", "urn:foo").DispatchRuntime;
+                               new EndpointAddress ("http://localhost:30158"), "IFoo", "urn:foo").DispatchRuntime;
                        Assert.AreEqual (AuditLogLocation.Default,
                                         r.SecurityAuditLogLocation, "#1");
 
@@ -153,7 +153,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
 
                void TestInstanceBehavior (MessageInspectBehavior b, string expected, Result actual, int invocations)
                {
-                       ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080"));
+                       ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158"));
                        try {
                                h.AddServiceEndpoint (typeof (IAllActions).FullName, new BasicHttpBinding (), "AllActions");
                                h.Description.Behaviors.Add (b);
@@ -167,7 +167,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                                                Assert.AreEqual (typeof (AllActions), ed.DispatchRuntime.Type, "Type property: " + ed.ContractName);
                                        }
                                }
-                               AllActionsProxy p = new AllActionsProxy (new BasicHttpBinding () { SendTimeout = TimeSpan.FromSeconds (5), ReceiveTimeout = TimeSpan.FromSeconds (5) }, new EndpointAddress ("http://localhost:8080/AllActions"));
+                               AllActionsProxy p = new AllActionsProxy (new BasicHttpBinding () { SendTimeout = TimeSpan.FromSeconds (5), ReceiveTimeout = TimeSpan.FromSeconds (5) }, new EndpointAddress ("http://localhost:30158/AllActions"));
 
                                for (int i = 0; i < invocations; ++i)
                                        p.Get (10);
index 427127e9468379bc521de683b55515859fa1c161..70efef2761cbe03739ced20a4c172d9f86f0ee5c 100644 (file)
@@ -483,12 +483,12 @@ namespace MonoTests.System.ServiceModel
                        var host = new ServiceHost (typeof (OneWayService));
                        host.AddServiceEndpoint (typeof (IOneWayService),
                                new BasicHttpBinding (),
-                               new Uri ("http://localhost:8080"));
+                               new Uri ("http://localhost:30158"));
                        host.Open ();
                        try {
                                var cf = new ChannelFactory<IOneWayService> (
                                        new BasicHttpBinding (),
-                                       new EndpointAddress ("http://localhost:8080"));
+                                       new EndpointAddress ("http://localhost:30158"));
                                var ch = cf.CreateChannel ();
                                ch.GiveMessage ("test");
                                
index a5684e24b5f9a67d0ce28ba62f03057681ab170d..d73d516cbbb1c341b565695eb7c3f7ae35ffad34 100644 (file)
@@ -159,7 +159,7 @@ namespace MonoTests.System.ServiceModel
 
                [Test]
                public void ChannelDispatchers_NoDebug () {
-                       ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080"));
+                       ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158"));
                        h.AddServiceEndpoint (typeof (AllActions).FullName, new BasicHttpBinding (), "address");
 
                        ServiceDebugBehavior b = h.Description.Behaviors.Find<ServiceDebugBehavior> ();
@@ -173,7 +173,7 @@ namespace MonoTests.System.ServiceModel
                        Assert.IsTrue (channelDispatcher.Endpoints.Count == 1, "#2");
                        EndpointAddressMessageFilter filter = channelDispatcher.Endpoints [0].AddressFilter as EndpointAddressMessageFilter;
                        Assert.IsNotNull (filter, "#3");
-                       Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:8080/address")), "#4");
+                       Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:30158/address")), "#4");
                        Assert.IsFalse (filter.IncludeHostNameInComparison, "#5");
                        Assert.IsTrue (channelDispatcher.Endpoints [0].ContractFilter is MatchAllMessageFilter, "#6");
                        } finally {
@@ -183,11 +183,11 @@ namespace MonoTests.System.ServiceModel
 
                [Test]
                public void ChannelDispatchers_WithDebug () {
-                       ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:8080"));
+                       ServiceHost h = new ServiceHost (typeof (AllActions), new Uri ("http://localhost:30158"));
                        h.AddServiceEndpoint (typeof (AllActions).FullName, new BasicHttpBinding (), "address");
                        ServiceMetadataBehavior b = new ServiceMetadataBehavior ();
                        b.HttpGetEnabled = true;
-                       b.HttpGetUrl = new Uri( "http://localhost:8080" );
+                       b.HttpGetUrl = new Uri( "http://localhost:30158" );
                        h.Description.Behaviors.Add (b);
                        h.Open ();
 
@@ -197,7 +197,7 @@ namespace MonoTests.System.ServiceModel
                        Assert.IsTrue (channelDispatcher.Endpoints.Count == 1, "#3");
                        EndpointAddressMessageFilter filter = channelDispatcher.Endpoints [0].AddressFilter as EndpointAddressMessageFilter;
                        Assert.IsNotNull (filter, "#4");
-                       Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:8080")), "#5");
+                       Assert.IsTrue (filter.Address.Equals (new EndpointAddress ("http://localhost:30158")), "#5");
                        Assert.IsFalse (filter.IncludeHostNameInComparison, "#6");
                        Assert.IsTrue (channelDispatcher.Endpoints [0].ContractFilter is MatchAllMessageFilter, "#7");
                        h.Close ();
@@ -207,7 +207,7 @@ namespace MonoTests.System.ServiceModel
                public void SpecificActionTest ()
                {
                        //EndpointDispatcher d = new EndpointDispatcher(
-                       ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:8080"));
+                       ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:30158"));
                        h.AddServiceEndpoint (typeof (Action1Interface), new BasicHttpBinding (), "address");
                                                
                        h.Open ();
@@ -222,7 +222,7 @@ namespace MonoTests.System.ServiceModel
                [Test]
                public void InitializeRuntimeBehaviors1 () {
                        HostState st = new HostState ();
-                       ServiceHost h = new ServiceHost (typeof (SpecificAction2), new Uri ("http://localhost:8080"));
+                       ServiceHost h = new ServiceHost (typeof (SpecificAction2), new Uri ("http://localhost:30158"));
                        h.AddServiceEndpoint (typeof (SpecificAction2), new BasicHttpBinding (), "temp");                       
 
                        h.Description.Behaviors.Add (new MyServiceBehavior (st, h));
@@ -241,7 +241,7 @@ namespace MonoTests.System.ServiceModel
                [Test]
                public void InitializeRuntimeBehaviors2 () {
                        HostState st = new HostState ();
-                       ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:8080"));
+                       ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://localhost:30158"));
                        h.AddServiceEndpoint (typeof (Action1Interface), new BasicHttpBinding (), "temp");
                        h.AddServiceEndpoint (typeof (Action2Interface), new BasicHttpBinding (), "temp2");
 
@@ -368,7 +368,7 @@ namespace MonoTests.System.ServiceModel
                public void AddServiceEndpoint_Directly ()
                {
                        var host = new ServiceHost (typeof (DummyService));
-                       var address = new EndpointAddress ("http://localhost:8080");
+                       var address = new EndpointAddress ("http://localhost:30158");
                        var binding = new BasicHttpBinding ();
                        var contract = ContractDescription.GetContract (typeof (IDummyService));
                        host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address));
@@ -389,7 +389,7 @@ namespace MonoTests.System.ServiceModel
                public void AddServiceEndpoint_Directly_NullBinding ()
                {
                        var host = new ServiceHost (typeof (DummyService));
-                       var address = new EndpointAddress ("http://localhost:8080");
+                       var address = new EndpointAddress ("http://localhost:30158");
                        var contract = ContractDescription.GetContract (typeof (IDummyService));
                        host.AddServiceEndpoint (new ServiceEndpoint (contract, null, address));
                }
@@ -407,7 +407,7 @@ namespace MonoTests.System.ServiceModel
                public void AddServiceEndpoint_Directly_ContractMismatch ()
                {
                        var host = new ServiceHost (typeof (DummyService));
-                       var address = new EndpointAddress ("http://localhost:8080");
+                       var address = new EndpointAddress ("http://localhost:30158");
                        var binding = new BasicHttpBinding ();
                        var contract = ContractDescription.GetContract (typeof (INotImplementedService));
                        host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address));
index f2da407498226a3bb8841918d9b92655a3e3adf7..c5e60dafff8dd1d49785ca70539e356f59b576b8 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration.Install/System.Configuration.Install-net_4_5.csproj">\r
       <Project>{E6E1740E-37DD-487C-8947-F1C0612D4738}</Project>\r
-      <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
+      <Name>System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
       <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
+      <Name>System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index dfc446c783d965fe966cfd16896837d18609deda..6587d3f69e3cb098a4974be68720cad764755a44 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 264b9bf89a0d8365acabc4e121fa0b861e943c52..923da35dfdd69cf5f9fca832bbbd9f48c3cc0934 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 95b6c8ce5366fd73e293bfba2c016b839a290d90..6c1c6451c8facb7048ee859a6dc8720624ae753c 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 58e77cdc12287302b26198566441dcec03868a9e..1fb3e263dcc5a061733bc91c6349bd5b2cf4394f 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 1a3158d1d9166468cf8c20c7925e9888a894eaf6..282b542e457271aab48c2a21c8a43db724163601 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
       <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
+      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
       <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
+      <Name>System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Extensions/System.Web.Extensions-net_4_5.csproj">\r
       <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
+      <Name>System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj">\r
       <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
+      <Name>System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Routing/System.Web.Routing-net_4_5.csproj">\r
       <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
+      <Name>System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
       <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
+      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 86d96d5ea3a8b656a92ff2f8d6402fe3c6a5085e..a2c55b0b2d9b7c6e1a0bbc2fc4c7200e893bd4e0 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Design/System.Design-net_4_5.csproj">\r
       <Project>{D4E6A482-761B-4B41-8B63-C930CA84D268}</Project>\r
-      <Name>System.Design\System.Design-net_4_5</Name>\r
+      <Name>System.Design-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
       <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
+      <Name>System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c70a18fb35279a7e1170a02759e864d3b1e0f37a..2aaa88beb04088706b0779295521c3e588dee337 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
       <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
+      <Name>System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Services/System.Web.Services-net_4_5.csproj">\r
       <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
+      <Name>System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
       <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
+      <Name>System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
       <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
+      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index f8f65c52e8b2c8091b76fa7e62a32e94b84f6f6c..70e6fc9bebd955960d0fdc9d9d2f213d37bf26e6 100644 (file)
@@ -180,16 +180,20 @@ namespace System.Web.Script.Serialization
                                return c.ConvertFrom (obj);
                        }
 
-                       /*
-                        * Take care of the special case whereas in JSON an empty string ("") really means 
-                        * an empty value 
-                        * (see: https://bugzilla.novell.com/show_bug.cgi?id=328836)
-                        */
-                       if ((targetType.IsGenericType) && (targetType.GetGenericTypeDefinition() == typeof(Nullable<>)))
-                       {
-                               string s = obj as String;
-                               if (String.IsNullOrEmpty(s))
+                       if ((targetType.IsGenericType) && (targetType.GetGenericTypeDefinition () == typeof (Nullable<>))) {
+                               if (obj is String) {
+                                       /*
+                                        * Take care of the special case whereas in JSON an empty string ("") really means 
+                                        * an empty value 
+                                        * (see: https://bugzilla.novell.com/show_bug.cgi?id=328836)
+                                        */
+                                       if(String.IsNullOrEmpty ((String)obj))
                                                return null;
+                               } else if (c.CanConvertFrom (typeof (string))) {
+                                       TypeConverter objConverter = TypeDescriptor.GetConverter (obj);
+                                       string s = objConverter.ConvertToInvariantString (obj);
+                                       return c.ConvertFromInvariantString (s);
+                               }
                        }
 
                        return Convert.ChangeType (obj, targetType);
index 5883104a95ea894d3da7243815b4396ec45f012e..995590eeb2ec6cf0c5370555a82f0e304a7babeb 100644 (file)
@@ -1365,5 +1365,28 @@ namespace MonoTests.System.Web.Script.Serialization
                        var ret2vad = (IDictionary<string,object>) ret2va [0];
                        Assert.AreEqual ("subval", ret2vad ["subkey"], "#2.4");
                }
+               
+               class ClassWithNullableEnum
+               {
+                       public MyEnum? Value { get; set; }
+               }
+               
+               [Test]
+               public void DeserializeNullableEnum ()
+               {               
+                       var jsonValues = new Dictionary<string, MyEnum?> {
+                               { "{\"Value\":0}", MyEnum.AAA},
+                               { "{\"Value\":\"0\"}", MyEnum.AAA},
+                               { "{\"Value\":null}", null}
+                       };
+                       
+                       var ser = new JavaScriptSerializer ();
+                       
+                       foreach (var kv in jsonValues)
+                       {
+                               var obj = ser.Deserialize<ClassWithNullableEnum> (kv.Key);
+                               Assert.AreEqual (kv.Value, obj.Value);
+                       }
+               }
        }
 }
index c606cfe80344bb41e19820bd51286b2b13c7c89a..59f0bb25a35fd0da3ec991e706a2d95e909df64e 100644 (file)
     <AssemblyName>System.Web.Http.SelfHost</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
       <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
+      <Name>System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
       <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
+      <Name>System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Http/System.Web.Http-net_4_5.csproj">\r
       <Project>{2EFF8684-99DB-4DD6-B3BC-7E7AA42A15FC}</Project>\r
-      <Name>System.Web.Http\System.Web.Http-net_4_5</Name>\r
+      <Name>System.Web.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj">\r
       <Project>{BFBE5444-4F21-45CF-929E-C8FBEF302F5E}</Project>\r
-      <Name>System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5</Name>\r
+      <Name>System.Net.Http.Formatting-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 76ad7746a321b3ae43460c23737b526ff0cb2d33..2bbb825c2c065c7f658464088ea7c1bd13936ba6 100644 (file)
     <AssemblyName>System.Web.Http.WebHost</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
       <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
+      <Name>System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
       <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
+      <Name>System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Http/System.Web.Http-net_4_5.csproj">\r
       <Project>{2EFF8684-99DB-4DD6-B3BC-7E7AA42A15FC}</Project>\r
-      <Name>System.Web.Http\System.Web.Http-net_4_5</Name>\r
+      <Name>System.Web.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj">\r
       <Project>{BFBE5444-4F21-45CF-929E-C8FBEF302F5E}</Project>\r
-      <Name>System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5</Name>\r
+      <Name>System.Net.Http.Formatting-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Routing/System.Web.Routing-net_4_5.csproj">\r
       <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
+      <Name>System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj">\r
       <Project>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</Project>\r
-      <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
+      <Name>Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c4fd0979fb8ef1c8788f67991e17ac586fa8079e..eea2585d2a000a1bbcdd473fb5141992f3760274 100644 (file)
     <AssemblyName>System.Web.Http</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
       <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
+      <Name>System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
       <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
+      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj">\r
       <Project>{BFBE5444-4F21-45CF-929E-C8FBEF302F5E}</Project>\r
-      <Name>System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5</Name>\r
+      <Name>System.Net.Http.Formatting-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj">\r
       <Project>{CB3E9225-3DFF-4930-BFED-1E8AE5319C32}</Project>\r
-      <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
+      <Name>System.Runtime.Caching-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
       <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
       <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
+      <Name>System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index a29e32126a38a952d3bfe5a11eb878ddb954ad47..81adf78d9ef02f217945c2dfd982f1b7399eea02 100644 (file)
     <AssemblyName>dummy-System.Web.Mvc</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj">\r
       <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
+      <Name>System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Routing/System.Web.Routing-net_4_5.csproj">\r
       <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
+      <Name>System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Extensions/System.Web.Extensions-net_4_5.csproj">\r
       <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
+      <Name>System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
       <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
+      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
       <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
+      <Name>System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 02938c10901781def230c8126e667e7976f25374..8c4cef06e96fa8c9f3d18f535d970fcb0e067eec 100644 (file)
     <AssemblyName>System.Web.Mvc</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj">\r
       <Project>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</Project>\r
-      <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
+      <Name>Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj">\r
       <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
+      <Name>System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Routing/System.Web.Routing-net_4_5.csproj">\r
       <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
+      <Name>System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Extensions/System.Web.Extensions-net_4_5.csproj">\r
       <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
+      <Name>System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
       <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
+      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
       <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
+      <Name>System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj">\r
       <Project>{CB3E9225-3DFF-4930-BFED-1E8AE5319C32}</Project>\r
-      <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
+      <Name>System.Runtime.Caching-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Razor/System.Web.Razor-net_4_5.csproj">\r
       <Project>{FF61AB24-4492-47FA-B4D3-8D961113DD08}</Project>\r
-      <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
+      <Name>System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj">\r
       <Project>{4E601800-644F-49B2-B1C9-60D3489AAC38}</Project>\r
-      <Name>System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5</Name>\r
+      <Name>System.Web.WebPages.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.WebPages/System.Web.WebPages-net_4_5.csproj">\r
       <Project>{FFDF7B0A-BD62-4E39-8A80-A42B560149C5}</Project>\r
-      <Name>System.Web.WebPages\System.Web.WebPages-net_4_5</Name>\r
+      <Name>System.Web.WebPages-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 9a1e71f3c97febdd8fd02b1aa56de2f274919d48..a3e10f1629b9a200bfbada9ff1f10211958fd9c3 100644 (file)
     <AssemblyName>System.Web.Razor</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 244f90cc4e9bac50c765b4b9f47ecc16e234bb0a..e145f1dcacb046657a4275c5a73014d4e4242c97 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj">\r
       <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
+      <Name>System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 23e0b0cc31486eceb8e7a3690c4db1360c3bd174..d52fbb6bd6db215e81c770f1996bc9eccca52e9e 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
       <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
+      <Name>System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-plainweb-net_4_5.csproj">\r
       <Project>{21892B00-1C9F-44F3-AE4C-A6A9A210CEC7}</Project>\r
-      <Name>System.Web\System.Web-plainweb-net_4_5</Name>\r
+      <Name>System.Web-plainweb-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 077c0420f7c1c642361491c20dc79e74ccea6a51..2f7b47b18e3ebf155ed8ca827576443304cb6753 100644 (file)
     <AssemblyName>System.Web.WebPages.Deployment</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj">\r
       <Project>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</Project>\r
-      <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
+      <Name>Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c346b1f19a62506f19fac6de147f8df532127727..185ea68b67a1e72caa6153d19e926152aeeb2475 100644 (file)
     <AssemblyName>System.Web.WebPages.Razor</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.WebPages/System.Web.WebPages-net_4_5.csproj">\r
       <Project>{FFDF7B0A-BD62-4E39-8A80-A42B560149C5}</Project>\r
-      <Name>System.Web.WebPages\System.Web.WebPages-net_4_5</Name>\r
+      <Name>System.Web.WebPages-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Razor/System.Web.Razor-net_4_5.csproj">\r
       <Project>{FF61AB24-4492-47FA-B4D3-8D961113DD08}</Project>\r
-      <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
+      <Name>System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index d9a6840eb0173995dc438d12187c2ec8289d4751..b4bb9b73a6ef446837eed5fc1d30b8f74b24587a 100644 (file)
     <AssemblyName>System.Web.WebPages</AssemblyName>\r
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>true</DelaySign>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj">\r
       <Project>{D554618C-5D38-413A-82BA-7A70B6FC61A3}</Project>\r
-      <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
+      <Name>Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj">\r
       <Project>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</Project>\r
-      <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
+      <Name>Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
       <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
+      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
       <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
+      <Name>System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj">\r
       <Project>{CFBE1EF0-4B98-4752-9F6A-4D61CF9DA0EF}</Project>\r
-      <Name>System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5</Name>\r
+      <Name>System.Web.WebPages.Deployment-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Razor/System.Web.Razor-net_4_5.csproj">\r
       <Project>{FF61AB24-4492-47FA-B4D3-8D961113DD08}</Project>\r
-      <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
+      <Name>System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
       <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
+      <Name>System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c55b89a4a21602bb7f4a04d966be97db10d24711..787662b4184549c387b62070dcba435b725de71f 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
       <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
+      <Name>System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
       <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj">\r
       <Project>{41476FBD-C1CB-4B3C-8078-3281EB1E0EAB}</Project>\r
-      <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
+      <Name>Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
       <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
+      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.Services/System.Web.Services-net_4_5.csproj">\r
       <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
+      <Name>System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index c0740c7185b39c7be69c24e80578460a28367ad2..5f49197e3f6a3919a03a6464f6544bf0a93af6e6 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
       <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
+      <Name>System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
       <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
+      <Name>System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj">\r
       <Project>{41476FBD-C1CB-4B3C-8078-3281EB1E0EAB}</Project>\r
-      <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
+      <Name>Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
       <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
+      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index ad18b88a3c4400cb6e3001539283f2a0057820ee..2491c9035d1985800a69c257ab282dbb5e2708d8 100644 (file)
@@ -446,7 +446,7 @@ namespace System.Web
                }
 
                [MonoTODO ("Not implemented")]
-               public void AddCacheDependency (CacheDependency[] dependencies)
+               public void AddCacheDependency (params CacheDependency[] dependencies)
                {
                        throw new NotImplementedException ();
                }
index 6af625e39451d5cab86f31139be5d33d62bc66db..462d298f6bd3e26e9611f5be6919169f8d174e5c 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
       <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+      <Name>System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
       <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
+      <Name>System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 134d7ffb49a75839094fe3b978a4a2fde7c6d6f9..e480fac38b741a68362a7d1b3ddf14938a678ef7 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 2160578776c31fc576d2664c0e0f05dcf94b9946..c52a56468ffe7eace41f8bd470fb029c2ec83a35 100644 (file)
@@ -65,8 +65,8 @@ EXTRA_DISTFILES = \
        $(xmlfiles_files:%=Test/XmlFiles/%) \
        $(nist_dom_files:%=Test/System.Xml/nist_dom/%)
 
-System.Xml.XPath/Parser.cs: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs
-       (cd System.Xml.XPath; $(topdir)/../jay/jay -ct < $(topdir)/../jay/skeleton.cs Parser.jay >> Parser.cs)
+System.Xml.XPath/$(PROFILE)_Parser.cs: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs
+       (cd System.Xml.XPath; $(topdir)/../jay/jay -ct < $(topdir)/../jay/skeleton.cs Parser.jay >> $(PROFILE)_Parser.cs)
 
 Mono.Xml.Xsl/$(PROFILE)_PatternParser.jay: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs
        sed "s/\%start Expr/\%start Pattern/" $< >$@
@@ -80,12 +80,12 @@ Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs: System.Xml.XPath/Tokenizer.cs
        cat $< >>$@
 
 ifneq (moonlight_raw, $(PROFILE))
-BUILT_SOURCES = System.Xml.XPath/Parser.cs \
+BUILT_SOURCES = System.Xml.XPath/$(PROFILE)_Parser.cs \
        Mono.Xml.Xsl/$(PROFILE)_PatternParser.cs \
        Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs
 
 CLEAN_FILES = Test/XmlFiles/xsl/result.xml \
-       System.Xml.XPath/Parser.cs \
+       System.Xml.XPath/$(PROFILE)_Parser.cs \
        Mono.Xml.Xsl/$(PROFILE)_PatternParser.cs \
        Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs
 endif
index bce17f5f00b7679272a9e4f0c343c5529ec96a02..d253b4ea411b9017e6c657af3a1b2a91863a8dce 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
@@ -472,11 +473,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-bare-net_4_5.csproj">\r
       <Project>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</Project>\r
-      <Name>System\System-bare-net_4_5</Name>\r
+      <Name>System-bare-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index e39b9a75b43aead3c0480d6a9e41e19364030189..ea6fcbeb89d213eeeed4cbd19b35de53428ac1b9 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
@@ -472,15 +473,15 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-bare-net_4_5.csproj">\r
       <Project>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</Project>\r
-      <Name>System\System-bare-net_4_5</Name>\r
+      <Name>System-bare-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index ac16218ced330daca06dd545e6c5eb5f140adf8d..9affbc6415d3ba82f58bd0669a9c303ee0e9505e 100644 (file)
@@ -1 +1 @@
-/Parser.cs
+/*_Parser.cs
index 04ad2dda799eb57bf577178edc817da7c2f6aaec..17d16132910a38e6aacef44903aa9ce0825a79d4 100644 (file)
@@ -18,7 +18,7 @@ TEST_EXTRA_DISTFILES = \
        Test/XmlFiles/*.xml \
        Test/XmlFiles/*.xaml
 
-VALID_PROFILE := $(filter 4, $(FRAMEWORK_VERSION_MAJOR))
+VALID_PROFILE := $(filter 4 monodroid monotouch, $(FRAMEWORK_VERSION_MAJOR))
 ifndef VALID_PROFILE
 LIBRARY_NAME = dummy-System.Xaml.dll
 NO_INSTALL = yes
index ff55aefc7cfce3cd0c12432529bee0e83f114e24..003f0c789e3ecdcda5dc9688b6305468f4d7624e 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property, Inherited = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class AmbientAttribute : Attribute
        {
        }
index 7a99b7960109e1d9d2c506a388ed240e41b45f41..e3da18695d97aeefc5d9cee223dd7a70d965a7ef 100755 (executable)
@@ -32,9 +32,7 @@ namespace System.Windows.Markup
 {
        [MarkupExtensionReturnType (typeof (Array))]
        [ContentProperty ("Items")]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
        public class ArrayExtension : MarkupExtension
        {
                public ArrayExtension ()
@@ -62,9 +60,7 @@ namespace System.Windows.Markup
                public Type Type { get; set; }
 
                IList items;
-#if !NET_2_1
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-#endif
                public IList Items {
                        get { return items; }
                }
index 69a8b3f0ba6530be8d9db315f9c647b3f7a1f770..7708fe7c07849e2b000375c84225a1ed013e5120 100755 (executable)
@@ -25,9 +25,7 @@ using System;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class ConstructorArgumentAttribute : Attribute
        {
                public ConstructorArgumentAttribute (string argumentName)
index f772a2bd82e4e748d32e8ec9ff3c6b04515817cb..5b3c078b70d85cc8d1f698ed7b16725a015ec6c7 100755 (executable)
@@ -29,9 +29,7 @@ namespace System.Windows.Markup
        // member regardless of this attribute.
 
        [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class ContentPropertyAttribute : Attribute
        {
                public ContentPropertyAttribute ()
index 12e10c5e151921c836a62e533c76bd5dce1fb032..d64a2a9645b2f88bed2dd535a6a76efb4a0ef87e 100755 (executable)
@@ -25,9 +25,7 @@ using System;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class ContentWrapperAttribute : Attribute
        {
                public ContentWrapperAttribute (Type contentWrapper)
@@ -36,7 +34,8 @@ namespace System.Windows.Markup
                }
                
                public Type ContentWrapper { get; private set; }
-#if !NET_2_1
+
+#if !__MOBILE__
                public override Object TypeId {
                        get { return this; }
                }
index 5556e7f43c103ab96d99d4e57f6f256f98cea47a..720a3517dcc49b4b9bbb9bb7396f47fd624d2565 100755 (executable)
@@ -28,9 +28,7 @@ using System.Globalization;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public class DateTimeValueSerializer : ValueSerializer
        {
                const DateTimeStyles styles = DateTimeStyles.RoundtripKind | DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite;
index f49ce4fb5be40643e422297b50b1b05ba510a7d3..361df14ed60e75cb5955d3b6fb42eadf600e8d47 100755 (executable)
@@ -25,9 +25,7 @@ using System;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class DependsOnAttribute : Attribute
        {
                public DependsOnAttribute (string name)
@@ -37,7 +35,7 @@ namespace System.Windows.Markup
                
                public string Name { get; private set; }
 
-#if !NET_2_1
+#if !__MOBILE__
                // really? I doubt it should be overriden.
                public override Object TypeId {
                        get { return this; }
index df7f4482bdc199f357c92fc1fadc15660fc84a9d..1664fe23a8d51f2700610ffd50b83085bac7c897 100755 (executable)
@@ -25,9 +25,7 @@ using System;
 namespace System.Windows.Markup
 {
        [AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class DictionaryKeyPropertyAttribute : Attribute
        {
                public DictionaryKeyPropertyAttribute (string name)
index 8b143b9279149fa91c7d4904747b7094321f9a67..5e6081628fdb13caddd3b5391de9aa8328c8f284 100755 (executable)
@@ -28,9 +28,7 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public interface IComponentConnector
        {
                void Connect (int connectionId, object target);
index 5c142ec0afa5204aa127983fc5c3f13791ae29ab..3035a7cbc17324750544f38ebe2b83381fdb47c8 100644 (file)
@@ -25,9 +25,7 @@ using System.Collections.Generic;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public interface INameScope
        {
                object FindName (string name);
index 65c124bfc36bf9e09c79171198914e7cb412e4e2..6a44ce005d189037525d6cabb8d170eb3dce1736 100755 (executable)
@@ -28,9 +28,7 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
        public interface IProvideValueTarget
        {
                object TargetObject { get; }
index 7ace4b70cd736c0c0b8c75461f803a147216dfdc..252ab6964cda7925c825eeb720ecbe1f0d82b80a 100755 (executable)
@@ -28,9 +28,7 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationCore_3_5)]
-#endif
        public interface IUriContext
        {
                Uri BaseUri { get; set; }
index 011c32e983a0a9da52a02a58ddd3df8bf69c2130..bfc1e0a37203e95fa42961dd257e40cc3575e4e0 100644 (file)
@@ -29,9 +29,7 @@ using System.Xaml;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public interface IValueSerializerContext : ITypeDescriptorContext, IServiceProvider
        {
                ValueSerializer GetValueSerializerFor (PropertyDescriptor descriptor);
index c78be09747135aaae652a9e1c940e2bcda68a4ca..563387c84211e53ffcb5b7c0fac342cb50bfd3ea 100755 (executable)
@@ -28,9 +28,7 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public interface IXamlTypeResolver
        {
                Type Resolve (string qualifiedTypeName);
index 9277a3ca7ac14b7305c7b343d1a5e4aa6d0f618e..f79cefd6e02637aa2f0722a33568535c1e3b49a4 100644 (file)
@@ -29,9 +29,7 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public abstract class MarkupExtension
        {
                public abstract object ProvideValue (IServiceProvider serviceProvider);
index 3ecd55b20011f6fb95f9fa4dc6bd5052204ba1a3..8e33e017cfcc6a86c08b5466e9ba5bf07ed4d2a9 100755 (executable)
@@ -25,9 +25,7 @@ using System;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class NameScopePropertyAttribute : Attribute
        {
                public NameScopePropertyAttribute (string name)
index 9aef4b4d78fd9c5da192941e53ec5f8eafbd0979..19cd2cbf598b4b8dc763ca9d219e87e2297272fe 100755 (executable)
@@ -29,9 +29,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [MarkupExtensionReturnType (typeof (Object))]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
        public class NullExtension : MarkupExtension
        {
                public override Object ProvideValue (IServiceProvider serviceProvider)
index 392968b4328338b00f767251371260fc383d2dce..040f1945a7a9a1ecc97621c2830175c0d39cd212 100755 (executable)
@@ -25,9 +25,7 @@ using System;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Assembly)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class RootNamespaceAttribute : Attribute
        {
                public RootNamespaceAttribute (string nameSpace)
index ccd2cbc95bf58b69619384af455ba5279a889a2e..44c3706b5026fb8547a09b54503f373fde658979 100755 (executable)
@@ -25,9 +25,7 @@ using System;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class RuntimeNamePropertyAttribute : Attribute
        {
                public RuntimeNamePropertyAttribute (string name)
index 465ba56521d6da30e1d76969e4564e073c5b7057..24df4f5a1694468cabab72d8a500e71f74f5680c 100755 (executable)
@@ -30,9 +30,7 @@ namespace System.Windows.Markup
 {
        [MarkupExtensionReturnType (typeof (object))]
        [TypeConverter (typeof (StaticExtensionConverter))]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
        public class StaticExtension : MarkupExtension
        {
                public StaticExtension ()
index bf4309d6e337ea94cdb4dc6327819411f3e2307a..371e3e06f8e5d1578d5d9052bb85f3a68d00c3b3 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class TrimSurroundingWhitespaceAttribute : Attribute
        {
        }
index 00af705581e3121c87b840498a40d6376ef09335..42da7a137836bac58988c6cc4200e543b47a131f 100755 (executable)
@@ -30,9 +30,7 @@ namespace System.Windows.Markup
 {
        [MarkupExtensionReturnType (typeof (Type))]
        [TypeConverter (typeof (TypeExtensionConverter))]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
-#endif
        public class TypeExtension : MarkupExtension
        {
                public TypeExtension ()
@@ -56,9 +54,7 @@ namespace System.Windows.Markup
                [ConstructorArgument ("type")]
                [DefaultValue (null)]
                public Type Type { get; set; }
-#if !NET_2_1
                [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-#endif
                public string TypeName { get; set; }
 
                public override object ProvideValue (IServiceProvider serviceProvider)
index bd66ca26145c91bd05ed25560d486ddf24473925..1898e16a207b84122475034f0ce1467f9d7a5882 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class UidPropertyAttribute : Attribute
        {
                public UidPropertyAttribute (string name)
index bee7ad659082bfcd2ccacf44197927aa1933a538..45adefabec71d38fcf1084da7983d6856481c8ec 100644 (file)
@@ -32,24 +32,19 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public abstract class ValueSerializer
        {
-#if !NET_2_1
                public static ValueSerializer GetSerializerFor (PropertyDescriptor descriptor)
                {
                        return GetSerializerFor (descriptor, null);
                }
-#endif
 
                public static ValueSerializer GetSerializerFor (Type type)
                {
                        return GetSerializerFor (type, null);
                }
 
-#if !NET_2_1
                // untested
                public static ValueSerializer GetSerializerFor (PropertyDescriptor descriptor, IValueSerializerContext context)
                {
@@ -63,7 +58,6 @@ namespace System.Windows.Markup
                                return new TypeConverterValueSerializer (tc);
                        return null;
                }
-#endif
 
                public static ValueSerializer GetSerializerFor (Type type, IValueSerializerContext context)
                {
index fdb4e951e2f2527594f71d7e1d6b9140d46ddb54..37dec5262a98df3de8018529b445576e60bef55e 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Interface, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class ValueSerializerAttribute : Attribute
        {
                public ValueSerializerAttribute (string valueSerializerTypeName)
index 893d79c1aa39e64409cca53bec99ff72185a9b6a..36cdf56aa285d65788ba72ef340c8abf98de3532 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class WhitespaceSignificantCollectionAttribute : Attribute
        {
        }
index 18978a84645a4d8b8e08a9ba1fb92e56a832dc04..4789120383bcd68f58744e8c1bab6cad5cb87797 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class XmlLangPropertyAttribute : Attribute
        {
                public XmlLangPropertyAttribute (string name)
index e77ae3597265dd4dfd5f97f8314acf36314c010c..0e16db2f15d641427a2105f327c69836d84a8ed8 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class XmlnsCompatibleWithAttribute : Attribute
        {
                public XmlnsCompatibleWithAttribute (string oldNamespace, string newNamespace)
index 078623fb0822be5851a1c87a95edc74b34e84e45..81be2dae73ddd196c5fe91c52666b4d752c79244 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class XmlnsDefinitionAttribute : Attribute
        {
                public XmlnsDefinitionAttribute (string xmlNamespace, string clrNamespace)
index 4bdf0d97aff4e1b90f6f892bae76a59a0bf9a8c0..c907c8eb427ea73da73311c2448ec497a41fb8aa 100755 (executable)
@@ -31,9 +31,7 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
        [AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
-#if !NET_2_1
        [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
-#endif
        public sealed class XmlnsPrefixAttribute : Attribute
        {
                public XmlnsPrefixAttribute (string xmlNamespace, string prefix)
index efe48c7846119cc6a95390b23b62ae7303ae79a4..7e4b8875fcf5f275b36157f24f7943a7b43bf720 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index e65e23faf1f3392431a8ec8a2a5e3e952ba1876d..10e1858726177069929565e30c18bb6fd5664b0f 100644 (file)
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
-#if !NET_2_1
        [Serializable]
-#endif
        public class XamlDuplicateMemberException : XamlException
        {
                public XamlDuplicateMemberException ()
@@ -54,25 +52,21 @@ namespace System.Xaml
                {
                }
 
-#if !NET_2_1
                protected XamlDuplicateMemberException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
                        DuplicateMember = (XamlMember) info.GetValue ("member", typeof (XamlMember));
                        ParentType = (XamlType) info.GetValue ("type", typeof (XamlType));
                }
-#endif
 
                public XamlMember DuplicateMember { get; set; }
                public XamlType ParentType { get; set; }
 
-#if !NET_2_1
                public override void GetObjectData (SerializationInfo info, StreamingContext context)
                {
                        base.GetObjectData (info, context);
                        info.AddValue ("member", DuplicateMember);
                        info.AddValue ("type", ParentType);
                }
-#endif
        }
 }
index ecccbb4ced54312cbc6e6ed09d7a5cf6e47b4799..669b2245ece833c08f7a92bc5a00746e40421a3b 100644 (file)
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
-#if !NET_2_1
        [Serializable]
-#endif
        public class XamlException : Exception
        {
                public XamlException ()
@@ -63,14 +61,12 @@ namespace System.Xaml
                        LinePosition = linePosition;
                }
 
-#if !NET_2_1
                protected XamlException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
                        LineNumber = info.GetInt32 ("lineNumber");
                        LinePosition = info.GetInt32 ("linePosition");
                }
-#endif
 
                public int LineNumber { get; protected internal set; }
                public int LinePosition { get; protected internal set; }
@@ -78,12 +74,10 @@ namespace System.Xaml
                        get { return FormatLine (base.Message, LineNumber, LinePosition); }
                }
 
-#if !NET_2_1
                public override void GetObjectData (SerializationInfo info, StreamingContext context)
                {
                        info.AddValue ("lineNumber", LineNumber);
                        info.AddValue ("linePosition", LinePosition);
                }
-#endif
        }
 }
index a24cffe420ac2bd04e0092a3e8e4aa9f30dd83ea..d98aa4c4df23df17263f16ad387601ba1d9e1fbe 100644 (file)
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
-#if !NET_2_1
        [Serializable]
-#endif
        public class XamlInternalException : XamlException
        {
                public XamlInternalException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
                {
                }
 
-#if !NET_2_1
                protected XamlInternalException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
                }
-#endif
        }
 }
index 7b85eb322d577a0c6f99de799d8cdc0603d9fe61..ad03cbf628324356cdb88b0c3942e3d793b5ee48 100644 (file)
@@ -166,7 +166,6 @@ namespace System.Xaml
                        get { return directive_ns ?? (DeclaringType == null ? null : DeclaringType.PreferredXamlNamespace); }
                }
                
-#if !NET_2_1
                public DesignerSerializationVisibility SerializationVisibility {
                        get {
                                var c= GetCustomAttributeProvider ();
@@ -174,7 +173,6 @@ namespace System.Xaml
                                return a != null ? a.Visibility : DesignerSerializationVisibility.Visible;
                        }
                }
-#endif
 
                public bool IsAttachable {
                        get { return is_attachable; }
index 89c64fe1adc83fedab9a497f348976f0af97467d..0bad880d68deecb2e0b1f408568315ae16db8888 100644 (file)
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
-#if !NET_2_1
        [Serializable]
-#endif
        public class XamlObjectReaderException : XamlException
        {
                public XamlObjectReaderException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
                {
                }
 
-#if !NET_2_1
                protected XamlObjectReaderException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
                }
-#endif
        }
 }
index b5ce0b3b803ff0a528ff2fd5957ef18cf5ec6cdb..17708cc03444f98232f6030c33a39ff923c49a9c 100644 (file)
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
-#if !NET_2_1
        [Serializable]
-#endif
        public class XamlObjectWriterException : XamlException
        {
                public XamlObjectWriterException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
                {
                }
 
-#if !NET_2_1
                protected XamlObjectWriterException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
                }
-#endif
        }
 }
index 4ecbe75e6f75bdc37341dbf99ccb4705e0b59eba..a46dded4edf8500536004b3de4e61e6420d3f66c 100644 (file)
@@ -25,7 +25,7 @@ using System.Collections.Generic;
 using System.ComponentModel;
 using System.Reflection;
 using System.Windows.Markup;
-#if !NET_2_1
+#if !__MOBILE__
 using System.Xaml.Permissions;
 #endif
 using System.Xaml.Schema;
@@ -42,7 +42,7 @@ namespace System.Xaml
                        : base (settings)
                {
                        var s = settings;
-#if !NET_2_1
+#if !__MOBILE__
                        AccessLevel = s.AccessLevel;
 #endif
                        AfterBeginInitHandler = s.AfterBeginInitHandler;
@@ -65,7 +65,7 @@ namespace System.Xaml
                public EventHandler<XamlObjectEventArgs> BeforePropertiesHandler { get; set; }
                public EventHandler<XamlSetValueEventArgs> XamlSetValueHandler { get; set; }
 
-#if !NET_2_1
+#if !__MOBILE__
                [MonoTODO ("Ignored")]
                public XamlAccessLevel AccessLevel { get; set; }
 #endif
index 1ae1667b53aff90d1e498b087153449d47cae067..4bb8340a48a274fcdc9e3e5c153e05cc5c6af772 100644 (file)
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
-#if !NET_2_1
        [Serializable]
-#endif
        public class XamlParseException : XamlException
        {
                public XamlParseException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
                {
                }
 
-#if !NET_2_1
                protected XamlParseException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
                }
-#endif
        }
 }
index de31e46de241b8dc2f9b85963f6208523579c49a..64cf91ea71cf19d1458917afd429de2f5ac76472 100644 (file)
@@ -57,10 +57,8 @@ namespace System.Xaml
                {
                        if (referenceAssemblies != null)
                                reference_assemblies = new List<Assembly> (referenceAssemblies);
-#if !NET_2_1
                        else
                                AppDomain.CurrentDomain.AssemblyLoad += OnAssemblyLoaded;
-#endif
 
                        if (settings == null)
                                return;
@@ -69,13 +67,11 @@ namespace System.Xaml
                        SupportMarkupExtensionsWithDuplicateArity = settings.SupportMarkupExtensionsWithDuplicateArity;
                }
 
-#if !NET_2_1
                ~XamlSchemaContext ()
                {
                        if (reference_assemblies == null)
                                AppDomain.CurrentDomain.AssemblyLoad -= OnAssemblyLoaded;
                }
-#endif
 
                IList<Assembly> reference_assemblies;
 
@@ -255,7 +251,6 @@ namespace System.Xaml
                        return compat_nss.TryGetValue (xamlNamespace, out compatibleNamespace);
                }
 
-#if !NET_2_1
                void OnAssemblyLoaded (object o, AssemblyLoadEventArgs e)
                {
                        if (reference_assemblies != null)
@@ -270,8 +265,7 @@ namespace System.Xaml
                        if (all_xaml_types != null)
                                FillAllXamlTypes (e.LoadedAssembly);
                }
-#endif
-               
+
                // cache updater methods
                void FillXamlNamespaces (Assembly ass)
                {
index 9681927b39be70ccc824c14961d0a2cf4c9544a3..78de4f8e4822f8b855c84365dc49d9f224f23bfc 100644 (file)
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
-#if !NET_2_1
        [Serializable]
-#endif
        public class XamlSchemaException : XamlException
        {
                public XamlSchemaException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
                {
                }
 
-#if !NET_2_1
                protected XamlSchemaException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
                }
-#endif
        }
 }
index cf686d8506f63060df7d16da6f4d368076c01327..c8026d195a452f5607331bd1422937c8fcdcd0b9 100755 (executable)
@@ -71,13 +71,11 @@ namespace System.Xaml
                        return sw.ToString ();
                }
 
-#if !NET_2_1
                public static void Save (string fileName, object instance)
                {
                        using (var xw = XmlWriter.Create (fileName, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true }))
                                Save (xw, instance);
                }
-#endif
 
                public static void Save (Stream stream, object instance)
                {
index d784b9df2d0baea103b6c753897508808c90f70f..ffa402cc7dfc3d6a2bf0d8c2284a7d1a21203be4 100644 (file)
@@ -27,9 +27,7 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
-#if !NET_2_1
        [Serializable]
-#endif
        public class XamlXmlWriterException : XamlException
        {
                public XamlXmlWriterException ()
@@ -47,11 +45,9 @@ namespace System.Xaml
                {
                }
 
-#if !NET_2_1
                protected XamlXmlWriterException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
                }
-#endif
        }
 }
index ea39aaa2447547753c089afac61ab68949e5f353..ee628c2c5fbe8ab65c38694afff240991c219a94 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index df66098df76fe8b50ea71e69a79d6f19429fdd93..0fe3b0dd4428a9cb1ff6e7c0114700ba952c3eee 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
       <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
+      <Name>System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 31b70df4c5256b47edee9b82c579452ab9eaa99f..26714d1f7bb7aa7ddf712111488f575d7e427147 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index e28d9a90cdadf4b9a00f427bc68c41e0248b00a2..8367ee9e16b6491a7e06acc4cc6c55f98b0de58a 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="System-secxml-net_4_5.csproj">\r
       <Project>{46F151F2-A422-4A1B-9D29-2E148CE73629}</Project>\r
-      <Name>System\System-secxml-net_4_5</Name>\r
+      <Name>System-secxml-net_4_5</Name>\r
       <Aliases>PrebuiltSystem</Aliases>    </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
       <Aliases>MonoSecurity</Aliases>    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index e531d22607cec03e602cef34a300738424dec6de..2e69308ad30648fa52b784f6600e590a5557874e 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-bare-net_4_5.csproj">\r
       <Project>{21FB091E-0F84-479E-AB16-6503D36852F9}</Project>\r
-      <Name>System.XML\System.Xml-bare-net_4_5</Name>\r
+      <Name>System.Xml-bare-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="System-bare-net_4_5.csproj">\r
       <Project>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</Project>\r
-      <Name>System\System-bare-net_4_5</Name>\r
+      <Name>System-bare-net_4_5</Name>\r
       <Aliases>PrebuiltSystem</Aliases>    </ProjectReference>\r
     <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
       <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+      <Name>Mono.Security-net_4_5</Name>\r
       <Aliases>MonoSecurity</Aliases>    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index b4c0ce8b69b1cb2ba325bf0bd81adaa229b173eb..181b91dbbc9bced4f86b7669fd27b2b40d5ab51b 100644 (file)
@@ -248,7 +248,14 @@ namespace System.ComponentModel {
 
                void Item_PropertyChanged (object item, PropertyChangedEventArgs args)
                {
-                       OnListChanged (new ListChangedEventArgs (ListChangedType.ItemChanged, base.IndexOf ((T) item)) );
+                       var property_info = item.GetType ().GetProperty (args.PropertyName);
+
+                       if (property_info != null) {
+                               OnListChanged (new ListChangedEventArgs (ListChangedType.ItemChanged, base.IndexOf ((T) item),
+                                                       new ReflectionPropertyDescriptor (property_info)) );
+                       } else {
+                               OnListChanged (new ListChangedEventArgs (ListChangedType.ItemChanged, base.IndexOf ((T) item)) );
+                       }
                }
 
                protected virtual void OnAddingNew (AddingNewEventArgs e)
index 940a993f7c77301121cc9be6601008b89b52a6b3..840fc5310309e5e35058f84622745aba2bcc2640 100644 (file)
@@ -79,4 +79,23 @@ namespace System.Net.NetworkInformation {
                LOOPBACK = 0x18,
                FDDI = 0xf
        }
+
+       internal enum MacOsInterfaceFlags {
+               IFF_UP = 0x1,                           /* interface is up */
+               IFF_BROADCAST = 0x2,            /* broadcast address valid */
+               IFF_DEBUG = 0x4,                        /* turn on debugging */
+               IFF_LOOPBACK = 0x8,                     /* is a loopback net */
+               IFF_POINTOPOINT = 0x10,         /* interface is point-to-point link */
+               IFF_NOTRAILERS = 0x20,          /* avoid use of trailers */
+               IFF_RUNNING = 0x40,                     /* resources allocated */
+               IFF_NOARP = 0x80,                       /* no address resolution protocol */
+               IFF_PROMISC = 0x100,            /* receive all packets */
+               IFF_ALLMULTI = 0x200,           /* receive all multicast packets */
+               IFF_OACTIVE = 0x400,            /* transmission in progress */
+               IFF_SIMPLEX = 0x800,            /* can't hear own transmissions */
+               IFF_LINK0 = 0x1000,                     /* per link layer defined bit */
+               IFF_LINK1 = 0x2000,                     /* per link layer defined bit */
+               IFF_LINK2 = 0x4000,                     /* per link layer defined bit */
+               IFF_MULTICAST = 0x8000          /* supports multicast */
+       }
 }
index 4ad2720909fd6c0ee99c6a6b767745d501638639..18b3b4716421aa12c473d35d771776f3ac25416a 100644 (file)
@@ -446,6 +446,8 @@ namespace System.Net.NetworkInformation {
                const int AF_INET  = 2;
                const int AF_INET6 = 30;
                const int AF_LINK  = 18;
+
+               private uint _ifa_flags;
                
                public static NetworkInterface [] ImplGetAllNetworkInterfaces ()
                {
@@ -465,6 +467,7 @@ namespace System.Net.NetworkInformation {
                                        NetworkInterfaceType type = NetworkInterfaceType.Unknown;
 
                                        if (addr.ifa_addr != IntPtr.Zero) {
+                                               // optain IPAddress
                                                MacOsStructs.sockaddr sockaddr = (MacOsStructs.sockaddr) Marshal.PtrToStructure (addr.ifa_addr, typeof (MacOsStructs.sockaddr));
 
                                                if (sockaddr.sa_family == AF_INET6) {
@@ -478,7 +481,10 @@ namespace System.Net.NetworkInformation {
                                                        sockaddrdl.Read (addr.ifa_addr);
 
                                                        macAddress = new byte [(int) sockaddrdl.sdl_alen];
+                                                       // copy mac address from sdl_data field starting at last index pos of interface name into array macaddress, starting
+                                                       // at index 0
                                                        Array.Copy (sockaddrdl.sdl_data, sockaddrdl.sdl_nlen, macAddress, 0, Math.Min (macAddress.Length, sockaddrdl.sdl_data.Length - sockaddrdl.sdl_nlen));
+
                                                        index = sockaddrdl.sdl_index;
 
                                                        int hwtype = (int) sockaddrdl.sdl_type;
@@ -515,14 +521,17 @@ namespace System.Net.NetworkInformation {
 
                                        MacOsNetworkInterface iface = null;
 
+                                       // create interface if not already present
                                        if (!interfaces.TryGetValue (name, out iface)) {
-                                               iface = new MacOsNetworkInterface (name);
+                                               iface = new MacOsNetworkInterface (name, addr.ifa_flags);
                                                interfaces.Add (name, iface);
                                        }
 
+                                       // if a new address has been found, add it
                                        if (!address.Equals (IPAddress.None))
                                                iface.AddAddress (address);
 
+                                       // set link layer info, if iface has macaddress or is loopback device
                                        if (macAddress != null || type == NetworkInterfaceType.Loopback)
                                                iface.SetLinkLayerInfo (index, macAddress, type);
 
@@ -541,9 +550,10 @@ namespace System.Net.NetworkInformation {
                        return result;
                }
                
-               MacOsNetworkInterface (string name)
+               MacOsNetworkInterface (string name, uint ifa_flags)
                        : base (name)
                {
+                       _ifa_flags = ifa_flags;
                }
 
                public override IPInterfaceProperties GetIPProperties ()
@@ -562,13 +572,16 @@ namespace System.Net.NetworkInformation {
 
                public override OperationalStatus OperationalStatus {
                        get {
+                               if(((MacOsInterfaceFlags)_ifa_flags & MacOsInterfaceFlags.IFF_UP) == MacOsInterfaceFlags.IFF_UP){
+                                       return OperationalStatus.Up;
+                               }
                                return OperationalStatus.Unknown;
                        }
                }
 
                public override bool SupportsMulticast {
                        get {
-                               return false;
+                               return ((MacOsInterfaceFlags)_ifa_flags & MacOsInterfaceFlags.IFF_MULTICAST) == MacOsInterfaceFlags.IFF_MULTICAST;
                        }
                }
        }
index be618771eb9ee0ad5b37fdd9157da238b21f6fb1..f570a7396506149012bed764229b3562da8d7c98 100644 (file)
@@ -181,7 +181,7 @@ namespace System.Net
                        }
 
                        value = header.Substring (beginQ, pos - beginQ);
-                       pos += 2;
+                       pos += useQuote ? 2 : 1;
                        return true;
                }
        }
index 9dbf4857ab9f986353530ccc74739d0a27e7bbb5..c86790164a3159eadb5ea451cbe26f53ca70248d 100644 (file)
@@ -1328,9 +1328,9 @@ namespace System.Net
                        });
                }
 
-               SimpleAsyncResult SetWriteStreamInner (SimpleAsyncCallback callback)
+               void SetWriteStreamInner (SimpleAsyncCallback callback)
                {
-                       return SimpleAsyncResult.Run (result => {
+                       SimpleAsyncResult.Run (result => {
                                if (bodyBuffer != null) {
                                        // The body has been written and buffered. The request "user"
                                        // won't write it again, so we must do it.
index 1a5e89ec0a36e8571f3750c8f7091ff635d8b5b1..45740306db54d46b6c7ebb44c3b1ed35a169c786 100644 (file)
@@ -3,7 +3,7 @@
 //  
 // Author: Jeffrey Stedfast <jeff@xamarin.com>
 // 
-// Copyright (c) 2012 Xamarin Inc.
+// Copyright (c) 2012-2014 Xamarin Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -83,7 +83,7 @@ namespace System.Net
                }
 
                [DllImport (CoreFoundationLibrary)]
-               extern static IntPtr CFRelease (IntPtr handle);
+               extern static void CFRelease (IntPtr handle);
 
                void Release ()
                {
@@ -110,7 +110,7 @@ namespace System.Net
                public CFArray (IntPtr handle, bool own) : base (handle, own) { }
 
                [DllImport (CoreFoundationLibrary)]
-               extern static IntPtr CFArrayCreate (IntPtr allocator, IntPtr values, int numValues, IntPtr callbacks);
+               extern static IntPtr CFArrayCreate (IntPtr allocator, IntPtr values, /* CFIndex */ IntPtr numValues, IntPtr callbacks);
                static readonly IntPtr kCFTypeArrayCallbacks;
 
                static CFArray ()
@@ -132,7 +132,7 @@ namespace System.Net
                                throw new ArgumentNullException ("values");
 
                        fixed (IntPtr *pv = values) {
-                               IntPtr handle = CFArrayCreate (IntPtr.Zero, (IntPtr) pv, values.Length, kCFTypeArrayCallbacks);
+                               IntPtr handle = CFArrayCreate (IntPtr.Zero, (IntPtr) pv, (IntPtr) values.Length, kCFTypeArrayCallbacks);
 
                                return new CFArray (handle, false);
                        }
@@ -151,18 +151,18 @@ namespace System.Net
                }
 
                [DllImport (CoreFoundationLibrary)]
-               extern static int CFArrayGetCount (IntPtr handle);
+               extern static /* CFIndex */ IntPtr CFArrayGetCount (IntPtr handle);
 
                public int Count {
-                       get { return CFArrayGetCount (Handle); }
+                       get { return (int) CFArrayGetCount (Handle); }
                }
 
                [DllImport (CoreFoundationLibrary)]
-               extern static IntPtr CFArrayGetValueAtIndex (IntPtr handle, int index);
+               extern static IntPtr CFArrayGetValueAtIndex (IntPtr handle, /* CFIndex */ IntPtr index);
 
                public IntPtr this[int index] {
                        get {
-                               return CFArrayGetValueAtIndex (Handle, index);
+                               return CFArrayGetValueAtIndex (Handle, (IntPtr) index);
                        }
                }
        }
@@ -172,7 +172,8 @@ namespace System.Net
                public CFNumber (IntPtr handle, bool own) : base (handle, own) { }
 
                [DllImport (CoreFoundationLibrary)]
-               extern static bool CFNumberGetValue (IntPtr handle, int type, out bool value);
+               [return: MarshalAs (UnmanagedType.I1)]
+               extern static bool CFNumberGetValue (IntPtr handle, /* CFNumberType */ IntPtr type, [MarshalAs (UnmanagedType.I1)] out bool value);
 
                public static bool AsBool (IntPtr handle)
                {
@@ -181,7 +182,7 @@ namespace System.Net
                        if (handle == IntPtr.Zero)
                                return false;
 
-                       CFNumberGetValue (handle, 1, out value);
+                       CFNumberGetValue (handle, (IntPtr) 1, out value);
 
                        return value;
                }
@@ -192,7 +193,8 @@ namespace System.Net
                }
 
                [DllImport (CoreFoundationLibrary)]
-               extern static bool CFNumberGetValue (IntPtr handle, int type, out int value);
+               [return: MarshalAs (UnmanagedType.I1)]
+               extern static bool CFNumberGetValue (IntPtr handle, /* CFNumberType */ IntPtr type, out int value);
 
                public static int AsInt32 (IntPtr handle)
                {
@@ -201,7 +203,8 @@ namespace System.Net
                        if (handle == IntPtr.Zero)
                                return 0;
 
-                       CFNumberGetValue (handle, 9, out value);
+                       // 9 == kCFNumberIntType == C int
+                       CFNumberGetValue (handle, (IntPtr) 9, out value);
 
                        return value;
                }
@@ -213,12 +216,12 @@ namespace System.Net
        }
 
        internal struct CFRange {
-               public int Location, Length;
+               public IntPtr Location, Length;
                
                public CFRange (int loc, int len)
                {
-                       Location = loc;
-                       Length = len;
+                       Location = (IntPtr) loc;
+                       Length = (IntPtr) len;
                }
        }
 
@@ -229,7 +232,7 @@ namespace System.Net
                public CFString (IntPtr handle, bool own) : base (handle, own) { }
 
                [DllImport (CoreFoundationLibrary)]
-               extern static IntPtr CFStringCreateWithCharacters (IntPtr alloc, IntPtr chars, int length);
+               extern static IntPtr CFStringCreateWithCharacters (IntPtr alloc, IntPtr chars, /* CFIndex */ IntPtr length);
 
                public static CFString Create (string value)
                {
@@ -237,7 +240,7 @@ namespace System.Net
 
                        unsafe {
                                fixed (char *ptr = value) {
-                                       handle = CFStringCreateWithCharacters (IntPtr.Zero, (IntPtr) ptr, value.Length);
+                                       handle = CFStringCreateWithCharacters (IntPtr.Zero, (IntPtr) ptr, (IntPtr) value.Length);
                                }
                        }
 
@@ -248,14 +251,14 @@ namespace System.Net
                }
 
                [DllImport (CoreFoundationLibrary)]
-               extern static int CFStringGetLength (IntPtr handle);
+               extern static /* CFIndex */ IntPtr CFStringGetLength (IntPtr handle);
 
                public int Length {
                        get {
                                if (str != null)
                                        return str.Length;
 
-                               return CFStringGetLength (Handle);
+                               return (int) CFStringGetLength (Handle);
                        }
                }
 
@@ -270,7 +273,7 @@ namespace System.Net
                        if (handle == IntPtr.Zero)
                                return null;
                        
-                       int len = CFStringGetLength (handle);
+                       int len = (int) CFStringGetLength (handle);
                        
                        if (len == 0)
                                return string.Empty;
index 26578856fae1beb3bc182f186d22811ce8103be5..66cdc7296feca5dbcbccaa586ad7deceeaf7d01f 100644 (file)
@@ -264,7 +264,6 @@ namespace System.Net
                                        throw new ArgumentException ("value");                          
 
                                maxServicePoints = value;
-                               RecycleServicePoints ();
                        }
                }
 
@@ -329,9 +328,6 @@ namespace System.Net
                        if (address == null)
                                throw new ArgumentNullException ("address");
 
-                       if ((servicePoints.Count % 4) == 0)
-                               RecycleServicePoints ();
-
                        var origAddress = new Uri (address.Scheme + "://" + address.Authority);
                        
                        bool usesProxy = false;
@@ -378,41 +374,6 @@ namespace System.Net
                        return sp;
                }
                
-               // Internal Methods
-
-               static void RecycleServicePoints ()
-               {
-                       lock (servicePoints) {
-                               var toRemove = new ArrayList ();
-                               var idleList = new SortedDictionary<DateTime, ServicePoint> ();
-                               IDictionaryEnumerator e = servicePoints.GetEnumerator ();
-                               while (e.MoveNext ()) {
-                                       ServicePoint sp = (ServicePoint) e.Value;
-                                       DateTime idleSince;
-                                       if (sp.CheckAvailableForRecycling (out idleSince)) {
-                                               toRemove.Add (e.Key);
-                                               continue;
-                                       }
-
-                                       while (idleList.ContainsKey (idleSince))
-                                               idleSince = idleSince.AddMilliseconds (1);
-                                       idleList.Add (idleSince, sp);
-                               }
-                               
-                               for (int i = 0; i < toRemove.Count; i++) 
-                                       servicePoints.Remove (toRemove [i]);
-
-                               if (maxServicePoints == 0 || servicePoints.Count <= maxServicePoints)
-                                       return;
-
-                               // get rid of the ones with the longest idle time
-                               foreach (var sp in idleList.Values) {
-                                       if (servicePoints.Count <= maxServicePoints)
-                                               break;
-                                       servicePoints.Remove (sp);
-                               }
-                       }
-               }
 #if SECURITY_DEP
                internal class ChainValidationHelper {
                        object sender;
index 42c94e0c14dd138e669f6ec0508b929e5d92590b..b18d2adf34a12d089e466a006cb031a7c5ccf7e4 100644 (file)
@@ -1,5 +1,5 @@
 //
-// System.Net.WebAsyncResult
+// SimpleAsyncResult.cs
 //
 // Authors:
 //     Gonzalo Paniagua Javier (gonzalo@ximian.com)
@@ -63,7 +63,7 @@ namespace System.Net
                        };
                }
 
-               public static SimpleAsyncResult Run (SimpleAsyncFunc func, SimpleAsyncCallback callback)
+               public static void Run (SimpleAsyncFunc func, SimpleAsyncCallback callback)
                {
                        var result = new SimpleAsyncResult (callback);
                        try {
@@ -72,12 +72,11 @@ namespace System.Net
                        } catch (Exception ex) {
                                result.SetCompleted (true, ex);
                        }
-                       return result;
                }
 
-               public static SimpleAsyncResult RunWithLock (object locker, SimpleAsyncFunc func, SimpleAsyncCallback callback)
+               public static void RunWithLock (object locker, SimpleAsyncFunc func, SimpleAsyncCallback callback)
                {
-                       return Run (inner => {
+                       Run (inner => {
                                bool running = func (inner);
                                if (running)
                                        Monitor.Exit (locker);
@@ -105,7 +104,6 @@ namespace System.Net
                {
                        callbackDone = false;
                        exc = null;
-                       exc = null;
                        lock (locker) {
                                isCompleted = false;
                                if (handle != null)
@@ -161,18 +159,10 @@ namespace System.Net
                {
                        if (!callbackDone && cb != null) {
                                callbackDone = true;
-//                             if (true || synch)
-                                       cb (this);
-//                             else
-//                                     ThreadPool.QueueUserWorkItem (CB, null);
+                               cb (this);
                        }
                }
 
-               void CB (object unused)
-               {
-                       cb (this);
-               }
-
                internal void WaitUntilComplete ()
                {
                        if (IsCompleted)
index 7ee338a0a266516d4ed107fcff2920b4d9cd99bd..97f9759dcc32f9675611404754a0cf6fc02eadcf 100644 (file)
@@ -1405,10 +1405,12 @@ namespace System.Net
                                                string data2 = UploadString ((Uri) args [0], (string) args [1], (string) args [2]);
                                                OnUploadStringCompleted (
                                                        new UploadStringCompletedEventArgs (data2, null, false, args [3]));
-                                       } catch (ThreadInterruptedException){
-                                               OnUploadStringCompleted (
-                                                       new UploadStringCompletedEventArgs (null, null, true, args [3]));
                                        } catch (Exception e){
+                                               if (e is ThreadInterruptedException || e.InnerException is ThreadInterruptedException) {
+                                                       OnUploadStringCompleted (
+                                                               new UploadStringCompletedEventArgs (null, null, true, args [3]));
+                                                       return;
+                                               }
                                                OnUploadStringCompleted (
                                                        new UploadStringCompletedEventArgs (null, e, false, args [3]));
                                        }});
index 54af1f449942e2ce96a96cd846085dde9ef7dbf6..0f35c49b3e4f35978e5f90a1a25de789657e056f 100644 (file)
@@ -356,8 +356,6 @@ namespace System.Net
 
                        byte [] buffer = new byte [1024];
                        MemoryStream ms = new MemoryStream ();
-                       bool gotStatus = false;
-                       WebHeaderCollection headers = null;
 
                        while (true) {
                                int n = stream.Read (buffer, 0, 1024);
@@ -369,7 +367,8 @@ namespace System.Net
                                ms.Write (buffer, 0, n);
                                int start = 0;
                                string str = null;
-                               headers = new WebHeaderCollection ();
+                               bool gotStatus = false;
+                               WebHeaderCollection headers = new WebHeaderCollection ();
                                while (ReadLine (ms.GetBuffer (), ref start, (int) ms.Length, ref str)) {
                                        if (str == null) {
                                                int contentLen = 0;
@@ -399,13 +398,22 @@ namespace System.Net
                                                continue;
                                        }
 
-                                       int spaceidx = str.IndexOf (' ');
-                                       if (spaceidx == -1) {
+                                       string[] parts = str.Split (' ');
+                                       if (parts.Length < 2) {
                                                HandleError (WebExceptionStatus.ServerProtocolViolation, null, "ReadHeaders2");
                                                return null;
                                        }
 
-                                       status = (int) UInt32.Parse (str.Substring (spaceidx + 1, 3));
+                                       if (String.Compare (parts [0], "HTTP/1.1", true) == 0)
+                                               Data.ProxyVersion = HttpVersion.Version11;
+                                       else if (String.Compare (parts [0], "HTTP/1.0", true) == 0)
+                                               Data.ProxyVersion = HttpVersion.Version10;
+                                       else {
+                                               HandleError (WebExceptionStatus.ServerProtocolViolation, null, "ReadHeaders2");
+                                               return null;
+                                       }
+
+                                       status = (int)UInt32.Parse (parts [1]);
                                        gotStatus = true;
                                }
                        }
@@ -841,6 +849,8 @@ namespace System.Net
                                string header = (sPoint.UsesProxy) ? "Proxy-Connection" : "Connection";
                                string cncHeader = (Data.Headers != null) ? Data.Headers [header] : null;
                                bool keepAlive = (Data.Version == HttpVersion.Version11 && this.keepAlive);
+                               if (Data.ProxyVersion != null && Data.ProxyVersion != HttpVersion.Version11)
+                                       keepAlive = false;
                                if (cncHeader != null) {
                                        cncHeader = cncHeader.ToLower ();
                                        keepAlive = (this.keepAlive && cncHeader.IndexOf ("keep-alive", StringComparison.Ordinal) != -1);
index 216b57f16c7547a2ef9d14f2fa155ee986fc39f8..77d19540be16bfa46129a8ce540a491513a472bf 100644 (file)
@@ -39,6 +39,7 @@ namespace System.Net
                public string StatusDescription;
                public WebHeaderCollection Headers;
                public Version Version;
+               public Version ProxyVersion;
                public Stream stream;
                public string[] Challenge;
                ReadState _readState;
index 0348aeebe4213ab89381860ab52ef1a0a83230b1..5e142154f913704bd614466144dbe5da559aa014 100644 (file)
@@ -70,14 +70,16 @@ namespace System.Net
                        //TODO: abort requests or wait for them to finish
                        lock (sPoint) {
                                closing = true;
-                               foreach (var cnc in connections) {
-                                       if (cnc.Connection == null)
-                                               continue;
-                                       cnc.Connection.Close (false);
-                                       cnc.Connection = null;
+                               var iter = connections.First;
+                               while (iter != null) {
+                                       var cnc = iter.Value.Connection;
+                                       var node = iter;
+                                       iter = iter.Next;
+
+                                       connections.Remove (node);
+                                       cnc.Close (false);
                                        OnConnectionClosed ();
                                }
-                               connections.Clear ();
                        }
                }
 
@@ -120,7 +122,7 @@ namespace System.Net
                ConnectionState FindIdleConnection ()
                {
                        foreach (var cnc in connections) {
-                               if (cnc.Busy  || cnc.Connection == null)
+                               if (cnc.Busy)
                                        continue;
 
                                connections.Remove (cnc);
@@ -140,7 +142,7 @@ namespace System.Net
                                return cnc.Connection;
                        }
 
-                       if (sPoint.ConnectionLimit > connections.Count) {
+                       if (sPoint.ConnectionLimit > connections.Count || connections.Count == 0) {
                                created = true;
                                cnc = new ConnectionState (this);
                                connections.AddFirst (cnc);
@@ -177,14 +179,11 @@ namespace System.Net
                                }
 
                                int count = 0;
-                               for (var node = connections.First; node != null; node = node.Next) {
-                                       var cnc = node.Value;
-
-                                       if (cnc.Connection == null) {
-                                               connections.Remove (node);
-                                               OnConnectionClosed ();
-                                               continue;
-                                       }
+                               var iter = connections.First;
+                               while (iter != null) {
+                                       var cnc = iter.Value;
+                                       var node = iter;
+                                       iter = iter.Next;
 
                                        ++count;
                                        if (cnc.Busy)
@@ -205,7 +204,7 @@ namespace System.Net
                                        if (connectionsToClose == null)
                                                connectionsToClose = new List<WebConnection> ();
                                        connectionsToClose.Add (cnc.Connection);
-                                       cnc.Connection = null;
+                                       connections.Remove (node);
                                }
 
                                recycled = connections.Count == 0;
@@ -224,7 +223,10 @@ namespace System.Net
                }
 
                class ConnectionState : IWebConnectionState {
-                       public WebConnection Connection;
+                       public WebConnection Connection {
+                               get;
+                               private set;
+                       }
 
                        public WebConnectionGroup Group {
                                get;
index 25c101a7d01153c4df971951aaea1f800f2a019f..b946654f329dfbf3bb9e78bfce8161dde8730c83 100644 (file)
@@ -633,9 +633,9 @@ namespace System.Net
                {
                }
 
-               internal SimpleAsyncResult SetHeadersAsync (bool setInternalLength, SimpleAsyncCallback callback)
+               internal void SetHeadersAsync (bool setInternalLength, SimpleAsyncCallback callback)
                {
-                       return SimpleAsyncResult.Run (r => SetHeadersAsync (r, setInternalLength), callback);
+                       SimpleAsyncResult.Run (r => SetHeadersAsync (r, setInternalLength), callback);
                }
 
                bool SetHeadersAsync (SimpleAsyncResult result, bool setInternalLength)
@@ -715,7 +715,7 @@ namespace System.Net
                                        WebExceptionStatus.ServerProtocolViolation, null);
                        }
 
-                       var ret = SetHeadersAsync (true, inner => {
+                       SetHeadersAsync (true, inner => {
                                if (inner.GotException) {
                                        result.SetCompleted (inner.CompletedSynchronously, inner.Exception);
                                        return;
index efd394ef5e851dffbc0c05d85b6b7228d954e750..4dc4e0a1560032964690910ab9ac72473df08d26 100644 (file)
@@ -1,5 +1,5 @@
 // Copyright (C) 2010 Novell, Inc (http://www.novell.com)
-// Copyright 2012 Xamarin Inc.
+// Copyright 2012-2014 Xamarin Inc.
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -42,26 +42,27 @@ namespace System.Security.Cryptography.X509Certificates {
                extern static IntPtr SecCertificateCreateWithData (IntPtr allocator, IntPtr nsdataRef);
                
                [DllImport (SecurityLibrary)]
-               extern static int SecTrustCreateWithCertificates (IntPtr certOrCertArray, IntPtr policies, out IntPtr sectrustref);
+               extern static /* OSStatus */ int SecTrustCreateWithCertificates (IntPtr certOrCertArray, IntPtr policies, out IntPtr sectrustref);
                
                [DllImport (SecurityLibrary)]
-               extern static IntPtr SecPolicyCreateSSL (bool server, IntPtr cfStringHostname);
+               extern static IntPtr SecPolicyCreateSSL ([MarshalAs (UnmanagedType.I1)] bool server, IntPtr cfStringHostname);
                
                [DllImport (SecurityLibrary)]
-               extern static int SecTrustEvaluate (IntPtr secTrustRef, out SecTrustResult secTrustResultTime);
+               extern static /* OSStatus */ int SecTrustEvaluate (IntPtr secTrustRef, out SecTrustResult secTrustResultTime);
 
                [DllImport (CoreFoundationLibrary, CharSet=CharSet.Unicode)]
-               extern static IntPtr CFStringCreateWithCharacters (IntPtr allocator, string str, int count);
+               extern static IntPtr CFStringCreateWithCharacters (IntPtr allocator, string str, /* CFIndex */ IntPtr count);
 
                [DllImport (CoreFoundationLibrary)]
-               unsafe extern static IntPtr CFDataCreate (IntPtr allocator, byte *bytes, IntPtr length);
+               unsafe extern static IntPtr CFDataCreate (IntPtr allocator, byte *bytes, /* CFIndex */ IntPtr length);
 
                [DllImport (CoreFoundationLibrary)]
-               unsafe extern static void CFRelease (IntPtr handle);
+               extern static void CFRelease (IntPtr handle);
 
                [DllImport (CoreFoundationLibrary)]
-               extern static IntPtr CFArrayCreate (IntPtr allocator, IntPtr values, IntPtr numValues, IntPtr callbacks);
-               
+               extern static IntPtr CFArrayCreate (IntPtr allocator, IntPtr values, /* CFIndex */ IntPtr numValues, IntPtr callbacks);
+
+               // uint32_t
                public enum SecTrustResult {
                        Invalid,
                        Proceed,
@@ -125,7 +126,7 @@ namespace System.Security.Cryptography.X509Certificates {
                                                return SecTrustResult.Deny;
                                }
                                certArray = FromIntPtrs (secCerts);
-                               host = CFStringCreateWithCharacters (IntPtr.Zero, hostName, hostName.Length);
+                               host = CFStringCreateWithCharacters (IntPtr.Zero, hostName, (IntPtr) hostName.Length);
                                sslsecpolicy = SecPolicyCreateSSL (true, host);
 
                                int code = SecTrustCreateWithCertificates (certArray, sslsecpolicy, out sectrust);
index 701b4c534d015d7d1b9d3d543a73ecbaeda61b6b..229999df7182959f1bb4f7dc8c4e950b1028ec7f 100644 (file)
@@ -428,7 +428,19 @@ namespace System.Security.Cryptography.X509Certificates {
 
                private MX.X509Certificate ImportPkcs12 (byte[] rawData, string password)
                {
-                       MX.PKCS12 pfx = (password == null) ? new MX.PKCS12 (rawData) : new MX.PKCS12 (rawData, password);
+                       MX.PKCS12 pfx = null;
+                       if (string.IsNullOrEmpty (password)) {
+                               try {
+                                       // Support both unencrypted PKCS#12..
+                                       pfx = new MX.PKCS12 (rawData, (string)null);
+                               } catch {
+                                       // ..and PKCS#12 encrypted with an empty password
+                                       pfx = new MX.PKCS12 (rawData, string.Empty);
+                               }
+                       } else {
+                               pfx = new MX.PKCS12 (rawData, password);
+                       }
+
                        if (pfx.Certificates.Count == 0) {
                                // no certificate was found
                                return null;
index abff4e15a9aaf9b117bc9d6e288ad11e1ee2cfda..029d3eb6ad522cc7e8e4139366f6b00378eb25b8 100644 (file)
@@ -723,11 +723,11 @@ namespace MonoTests.System.Net {
                public void ClosePort ()
                {
                        var h = new HttpListener ();
-                       h.Prefixes.Add ("http://127.0.0.1:8080/");
+                       h.Prefixes.Add ("http://127.0.0.1:30158/");
                        h.Start ();
                        h.BeginGetContext (null, null);
                        h.Stop ();
-                       TcpListener t = new TcpListener (IPAddress.Parse ("127.0.0.1"), 8080);
+                       TcpListener t = new TcpListener (IPAddress.Parse ("127.0.0.1"), 30158);
                        t.Start ();
                        t.Stop ();
                }
index 3505926f41074e31c559b69c2187940f9fd475ef..48722d45510fd03642ce0aad7ff725e25529587c 100644 (file)
@@ -2156,5 +2156,97 @@ namespace MonoTests.System.Net
                        // and return the same instance as WebRequest.DefaultWebProxy
                        Assert.AreSame (wc.Proxy, WebRequest.DefaultWebProxy);
                }
+                
+#if NET_4_5
+               [Test]
+               public void UploadStringAsyncCancelEvent ()
+               {
+                       UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) =>
+                       {
+
+                               webClient.UploadStringCompleted += (sender, args) =>
+                               {
+                                       if (args.Cancelled)
+                                               cancelEvent.Set ();
+                               };
+
+                               webClient.UploadStringAsync (uri, "PUT", "text");
+                       });
+               }
+
+               [Test]
+               public void UploadDataAsyncCancelEvent ()
+               {
+                       UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) =>
+                       {
+                               webClient.UploadDataCompleted += (sender, args) =>
+                               {
+                                       if (args.Cancelled)
+                                               cancelEvent.Set ();
+                               };
+
+                               webClient.UploadDataAsync (uri, "PUT", new byte[] { });
+                       });
+               }
+               
+               [Test]
+               public void UploadValuesAsyncCancelEvent ()
+               {
+                       UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) =>
+                       {
+                               webClient.UploadValuesCompleted += (sender, args) =>
+                               {
+                                       if (args.Cancelled)
+                                               cancelEvent.Set ();
+                               };
+
+                               webClient.UploadValuesAsync (uri, "PUT", new NameValueCollection ());
+                       });
+               }
+
+               [Test]
+               public void UploadFileAsyncCancelEvent ()
+               {
+                       UploadAsyncCancelEventTest ((webClient, uri, cancelEvent) =>
+                       {
+                               string tempFile = Path.Combine (_tempFolder, "upload.tmp");
+                               File.Create (tempFile).Close ();
+
+                               webClient.UploadFileCompleted += (sender, args) =>
+                               {
+                                       if (args.Cancelled)
+                                               cancelEvent.Set ();
+                               };
+
+                               webClient.UploadFileAsync (uri, "PUT", tempFile);
+                       });
+               }
+#endif
+
+#if NET_4_0
+               public void UploadAsyncCancelEventTest (Action<WebClient, Uri, EventWaitHandle> uploadAction)
+               {
+                       var ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       string url = "http://" + IPAddress.Loopback + ":8000/test/";
+
+                       using (var responder = new SocketResponder (ep, EchoRequestHandler))
+                       {
+                               responder.Start ();
+
+                               var webClient = new WebClient ();
+
+                               var cancellationTokenSource = new CancellationTokenSource ();
+                               cancellationTokenSource.Token.Register (webClient.CancelAsync);
+
+                               var cancelEvent = new ManualResetEvent (false);
+
+                               uploadAction.Invoke (webClient, new Uri (url), cancelEvent);
+
+                               cancellationTokenSource.Cancel ();
+
+                               Assert.IsTrue (cancelEvent.WaitOne (1000));
+                       }
+               }
+#endif
        }
 }
index 19a7c19f82126a787143c28fdb89daf1b66116bb..9fceaca05cac364bf580c8b503efd8b7f5465e22 100644 (file)
@@ -286,6 +286,23 @@ namespace MonoTests.System.Security.Cryptography.X509Certificates {
                        0x89, 0x53, 0xBD, 0x10, 0xAA, 0x1E, 0xC6, 0x41, 0x7C, 0x71, 0xCA, 0x47, 0x79, 0x60, 0x95, 0x2E, 0xAB, 0xF6, 0x17, 0xBE, 0x1D, 0xF1, 0x05, 0xAD, 0x76, 0xD8, 0xBB, 0xF2, 0xBB, 0x36, 0xEE, 0xCD, 0xAA, 0xBC, 0xBA, 0xBE, 0x94, 0x42, 0x9A, 0xA8, 0xEE, 0xE5, 0x93, 0x5C, 0x3C, 0x23, 0xE2, 0x75, 0xD3, 0x59, 0xB4, 0xB3, 0xC4, 0x01, 0xBB, 0xC9, 0x05, 0xFE, 0xFA, 0x1B, 0x31, 0x7A, 0x15, 0x29, 0x91, 0xE6, 0xB9, 0xB2, 0x1E, 0xF9, 0x36, 0xC5, 0x17, 0xB9, 0x9D, 0x32, 0x0D, 0x0D, 0x80, 0x4A, 0x0D, 0x14, 0xB4, 0xDF, 0x89, 0x3A, 0x4B, 0xCA, 0x4B, 0xDE, 0xF8, 0xC0, 0x1B, 0xA6, 0x6D, 0xD9, 0x19, 0xFB, 0x0E, 0x02, 
                        0x22, 0x82, 0x8E, 0x25, 0x8E, 0x9F, 0xD5, 0x7B, 0xB6, 0x14, 0x15, 0x08, 0x61, 0xCD, 0xA6, 0xB3, 0x0F, 0xC8, 0xE8, 0xF9, 0xEE, 0xDB, 0xAF, 0x25, 0x40, 0x01, 0x85, 0x0E, 0x89, 0x0D, 0x0D, 0x85, 0xA6, 0xA3, 0xC9, 0x65, 0x64, 0x8A, 0xD1, 0xF7, 0x55, 0xF9, 0x31, 0x24, 0x41, 0x30, 0x3B, 0x30, 0x1F, 0x30, 0x07, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x04, 0x14, 0xD4, 0x77, 0x3F, 0x92, 0xB6, 0xA6, 0x1B, 0xD5, 0x7F, 0xC1, 0x1B, 0x93, 0xB3, 0x6E, 0x87, 0x67, 0x80, 0xE7, 0x4C, 0x7C, 0x04, 0x14, 0x58, 0x4C, 0x92, 0xDD, 0x0B, 0xEF, 0x09, 0x35, 0xE0, 0x06, 0x33, 0x54, 0xB2, 0xA8, 0x8E, 0x0C, 0x60, 0x67, 
                        0xB5, 0x0F, 0x02, 0x02, 0x07, 0xD0 };
+                       
+               public static byte[] openssl_emptypwd_pfx = { 0x30, 0x82, 0x06, 0x19, 0x02, 0x01, 0x03, 0x30, 0x82, 0x05, 0xDF, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x05, 0xD0, 0x04, 0x82, 0x05, 0xCC, 0x30, 0x82, 0x05, 0xC8, 0x30, 0x82, 0x02, 0xC7, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x06, 0xA0, 0x82, 0x02, 0xB8, 0x30, 0x82, 0x02, 0xB4, 0x02, 0x01, 0x00, 0x30, 0x82, 0x02, 0xAD, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x01, 0x30, 0x1C, 0x06, 0x0A, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x01, 0x06, 0x30, 0x0E, 0x04, 0x08, 0xE4, 0x0A, 0x2F, 0x48, 0xE6, 0x07, 0x62, 
+                       0x5D, 0x02, 0x02, 0x08, 0x00, 0x80, 0x82, 0x02, 0x80, 0x35, 0x6F, 0x44, 0xFA, 0xA8, 0x0D, 0x41, 0xBA, 0x1A, 0xAE, 0xB1, 0xFB, 0xA4, 0xBB, 0x91, 0x28, 0x75, 0x19, 0xF8, 0x1C, 0x0E, 0xB4, 0xCE, 0x2A, 0x5C, 0x28, 0x2E, 0x34, 0x6F, 0x9B, 0x5F, 0x94, 0x16, 0x33, 0xE0, 0x36, 0x50, 0x5D, 0x47, 0x74, 0x42, 0x4E, 0xCC, 0xA0, 0x7F, 0x8C, 0x32, 0x26, 0x7A, 0x5F, 0x24, 0xB1, 0xEB, 0xD8, 0x2C, 0xE3, 0x6D, 0xC2, 0x3C, 0xBC, 0x3B, 0x0A, 0x78, 0x39, 0x88, 0x24, 0x9E, 0x94, 0x15, 0xC3, 0x43, 0xE0, 0x25, 0x31, 0x3F, 0xB0, 0xDA, 0xF8, 0x4E, 0x37, 0x56, 0xD4, 0xAE, 0x75, 0x28, 0x30, 0x67, 0x5F, 0xBF, 0xF9, 0x7D, 
+                       0xDC, 0xF6, 0x1A, 0x02, 0xF0, 0x65, 0xBF, 0x0A, 0x4D, 0x39, 0x16, 0xC7, 0x57, 0x9A, 0xA1, 0x7C, 0xF0, 0x4B, 0xDD, 0x0E, 0xAF, 0x4E, 0xA9, 0xC8, 0x85, 0x89, 0xCB, 0xB8, 0xD3, 0x96, 0x5F, 0x0C, 0xCB, 0x85, 0xBD, 0xEB, 0x11, 0x00, 0x3B, 0x34, 0xB6, 0x6B, 0xCE, 0x32, 0x75, 0x09, 0x8C, 0x09, 0x3B, 0x13, 0x9D, 0x9F, 0xC1, 0x72, 0x8F, 0xC5, 0x9E, 0x90, 0x89, 0x7C, 0x3A, 0x64, 0xC2, 0x27, 0xD5, 0xF5, 0x6B, 0x23, 0x2C, 0x32, 0xEF, 0xB4, 0x2C, 0x09, 0x0F, 0x65, 0xF4, 0xE4, 0xDC, 0xC3, 0x1F, 0x00, 0xF4, 0x77, 0xB0, 0x3B, 0x08, 0xA5, 0x59, 0xFA, 0x50, 0xAF, 0x9D, 0x9D, 0x22, 0x80, 0xC6, 0x6E, 0xF8, 0xA7, 
+                       0xB7, 0x03, 0x2A, 0x64, 0x37, 0x9C, 0xFB, 0x0D, 0x9D, 0xEF, 0xEC, 0x81, 0xDD, 0xEE, 0x17, 0xA9, 0x8D, 0xA1, 0x9D, 0x06, 0x0F, 0x51, 0x1E, 0x21, 0xF6, 0xEB, 0x10, 0x20, 0x99, 0xE6, 0x8D, 0x23, 0xDC, 0x27, 0xD5, 0xF5, 0xAF, 0x02, 0x07, 0xBE, 0x85, 0x7E, 0x11, 0x5D, 0x87, 0xEB, 0x49, 0xCA, 0xA1, 0xDB, 0x10, 0xB6, 0x18, 0x7C, 0x52, 0x07, 0x08, 0x99, 0xAF, 0x37, 0x15, 0x0E, 0x72, 0xB4, 0x0A, 0x5B, 0x88, 0x70, 0xCF, 0x24, 0xF4, 0xB3, 0x38, 0x99, 0x21, 0x2E, 0xB2, 0x98, 0x79, 0x28, 0x2E, 0x23, 0x1F, 0x9A, 0x20, 0xA7, 0x62, 0xC4, 0x31, 0x82, 0x35, 0x59, 0xFD, 0xAB, 0x7F, 0xE6, 0x6C, 0x9A, 0xE6, 0x4D, 
+                       0x3E, 0xE3, 0xA7, 0x3E, 0xAE, 0x6F, 0xCA, 0xD2, 0x3A, 0x9B, 0x31, 0x1B, 0x96, 0xA9, 0x25, 0xB5, 0x25, 0x47, 0x57, 0xCF, 0x7C, 0x5F, 0x1E, 0x5C, 0x38, 0xB9, 0x24, 0xB2, 0xA5, 0x50, 0xB1, 0x3F, 0xAC, 0x3C, 0x77, 0x53, 0xC7, 0xC8, 0x3B, 0x95, 0xD4, 0x37, 0x30, 0x6E, 0xE6, 0x39, 0x2E, 0x53, 0x09, 0x30, 0x9B, 0x35, 0x1C, 0x74, 0x31, 0x46, 0x67, 0xC5, 0x6E, 0x4D, 0x35, 0x8F, 0x61, 0xC5, 0xA4, 0xD4, 0xBA, 0xE1, 0x47, 0xC7, 0x1D, 0x94, 0x75, 0x6B, 0xFA, 0xAE, 0x2E, 0xDC, 0xB4, 0xA7, 0x64, 0xFA, 0x14, 0x68, 0x14, 0xA0, 0x81, 0x96, 0xD9, 0xC0, 0x2A, 0xFD, 0xEE, 0x78, 0xFE, 0xB6, 0x38, 0xC9, 0x1B, 0xF7, 
+                       0x05, 0xC1, 0x4C, 0xF1, 0x21, 0x53, 0x62, 0x17, 0xED, 0x1D, 0xF7, 0x34, 0x92, 0xD4, 0xDD, 0xD7, 0xF0, 0xA7, 0x90, 0x34, 0xBE, 0x26, 0x86, 0x26, 0x67, 0x3B, 0x40, 0xC6, 0x4C, 0x6A, 0x26, 0xD9, 0x2A, 0x4E, 0x58, 0xEF, 0x86, 0x80, 0x8B, 0x6D, 0x40, 0xCD, 0x40, 0xFD, 0x7B, 0xD9, 0x1C, 0xC4, 0x24, 0x94, 0x4A, 0xFB, 0xFC, 0xB9, 0xF8, 0xE6, 0x95, 0x82, 0x0D, 0x02, 0xE3, 0x53, 0xC9, 0x28, 0xBD, 0x60, 0x65, 0x76, 0x0F, 0xF0, 0xFE, 0x23, 0xF6, 0x8A, 0xB6, 0xB3, 0xD4, 0x51, 0xC2, 0xE5, 0xB4, 0x3A, 0x10, 0x0D, 0x25, 0x7C, 0xC9, 0xCC, 0x11, 0x45, 0x7C, 0xC0, 0x1F, 0x82, 0x52, 0xCA, 0xE8, 0x25, 0x53, 0xCE, 
+                       0x92, 0x67, 0xEC, 0xA2, 0x04, 0xE1, 0x58, 0x7B, 0xE6, 0xF2, 0xA2, 0x5D, 0x74, 0x46, 0xD5, 0x9A, 0x6F, 0x70, 0x60, 0xC4, 0x99, 0xB2, 0x29, 0xF9, 0x60, 0x19, 0x89, 0x37, 0xB3, 0xE5, 0x97, 0xCD, 0x9E, 0xD4, 0x53, 0x0B, 0xD6, 0xB5, 0xC6, 0xFA, 0x8D, 0x0F, 0x96, 0x65, 0x78, 0xE9, 0xC0, 0x84, 0x38, 0x26, 0xD9, 0xA5, 0x27, 0x62, 0xFC, 0x2A, 0x79, 0xCF, 0x7F, 0xC9, 0xFC, 0xBC, 0x41, 0x29, 0x9C, 0xD8, 0x3B, 0x37, 0x54, 0xA0, 0x39, 0x78, 0x21, 0x3A, 0x9C, 0x51, 0xE0, 0x30, 0x18, 0xA4, 0x56, 0x61, 0x13, 0x9C, 0x1C, 0x01, 0x35, 0x96, 0x19, 0x4B, 0xAF, 0xD0, 0xFE, 0x95, 0xF1, 0xC1, 0xBB, 0x6A, 0xBC, 0x2C, 
+                       0x39, 0x21, 0x38, 0xB4, 0xB9, 0x10, 0x27, 0xD6, 0x04, 0xC5, 0xE4, 0xC3, 0x2C, 0xB8, 0x0B, 0xEC, 0xB3, 0x28, 0x32, 0x50, 0x02, 0x4E, 0xE4, 0xE9, 0x11, 0x4C, 0x38, 0x87, 0x3D, 0x7F, 0x54, 0xA2, 0x1D, 0xFF, 0x4B, 0x07, 0x0A, 0xE7, 0x42, 0x08, 0x48, 0x54, 0x3C, 0x7B, 0xE4, 0xF4, 0x2D, 0x98, 0x16, 0x30, 0x82, 0x02, 0xF9, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x02, 0xEA, 0x04, 0x82, 0x02, 0xE6, 0x30, 0x82, 0x02, 0xE2, 0x30, 0x82, 0x02, 0xDE, 0x06, 0x0B, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x0A, 0x01, 0x02, 0xA0, 0x82, 0x02, 0xA6, 0x30, 0x82, 0x02, 
+                       0xA2, 0x30, 0x1C, 0x06, 0x0A, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x01, 0x03, 0x30, 0x0E, 0x04, 0x08, 0x8C, 0xA8, 0xAE, 0x70, 0xEB, 0x90, 0xF9, 0xB7, 0x02, 0x02, 0x08, 0x00, 0x04, 0x82, 0x02, 0x80, 0xA7, 0x49, 0x1D, 0x10, 0xDD, 0x5C, 0xE8, 0xD5, 0x2F, 0x55, 0xAB, 0x62, 0x21, 0x13, 0x64, 0x32, 0xA8, 0xED, 0xFF, 0x8A, 0xE2, 0x5F, 0xCE, 0x74, 0x89, 0x1C, 0x9F, 0x73, 0x02, 0x99, 0x85, 0xE4, 0xF8, 0x21, 0xE1, 0xAA, 0x64, 0x72, 0x95, 0xEC, 0xA0, 0x2E, 0xA9, 0x90, 0x35, 0x51, 0x82, 0x9B, 0x28, 0xDC, 0x0C, 0x47, 0xCD, 0x5C, 0x08, 0x0C, 0x49, 0x8D, 0x06, 0x70, 0x97, 0xF5, 0x4C, 0x48, 0x43, 
+                       0xDC, 0x84, 0xC4, 0x6C, 0x4F, 0x55, 0xD9, 0x86, 0x16, 0x39, 0x31, 0x22, 0x0C, 0x12, 0x55, 0x76, 0x0E, 0xBC, 0x57, 0x66, 0x0D, 0xB3, 0xC0, 0xAB, 0x87, 0x6B, 0x85, 0x20, 0x4D, 0x69, 0x57, 0xAF, 0x44, 0xAB, 0x76, 0x15, 0xA7, 0xAA, 0x07, 0xA9, 0xD8, 0x82, 0x4C, 0x79, 0xA5, 0x62, 0x6D, 0x2E, 0x6C, 0x99, 0xE6, 0xE8, 0x6E, 0xD0, 0x12, 0x85, 0x98, 0x63, 0xEA, 0xC7, 0x07, 0x8C, 0x4B, 0xEB, 0x46, 0x2A, 0xE0, 0x94, 0xAA, 0x0C, 0x19, 0xFA, 0xD6, 0x93, 0x80, 0x7B, 0x20, 0x74, 0x1D, 0xB8, 0xB9, 0x76, 0xEB, 0x93, 0x9A, 0x32, 0x76, 0xA4, 0x93, 0x13, 0x54, 0x71, 0x23, 0xBC, 0x93, 0x26, 0x32, 0x11, 0x4F, 0xFB, 
+                       0x61, 0xD1, 0xD7, 0x15, 0x2F, 0x6F, 0x8C, 0xF9, 0x42, 0x0F, 0xE4, 0x24, 0x20, 0xA8, 0x22, 0x0C, 0x04, 0xFB, 0x1A, 0xB6, 0xF8, 0x89, 0xF7, 0x89, 0xF5, 0xD7, 0x46, 0xB6, 0x7C, 0xE0, 0x72, 0x22, 0x53, 0xD3, 0x23, 0x27, 0x98, 0xCC, 0x8E, 0xF8, 0xA8, 0x58, 0xC7, 0x36, 0x69, 0x0D, 0xF2, 0x20, 0x84, 0x83, 0x2D, 0x7A, 0xA9, 0xA5, 0x8D, 0x41, 0x62, 0xA6, 0x99, 0xAE, 0xBC, 0x92, 0xB0, 0x7B, 0xF6, 0x9A, 0x84, 0x37, 0x2B, 0x16, 0x9A, 0xD7, 0x46, 0x97, 0xB8, 0x72, 0x1B, 0xCC, 0x9F, 0xE7, 0xDD, 0x54, 0x83, 0x33, 0x42, 0xE5, 0x55, 0xEA, 0xC1, 0xC0, 0x00, 0xDE, 0xE8, 0x13, 0xB4, 0x7B, 0x9F, 0x0D, 0xAD, 0xF4, 
+                       0xB9, 0xA8, 0xEA, 0x54, 0xDF, 0x44, 0xF1, 0x67, 0xB7, 0x32, 0x0F, 0x84, 0x39, 0xEF, 0x75, 0xE2, 0xBC, 0x21, 0xA3, 0x71, 0x2E, 0xC3, 0x36, 0xE9, 0x9F, 0x2C, 0x6F, 0x35, 0x94, 0x2B, 0x51, 0x9A, 0xB3, 0xA7, 0xDD, 0xA1, 0x02, 0xF9, 0x14, 0x74, 0x58, 0x36, 0x7C, 0x86, 0x5E, 0xD1, 0xAE, 0x77, 0xA7, 0x3E, 0x38, 0x93, 0xB4, 0x50, 0x5F, 0x1E, 0x35, 0xC7, 0x77, 0xA9, 0x24, 0x28, 0xD2, 0xED, 0x9F, 0x8A, 0x67, 0xB6, 0x94, 0x8C, 0xF5, 0x69, 0x19, 0x1B, 0x3C, 0xAA, 0x39, 0x5D, 0x40, 0x6A, 0x33, 0x5A, 0xDA, 0x69, 0x24, 0x59, 0x99, 0x04, 0x90, 0x3E, 0xB3, 0xDE, 0xDC, 0xCB, 0x59, 0x35, 0xEF, 0x1B, 0xC1, 0x68, 
+                       0xCD, 0x20, 0x0E, 0x22, 0x94, 0xB7, 0xFC, 0x5B, 0xC0, 0x17, 0x38, 0x3E, 0xB5, 0x9C, 0xBA, 0x78, 0x94, 0xB2, 0x10, 0x05, 0x21, 0x30, 0x4B, 0x2F, 0x8B, 0xF1, 0x8D, 0xFC, 0x2A, 0xBF, 0x89, 0x4E, 0xE1, 0xF9, 0xBF, 0x3C, 0xCF, 0xAA, 0xB1, 0xEC, 0x39, 0x59, 0x9A, 0xE9, 0x07, 0xE1, 0xA0, 0xAA, 0x91, 0x7C, 0x09, 0xF1, 0xD5, 0xD9, 0xA3, 0xF1, 0x0E, 0xD2, 0xBD, 0xE8, 0x65, 0x83, 0xDB, 0xE4, 0x03, 0xFA, 0x19, 0x56, 0x00, 0x3F, 0x3E, 0x94, 0x03, 0xAD, 0x4D, 0x00, 0x7C, 0x47, 0x2C, 0x88, 0x88, 0x53, 0x7C, 0xF2, 0x7B, 0x2A, 0x5A, 0xCB, 0x44, 0x93, 0x4F, 0xDA, 0xE3, 0x2E, 0xC3, 0x1F, 0x4E, 0x14, 0x52, 0x1B, 
+                       0x33, 0x5F, 0xB7, 0xCD, 0x1D, 0xB1, 0xDE, 0xFE, 0xE8, 0xCF, 0xC2, 0xEE, 0xEB, 0xA6, 0x79, 0xF5, 0x0C, 0x21, 0x71, 0x95, 0xE1, 0x52, 0xBF, 0x76, 0xD5, 0x35, 0x43, 0x0E, 0xB6, 0x9B, 0x36, 0x34, 0x4E, 0x07, 0xF9, 0x29, 0x34, 0x44, 0x52, 0x15, 0xCC, 0x71, 0x5C, 0x5F, 0x89, 0x32, 0x32, 0x5B, 0x76, 0x8E, 0x08, 0x55, 0x46, 0xD5, 0x4A, 0x78, 0xEB, 0xB2, 0x9A, 0x39, 0xF9, 0xE6, 0xD7, 0x54, 0xE8, 0x59, 0x85, 0x09, 0x2B, 0xE8, 0x2D, 0x5E, 0x7F, 0x09, 0x8F, 0xA2, 0x65, 0x82, 0x54, 0x93, 0x17, 0x56, 0x51, 0x4F, 0x93, 0x2F, 0x92, 0x47, 0x3C, 0x7A, 0x2D, 0x45, 0x45, 0x67, 0x03, 0x02, 0x0C, 0x0B, 0xA4, 0x2A, 
+                       0x25, 0x22, 0x2F, 0x8E, 0x87, 0x04, 0x78, 0x12, 0x5C, 0x80, 0x1E, 0xF9, 0x0D, 0xC1, 0x5B, 0x06, 0x4D, 0x43, 0x1D, 0x13, 0x6C, 0xDB, 0x3D, 0xD2, 0x1C, 0x94, 0xA3, 0xBB, 0x62, 0xEB, 0x4F, 0x78, 0xC9, 0x43, 0x5E, 0x5F, 0x84, 0xCB, 0xE8, 0x31, 0x5F, 0xE9, 0xB7, 0xA9, 0xEA, 0x4A, 0xF2, 0xAB, 0x1E, 0x37, 0x7C, 0xAF, 0xE4, 0xF0, 0x4E, 0x3F, 0x6A, 0xA9, 0x04, 0xAB, 0x20, 0x44, 0xFD, 0x81, 0x47, 0x9F, 0x86, 0xF3, 0x59, 0xA5, 0x2A, 0x3D, 0x60, 0xB1, 0xF7, 0x31, 0x25, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x15, 0x31, 0x16, 0x04, 0x14, 0x30, 0x29, 0x69, 0x4B, 0x22, 0xB2, 
+                       0xEE, 0x6A, 0xEC, 0x9B, 0x78, 0x44, 0x9E, 0x51, 0x0F, 0x7C, 0x34, 0x8D, 0xBA, 0x33, 0x30, 0x31, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xC7, 0xDD, 0xD6, 0xA5, 0xC4, 0x14, 0xB6, 0x24, 0xF9, 0x03, 0xB9, 0xB6, 0xA3, 0x5A, 0x4A, 0x09, 0x51, 0x18, 0x5A, 0x19, 0x04, 0x08, 0x35, 0xB5, 0x1D, 0xC3, 0x17, 0x45, 0x8B, 0x92, 0x02, 0x02, 0x08, 0x00 };
 
                public const string base64_cert = @"-----BEGIN CERTIFICATE-----
 MIIBxTCCATKgAwIBAgIQx3WuSFObHp5EgBXKeBVHaTAJBgUrDgMCHQUAMCUxIzAh
@@ -1252,6 +1269,12 @@ WYpnKQqsKIzlSqv9wwXs7B1iA7ZdvHk3TAnSnLP1o2H7ME05UnZPKCvraONdezon
                        CheckPkcs12 (new X509Certificate2 (farscape_strong_path_pfx, "farscape"));
                }
 
+               [Test]
+               public void Pkcs12_6_Properties ()
+               {
+                       CheckPkcs12 (new X509Certificate2 (openssl_emptypwd_pfx));
+               }
+
                private void CheckBase64 (X509Certificate2 x)
                {
                        // note: the raw data is still the DER encoded ASN.1 (not the base64 string)
index dad8c60651c7440f725e5357bd8ee66e1d7e28ee..4757d762f807ab9f1127c9d895dc4317f1e40a9d 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
       <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
+      <Name>System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 8c652ad6245b924feafecb9be8ade582b8e593ea..211e9cd6824475b600515683d8a9c433e68f009c 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
       <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
+      <Name>System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index fb0244d6eb9502f5d648fecf2009df1664502c30..59f1f11e325efd8837a54305a66a712e73b8b217 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Xaml/System.Xaml-net_4_5.csproj">\r
       <Project>{F574F9BD-1838-4C13-8722-7D6D33DE1781}</Project>\r
-      <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
+      <Name>System.Xaml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index e5a26ce28d3577b53d240dec40c7b0e96d189f9e..8098cdbc5828bfd6e7cd188e3bab68dd4127b619 100644 (file)
@@ -262,7 +262,11 @@ namespace System.Collections.Concurrent
 
                bool ICollection<KeyValuePair<TKey,TValue>>.Contains (KeyValuePair<TKey, TValue> pair)
                {
-                       return ContainsKey (pair.Key);
+                       TValue value;
+                       if (!TryGetValue (pair.Key, out value))
+                               return false;
+
+                       return EqualityComparer<TValue>.Default.Equals (value, pair.Value);
                }
 
                public KeyValuePair<TKey,TValue>[] ToArray ()
index 0911f8152c4827f7fdafb5f2dd993d302a651da0..cad54a4d553f71ff2141c8227c880d16332a2add 100644 (file)
@@ -37,7 +37,7 @@ using System.Runtime.InteropServices;
 using System.Runtime.Serialization;
 using System.Security;
 
-#if !NET_2_1
+#if !MOBILE
 using System.Security.AccessControl;
 #endif
 
@@ -93,7 +93,6 @@ namespace System.IO {
                        }
                }
 
-#if !NET_2_1
                public bool IsReadOnly {
                        get {
                                if (!Exists)
@@ -138,7 +137,6 @@ namespace System.IO {
                        // handling this exception to work properly.
                        throw new NotSupportedException (Locale.GetText ("File encryption isn't supported on any file system."));
                }
-#endif
 
                public long Length {
                        get {
@@ -265,15 +263,10 @@ namespace System.IO {
 
                public override string ToString ()
                {
-#if NET_2_1
-                       // for Moonlight we *never* return paths, since ToString is not [SecurityCritical] we simply return the Name
-                       return Name;
-#else
                        return OriginalPath;
-#endif
                }
 
-#if !NET_2_1
+#if !MOBILE
                public FileSecurity GetAccessControl ()
                {
                        return File.GetAccessControl (FullPath); 
index 578a7ab057673f1f8f249cceb1e7199cbc8dd16f..64b5bf4bde5f15acdb540f1a7eca630bb05606d6 100644 (file)
@@ -44,19 +44,17 @@ using System.Security;
 using System.Security.Permissions;
 using System.Diagnostics.SymbolStore;
 
+#if !NET_4_5
+using TypeInfo = System.Type;
+#endif
+
 namespace System.Reflection.Emit
 {
        [ComVisible (true)]
        [ComDefaultInterface (typeof (_TypeBuilder))]
        [ClassInterface (ClassInterfaceType.None)]
        [StructLayout (LayoutKind.Sequential)]
-       public sealed class TypeBuilder :
-#if NET_4_5
-               TypeInfo
-#else
-               Type
-#endif
-               , _TypeBuilder
+       public sealed class TypeBuilder : TypeInfo, _TypeBuilder
        {
 #pragma warning disable 169            
                #region Sync with reflection.h
@@ -82,7 +80,7 @@ namespace System.Reflection.Emit
                private IntPtr generic_container;
                private GenericTypeParameterBuilder[] generic_params;
                private RefEmitPermissionSet[] permissions;
-               private Type created;
+               private TypeInfo created;
                #endregion
 #pragma warning restore 169            
                
@@ -727,7 +725,7 @@ namespace System.Reflection.Emit
                }
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern Type create_runtime_class (TypeBuilder tb);
+               private extern TypeInfo create_runtime_class (TypeBuilder tb);
 
                private bool is_nested_in (Type t)
                {
@@ -753,8 +751,16 @@ namespace System.Reflection.Emit
 
                        return false;
            }
+
+               public Type CreateType ()
+               {
+                       return CreateTypeInfo ();
+               }
                
-               public Type CreateType()
+#if NET_4_5
+               public
+#endif
+               TypeInfo CreateTypeInfo ()
                {
                        /* handle nesting_type */
                        if (createTypeCalled)
index ca849bd6ad734c4072df313078e035ccd12a0c88..e1fa6e36ecd7ee84141d23b499b82a34c687edc3 100644 (file)
@@ -32,30 +32,58 @@ namespace System.Security.Claims
 {
        public static class ClaimTypes
        {
+               public const string Actor = "http://schemas.xmlsoap.org/ws/2009/09/identity/claims/actor";
+
                public const string Anonymous = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/anonymous";
 
                public const string Authentication = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/authentication";
 
+               public const string AuthenticationInstant = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationinstant";
+
+               public const string AuthenticationMethod = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod";
+
                public const string AuthorizationDecision = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/authorizationdecision";
 
+               public const string ClaimsType2005Namespace = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims";
+
+               public const string ClaimsType2009Namespace = "http://schemas.xmlsoap.org/ws/2009/09/identity/claims";
+
+               public const string ClaimsTypeNamespace = "http://schemas.microsoft.com/ws/2008/06/identity/claims";
+
+               public const string CookiePath = "http://schemas.microsoft.com/ws/2008/06/identity/claims/cookiepath";
+
                public const string Country = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country";
 
                public const string DateOfBirth = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dateofbirth";
 
+               public const string DenyOnlyPrimaryGroup = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarygroup";
+
+               public const string DenyOnlyPrimarySid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarysid";
+
                public const string DenyOnlySid = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/denyonlysid";
 
                public const string Dns = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dns";
 
-               public const string Email = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";
+               public const string Dsa = "http://schemas.microsoft.com/ws/2008/06/identity/claims/dsa";
+
+               public const string Email = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email";
+
+               public const string Expiration = "http://schemas.microsoft.com/ws/2008/06/identity/claims/expiration";
+
+               public const string Expired = "http://schemas.microsoft.com/ws/2008/06/identity/claims/expired";
 
                public const string Gender = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/gender";
 
                public const string GivenName = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname";
 
+               public const string GroupSid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid";
+
                public const string Hash = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/hash";
 
                public const string HomePhone = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/homephone";
 
+               public const string IsPersistent = "http://schemas.microsoft.com/ws/2008/06/identity/claims/ispersistent";
+
                public const string Locality = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/locality";
 
                public const string MobilePhone = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/mobilephone";
@@ -70,8 +98,16 @@ namespace System.Security.Claims
 
                public const string PPID = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier";
 
+               public const string PrimaryGroupSid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid";
+
+               public const string PrimarySid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid";
+
+               public const string Role = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
+
                public const string Rsa = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/rsa";
 
+               public const string SerialNumber = "http://schemas.microsoft.com/ws/2008/06/identity/claims/serialnumber";
+
                public const string Sid = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/sid";
 
                public const string Spn = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/spn";
@@ -90,9 +126,15 @@ namespace System.Security.Claims
 
                public const string Uri = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/uri";
 
+               public const string UserData = "http://schemas.microsoft.com/ws/2008/06/identity/claims/userdata";
+
+               public const string Version = "http://schemas.microsoft.com/ws/2008/06/identity/claims/version";
+
                public const string Webpage = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/webpage";
 
+               public const string WindowsAccountName = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname";
+
                public const string X500DistinguishedName = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/x500distinguishedname";
        }
 }
-#endif
\ No newline at end of file
+#endif
index 76dc9da4e4c95461aedc9812fc74dd4bf81476fe..7b62592da1555b1ad7bfe4f1cb9f69b274ef8cbe 100644 (file)
@@ -43,6 +43,7 @@ namespace System.Security.Claims {
                
                List<Claim> claims;
                ClaimsIdentity actor;
+               string auth_type;
 
                public ClaimsIdentity ()
                        : this (claims: null, authenticationType: null, nameType: null, roleType: null)
@@ -69,12 +70,12 @@ namespace System.Security.Claims {
                {
                        claims = claims == null ? new List<Claim> (): new List<Claim> (claims);
                        
-                       AuthenticationType = authenticationType;
-
                        // Special case: if empty, set to null.
                        if (authenticationType == "")
-                               AuthenticationType = null;
-                       
+                               auth_type = null;
+                       else
+                               auth_type = authenticationType;
+
                        NameClaimType = nameType == null ? DefaultNameClaimType : nameType;
                        RoleClaimType = roleType == null ? DefaultRoleClaimType : roleType;
                }
@@ -96,12 +97,14 @@ namespace System.Security.Claims {
                                foreach (var c in ci.Claims)
                                        this.claims.Add (c);
                                
-                               foreach (var c in claims)
-                                       this.claims.Add (c);
+                               if (claims != null) {
+                                       foreach (var c in claims)
+                                               this.claims.Add (c);
+                               }
                                Label = ci.Label;
                                NameClaimType = ci.NameClaimType;
                                RoleClaimType = ci.RoleClaimType;
-                               AuthenticationType = ci.AuthenticationType;
+                               auth_type = ci.AuthenticationType;
                        }
                }
 
@@ -130,7 +133,11 @@ namespace System.Security.Claims {
                        }
                }
 
-               public virtual string AuthenticationType { get; private set; }
+               public virtual string AuthenticationType {
+                       get {
+                               return auth_type;
+                       }
+               }
                public object BootstrapContext { get; set; }
                public string Label { get; set; }
                public virtual string Name {
@@ -259,4 +266,4 @@ namespace System.Security.Claims {
                }
        }
 }
-#endif
\ No newline at end of file
+#endif
index d3827b8d1a2f7718c6a17c64c4b4e7b34bf29503..cf1fe29e9d169336f6f5f44626175cf92b928822 100644 (file)
@@ -59,14 +59,16 @@ namespace System.Security.Claims {
                        if (identities == null)
                                throw new ArgumentNullException ("identities");
                        
-                       identities = new List<ClaimsIdentity> (identities);
+                       this.identities = new List<ClaimsIdentity> (identities);
                }
 
                public ClaimsPrincipal (IIdentity identity)
                {
                        if (identity == null)
                                throw new ArgumentNullException ("identity");
-                       // TODO
+
+                       identities = new List<ClaimsIdentity> ();
+                       identities.Add (new ClaimsIdentity (identity));
                }
 
                public ClaimsPrincipal (IPrincipal principal)
@@ -187,4 +189,4 @@ namespace System.Security.Claims {
                
        }
 }
-#endif
\ No newline at end of file
+#endif
index 067cd64d6f6181ddcd1899d6eea85bcac34acf34..06bfc20324d50d746bec29ce28075ab16fb56d9b 100644 (file)
@@ -63,7 +63,7 @@ namespace System
                }
                
                public AggregateException (params Exception[] innerExceptions)
-                       : this (string.Empty, innerExceptions)
+                       : this (defaultMessage, innerExceptions)
                {
                }
                
index 6a5f71471288ad27e8c3a262b4c84637f5af6dae..d14271c623a0965ce9f5c9e75411b05e2f2fe293 100644 (file)
@@ -4,7 +4,7 @@
 // Authors:
 //     Sebastien Pouliot  <sebastien@xamarin.com>
 //
-// Copyright 2012-2013 Xamarin Inc. All rights reserved.
+// Copyright 2012-2014 Xamarin Inc. All rights reserved.
 //
 
 #if FULL_AOT_RUNTIME
@@ -23,7 +23,7 @@ namespace System {
                        extern static void monotouch_log (string s);
 
                        [DllImport ("/usr/lib/libSystem.dylib")]
-                       extern static int write (int fd, byte [] buffer, int n);
+                       extern static /* ssize_t */ IntPtr write (int fd, byte [] buffer, /* size_t */ IntPtr n);
                        
                        StringBuilder sb;
                        
@@ -39,7 +39,8 @@ namespace System {
                        static void direct_write_to_stdout (string s)
                        {
                                byte [] b = Encoding.Default.GetBytes (s);
-                               while (write (1, b, b.Length) == -1 && Marshal.GetLastWin32Error () == /* EINTR*/ 4)
+                               var len = (IntPtr) b.Length;
+                               while ((int) write (1, b, len) == -1 && Marshal.GetLastWin32Error () == /* EINTR*/ 4)
                                        ;
                        }
                        
index c3da055efc02589a97da57a0fc3d9f8d0ca52e81..30bc6f8edf82b05deb1da4e8a2ebc8a2cacd389c 100644 (file)
@@ -214,6 +214,10 @@ namespace System
                        "yyyy/MMMM",
                };
 
+               private static readonly string[] ExoticAndNonStandardFormats = new string[] {
+                       "ddMMMyyyy"
+               };
+
                private enum Which 
                {
                        Day,
@@ -927,6 +931,9 @@ namespace System
                        if (ParseExact (s, dfi.GetAllDateTimePatternsInternal (), dfi, styles, out result, false, ref longYear, setExceptionOnError, ref exception))
                                return true;
 
+                       if (ParseExact (s, ExoticAndNonStandardFormats, dfi, styles, out result, false, ref longYear, setExceptionOnError, ref exception))
+                               return true;
+
                        if (!setExceptionOnError)
                                return false;
                        
index 13d63ccc129d66740dc1148e997d36aa5b2b7d46..122606212391a547dfc5f8b65547016ab8c02fe1 100644 (file)
@@ -715,7 +715,7 @@ namespace System {
                        return GetLogicalDrivesInternal ();
                }
 
-#if !NET_2_1
+#if !MOBILE
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                private static extern void internalBroadcastSettingChange ();
 
@@ -826,10 +826,24 @@ namespace System {
                                throw new ArgumentException ("target");
                        }
                }
+#else
+               public static void SetEnvironmentVariable (string variable, string value)
+               {
+                       if (variable == null)
+                               throw new ArgumentNullException ("variable");
+                       if (variable == String.Empty)
+                               throw new ArgumentException ("String cannot be of zero length.", "variable");
+                       if (variable.IndexOf ('=') != -1)
+                               throw new ArgumentException ("Environment variable name cannot contain an equal character.", "variable");
+                       if (variable[0] == '\0')
+                               throw new ArgumentException ("The first char in the string is the null character.", "variable");
 
+                       InternalSetEnvironmentVariable (variable, value);
+               }
+#endif
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                internal static extern void InternalSetEnvironmentVariable (string variable, string value);
-#endif
+
                [SecurityPermission (SecurityAction.LinkDemand, UnmanagedCode=true)]
                public static void FailFast (string message)
                {
index 698a25588f63abdaca2e1f7553533ca6fc5e512a..e38c904590094c4d205afd198fea736b31ea4bdd 100644 (file)
@@ -353,6 +353,19 @@ namespace MonoTests.System.Collections.Concurrent
                        } catch (ArgumentNullException ex) {
                        }
                }
+               
+               [Test]
+               public void ContainsKeyPairTest ()
+               {
+                       var validKeyPair = new KeyValuePair<string, string> ("key", "validValue");
+                       var wrongKeyPair = new KeyValuePair<string, string> ("key", "wrongValue");
+
+                       IDictionary<string, string> dict = new ConcurrentDictionary<string, string> ();
+                       dict.Add (validKeyPair);
+
+                       Assert.IsTrue (dict.Contains (validKeyPair));
+                       Assert.IsFalse (dict.Contains (wrongKeyPair));
+               }
        }
 }
 #endif
index df35b501787f59df719c89079da690cb93506097..91436a05b2127ccce3817228f27378facd793db7 100644 (file)
@@ -244,13 +244,15 @@ namespace MonoTests.System.Collections.Concurrent
                {
                        queue.CopyTo (new int[3], 0);
                }
-               
+
                static WeakReference CreateWeakReference (object obj)
                {
                        return new WeakReference (obj);
                }
-               
+
                [Test]
+               // This depends on precise stack scanning
+               [Category ("NotWorking")]
                public void TryDequeueReferenceTest ()
                {
                        var obj = new Object ();
index 1f6be893342298d64c730dd186ce4a6a56b5a378..9aa0d46510b588c911e90fca0a5aaea14e6a1388 100644 (file)
@@ -1928,6 +1928,7 @@ namespace MonoTests.System.Threading.Tasks
                }
 
                [Test]
+               [Category("MobileNotWorking")]
                public void TaskContinuationChainLeak()
                {
                        // Start cranking out tasks, starting each new task upon completion of and from inside the prior task.
index 0e7b294f3b9495c29fef8db2a6b71faf1be62475..343e723be82e8b6ce8bf0145a4e4a57c93a78482 100644 (file)
@@ -1216,6 +1216,15 @@ namespace MonoTests.System
                        DateTime.Parse ("Sat,,, 01,,, Oct,,, ,,,1994 03:00:00", CultureInfo.InvariantCulture);
                }
 
+               [Test]
+               public void TryParse_Bug11630 ()
+               {
+                       DateTime parsed;
+
+                       Assert.IsTrue (DateTime.TryParse ("10Feb2013", out parsed));
+                       Assert.AreEqual (new DateTime (2013, 2, 10), parsed);
+               }
+
                [Test]
                [ExpectedException (typeof (FormatException))]
                public void Parse_CommaAfterHours ()
index 20fc57d86ca0b62202d7bb5995864715ea27fd65..43e03fbfa33674b15669ac0e96e7cdbe64ccd6ae 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
index c15c6137786a511569b25f0f4e809a630dd4dd10..04353c4546900bc12021ea0b7fa92a0fa6ea1eaa 100644 (file)
@@ -63,14 +63,21 @@ namespace Monodoc.Generators.Html
 
                public string Htmlize (XmlReader ecma_xml, XsltArgumentList args)
                {
-                       EnsureTransform ();
-               
-                       var output = new StringBuilder ();
-                       ecma_transform.Transform (ecma_xml, 
-                                                 args, 
-                                                 XmlWriter.Create (output, ecma_transform.OutputSettings),
-                                                 CreateDocumentResolver ());
-                       return output.ToString ();
+                       try{
+                               EnsureTransform ();
+                       
+                               var output = new StringBuilder ();
+                               ecma_transform.Transform (ecma_xml, 
+                                                         args, 
+                                                         XmlWriter.Create (output, ecma_transform.OutputSettings),
+                                                         CreateDocumentResolver ());
+                               return output.ToString ();
+                       }
+                       catch(Exception x)
+                       {
+                               var msg = x.ToString ();
+                               return msg;
+                       }
                }
                
                protected virtual XmlResolver CreateDocumentResolver ()
@@ -81,21 +88,14 @@ namespace Monodoc.Generators.Html
 
                public string Export (Stream stream, Dictionary<string, string> extraArgs)
                {
-                       return Htmlize (XmlReader.Create (WrapStream (new StreamReader (stream), extraArgs)), extraArgs);
+                       return Htmlize (XmlReader.Create (new StreamReader(stream)), extraArgs);
                }
 
                public string Export (string input, Dictionary<string, string> extraArgs)
                {
-                       return Htmlize (XmlReader.Create (WrapStream (new StringReader (input), extraArgs)), extraArgs);
+                       return Htmlize (XmlReader.Create (new StringReader(input)), 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 ()
                {
@@ -329,81 +329,5 @@ 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]);
-               }
-       }
+               
 }
diff --git a/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs b/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs
deleted file mode 100644 (file)
index 5ab8e84..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-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 7b709f70f53b195636691fad0cfc8764e11622bc..d412797a8ff57e7317ecd776acdb014113c4fea9 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
   <ItemGroup>\r
     <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj">\r
       <Project>{0B587DBA-BA92-4B92-821A-AA200C612A7E}</Project>\r
-      <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5</Name>\r
+      <Name>ICSharpCode.SharpZipLib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System/System-net_4_5.csproj">\r
       <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
+      <Name>System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
       <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
+      <Name>System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
       <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
+      <Name>System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
       <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
+      <Name>System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
       <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
+      <Name>System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index b5af3b71a048f0191190b9b0a7704a9be14dc852..b806b8fb6e970302dd755c331a070e831781639a 100644 (file)
@@ -6,4 +6,3 @@ Monodoc/SettingsTest.cs
 Monodoc.Generators/RawGeneratorTests.cs
 Monodoc/NodeTest.cs
 Monodoc/RootTreeTest.cs
-Monodoc.Generators/AvoidCDataTextReaderTests.cs
diff --git a/mcs/errors/CS0012-23-lib.il b/mcs/errors/CS0012-23-lib.il
new file mode 100644 (file)
index 0000000..2f99677
--- /dev/null
@@ -0,0 +1,26 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern System.Core
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-23-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-23-lib.dll'
+
+
+.class public abstract auto ansi sealed beforefieldinit B
+       extends [mscorlib]System.Object
+{
+  .field  public static valuetype ['CS0012-lib-missing']Struct`1<int32>[] ArrayMember
+}
diff --git a/mcs/errors/CS1607-3-lib.cs b/mcs/errors/CS1607-3-lib.cs
deleted file mode 100644 (file)
index 3066cf9..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: AssemblyVersion ("1.0.0.0")]
-[assembly: AssemblyCulture ("en-US")]
-
-public class Lang
-{
-}
diff --git a/mcs/errors/CS8009-lib.cs b/mcs/errors/CS8009-lib.cs
new file mode 100644 (file)
index 0000000..3066cf9
--- /dev/null
@@ -0,0 +1,10 @@
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyCulture ("en-US")]
+
+public class Lang
+{
+}
index dc76a1cd6f707393242c72c7e5cb5622e91c83c2..f994abac1ea394d1af4d5f194ee41dff18791ee7 100644 (file)
@@ -21,7 +21,7 @@ DISTFILES = \
        $(wildcard dlls/second/*.cs)
 
 TEST_SUPPORT_FILES = \
-       CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll CS0012-11-lib.dll CS0012-12-lib.dll CS0012-13-lib.dll CS0012-14-lib.dll CS0012-15-lib.dll CS0012-16-lib.dll CS0012-17-lib.dll CS0012-18-lib.dll CS0012-21-lib.dll CS0012-22-lib.dll CS0019-71-lib.dll CS0029-26-lib.dll \
+       CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll CS0012-11-lib.dll CS0012-12-lib.dll CS0012-13-lib.dll CS0012-14-lib.dll CS0012-15-lib.dll CS0012-16-lib.dll CS0012-17-lib.dll CS0012-18-lib.dll CS0012-21-lib.dll CS0012-22-lib.dll CS0012-23-lib.dll CS0019-71-lib.dll CS0029-26-lib.dll \
        CS0103-2-lib.dll CS0118-2-lib.dll CS0122-8-lib.dll CS0122-10-lib.dll CS0122-14-lib.dll CS0122-15-lib.dll CS0122-19-lib.dll CS0122-35-lib.dll CS0122-36-lib.dll CS0143-lib.dll CS0144-3-lib.dll CS0165-19-lib.dll \
        CS0205-3-lib.dll CS0246-29-lib.dll CS0229-3-lib.dll CS0229-4-lib.dll CS0266-25-lib.dll \
        CS0315-2-lib.dll \
@@ -32,9 +32,10 @@ TEST_SUPPORT_FILES = \
        CS0730-lib.dll CS0731-1-lib.dll CS0731-2-lib.dll \
        CS1070-lib.dll \
        CS1540-15-lib.dll CS1540-17-lib.dll CS1542-lib.dll CS1577-lib.dll \
-       CS1607-3-lib.dll CS1683-lib.dll CS1684-lib.dll CS1685-2-lib.dll \
+       CS1683-lib.dll CS1684-lib.dll CS1685-2-lib.dll \
        dlls/first/CS1701-lib.dll dlls/second/CS1701-lib.dll CS1701-lib.dll dlls/first/CS1702-lib.dll dlls/second/CS1702-lib.dll CS1702-lib.dll dlls/first/CS1705-lib.dll dlls/second/CS1705-lib.dll CS1705-lib.dll \
        CS2015-lib.dll CS3005-16-lib.dll CS3013-module.dll CSExternAlias-lib.dll \
+       CS8009-lib.dll \
        CSFriendAssembly-lib.dll \
        dlls/first/CS1703-lib.dll dlls/first/CS1704-lib.dll \
        dlls/second/CS1703-lib.dll dlls/second/CS1704-lib.dll
diff --git a/mcs/errors/cs0012-23.cs b/mcs/errors/cs0012-23.cs
new file mode 100644 (file)
index 0000000..a8b454a
--- /dev/null
@@ -0,0 +1,11 @@
+// CS0012: The type `Struct`1<int>' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 9
+// Compiler options: -r:CS0012-23-lib.dll
+
+public class C
+{
+       public static void Main ()
+       {
+               var val = B.ArrayMember;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0070-2.cs b/mcs/errors/cs0070-2.cs
new file mode 100644 (file)
index 0000000..95f9cdb
--- /dev/null
@@ -0,0 +1,24 @@
+// CS0070: The event `A.evt' can only appear on the left hand side of += or -= when used outside of the type `A'
+// Line: 22
+
+using System;
+
+public static class EventExtensions
+{
+       public static void Raise (this EventHandler h)
+       {
+       }
+}
+
+public class A
+{
+       public event EventHandler evt;
+}
+
+public class B : A
+{
+       public void Run()
+       {
+               Action a = () => evt.Raise ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0127-2.cs b/mcs/errors/cs0127-2.cs
deleted file mode 100644 (file)
index 1b36551..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// CS0127: `C.GetValue()': A return keyword must not be followed by any expression when method returns void
-// Line: 11
-
-using System;
-using System.Threading.Tasks;
-
-class C
-{
-       public async void GetValue()
-       {
-               return await Task.FromResult(100);
-       }
-}
diff --git a/mcs/errors/cs0127-3.cs b/mcs/errors/cs0127-3.cs
deleted file mode 100644 (file)
index 5e39cb9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-// CS0127: `System.Action': A return keyword must not be followed by any expression when delegate returns void
-// Line: 10
-
-using System;
-
-class C
-{
-       public void Test ()
-       {
-               Action a = () => { return Skip (); };
-       }
-       
-       void Skip ()
-       {
-       }
-}
diff --git a/mcs/errors/cs0127-4.cs b/mcs/errors/cs0127-4.cs
deleted file mode 100644 (file)
index 64e3f96..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS0127: `D': A return keyword must not be followed by any expression when delegate returns void
-// Line: 9
-
-delegate void D (int x);
-
-class X {
-       static void Main ()
-       {
-               D d6 = delegate (int x) { return x; }; // Return type mismatch.
-       }
-}
diff --git a/mcs/errors/cs0133-6.cs b/mcs/errors/cs0133-6.cs
new file mode 100644 (file)
index 0000000..a523169
--- /dev/null
@@ -0,0 +1,10 @@
+// CS0133: The expression being assigned to `o' must be constant
+// Line: 8
+
+class X
+{
+       void Foo ()
+       {
+               const object o = "" ?? null;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0133-7.cs b/mcs/errors/cs0133-7.cs
new file mode 100644 (file)
index 0000000..10d82d9
--- /dev/null
@@ -0,0 +1,10 @@
+// CS0133: The expression being assigned to `o' must be constant
+// Line: 8
+
+class X
+{
+       void Foo ()
+       {
+               const object o = null ?? "";
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0181-2.cs b/mcs/errors/cs0181-2.cs
new file mode 100644 (file)
index 0000000..6334606
--- /dev/null
@@ -0,0 +1,18 @@
+// CS0181: Attribute constructor parameter has type `int[][]', which is not a valid attribute parameter type
+// Line: 13
+
+using System;
+
+class TestAttribute: Attribute
+{
+       public TestAttribute (int[][] o) {}
+}
+
+public class E
+{
+       [Test (null)]
+       public static void Main ()
+       {
+               System.Reflection.MethodBase.GetCurrentMethod().GetCustomAttributes (true);
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0181-3.cs b/mcs/errors/cs0181-3.cs
new file mode 100644 (file)
index 0000000..6e2f5b6
--- /dev/null
@@ -0,0 +1,21 @@
+// CS0181: Attribute constructor parameter has type `System.Enum', which is not a valid attribute parameter type
+// Line: 18
+
+using System;
+
+enum E
+{ 
+       Value
+}
+
+class AAttribute : Attribute
+{ 
+       public AAttribute (Enum e)
+       {
+       }
+}
+
+[A (E.Value)]
+class Test
+{
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0181-4.cs b/mcs/errors/cs0181-4.cs
new file mode 100644 (file)
index 0000000..80ed562
--- /dev/null
@@ -0,0 +1,16 @@
+// CS0181: Attribute constructor parameter has type `System.Attribute', which is not a valid attribute parameter type
+// Line: 6
+
+using System;
+
+[BAttribute (null)]
+public class BAttribute : Attribute
+{
+       public BAttribute (Attribute a)
+       {
+       }
+       
+       public static void Main ()
+       {
+       }
+}
diff --git a/mcs/errors/cs0181.cs b/mcs/errors/cs0181.cs
new file mode 100644 (file)
index 0000000..f04342c
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0181: Attribute constructor parameter has type `int[,]', which is not a valid attribute parameter type
+// Line: 13
+
+using System;
+
+class TestAttribute: Attribute
+{
+    public TestAttribute (int[,] i) {}
+}
+
+public class E
+{
+    [Test (null)]
+    public void Method () {}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0182-10.cs b/mcs/errors/cs0182-10.cs
deleted file mode 100644 (file)
index 1ce2d2f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression
-// Line: 13
-
-using System;
-
-class TestAttribute: Attribute
-{
-       public TestAttribute (int[][] o) {}
-}
-
-public class E
-{
-       [Test (null)]
-       public static void Main ()
-       {
-               System.Reflection.MethodBase.GetCurrentMethod().GetCustomAttributes (true);
-       }
-}
\ No newline at end of file
diff --git a/mcs/errors/cs0182-12.cs b/mcs/errors/cs0182-12.cs
deleted file mode 100644 (file)
index 2827f63..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression
-// Line: 18
-
-using System;
-
-enum E
-{ 
-       Value
-}
-
-class AAttribute : Attribute
-{ 
-       public AAttribute (Enum e)
-       {
-       }
-}
-
-[A (E.Value)]
-class Test
-{
-}
\ No newline at end of file
diff --git a/mcs/errors/cs0182-13.cs b/mcs/errors/cs0182-13.cs
deleted file mode 100644 (file)
index 8c764b2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression
-// Line: 6
-
-using System;
-
-[BAttribute (null)]
-public class BAttribute : Attribute
-{
-       public BAttribute (Attribute a)
-       {
-       }
-       
-       public static void Main ()
-       {
-       }
-}
diff --git a/mcs/errors/cs0182-2.cs b/mcs/errors/cs0182-2.cs
deleted file mode 100644 (file)
index b988a04..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression
-// Line: 13
-
-using System;
-
-class TestAttribute: Attribute
-{
-    public TestAttribute (int[,] i) {}
-}
-
-public class E
-{
-    [Test (null)]
-    public void Method () {}
-}
\ No newline at end of file
diff --git a/mcs/errors/cs0253-3.cs b/mcs/errors/cs0253-3.cs
new file mode 100644 (file)
index 0000000..0cf7968
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0253: Possible unintended reference comparison. Consider casting the right side expression to type `System.Action' to get value comparison
+// Line: 13
+// Compiler options: -warnaserror
+
+using System;
+
+class MainClass
+{
+       public static void Main ()
+       {
+               Action a = null;
+               object b = null;
+               var x = a == b;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0545-2.cs b/mcs/errors/cs0545-2.cs
new file mode 100644 (file)
index 0000000..61d3887
--- /dev/null
@@ -0,0 +1,16 @@
+// CS0545: `B.Prop': cannot override because `A.Prop' does not have accessible get accessor
+// Line: 13
+
+public class A
+{
+       public virtual string Prop {
+               set; private get;
+       }  
+}
+public class B : A
+{
+       sealed override public string Prop {
+               set { }
+       }   
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0546-2.cs b/mcs/errors/cs0546-2.cs
new file mode 100644 (file)
index 0000000..4cec448
--- /dev/null
@@ -0,0 +1,16 @@
+// CS0546: `B.Prop': cannot override because `A.Prop' does not have accessible set accessor
+// Line: 13
+
+public class A
+{
+       public virtual string Prop {
+               get; private set;
+       }
+}
+public class B : A
+{
+       sealed override public string Prop {
+               get { return ""; }
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0591-2.cs b/mcs/errors/cs0591-2.cs
new file mode 100644 (file)
index 0000000..31df043
--- /dev/null
@@ -0,0 +1,9 @@
+// CS0591: Invalid value for argument to `System.Runtime.InteropServices.GuidAttribute' attribute
+// Line: 6
+
+using System.Runtime.InteropServices;
+
+[Guid ("aaa")]
+class X {
+static void Main () {}
+}
diff --git a/mcs/errors/cs0591-3.cs b/mcs/errors/cs0591-3.cs
new file mode 100644 (file)
index 0000000..8254a5b
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0591: Invalid value for argument to `System.Runtime.InteropServices.DllImportAttribute' attribute
+// Line: 8
+
+using System.Runtime.InteropServices;
+using System;
+
+class X {
+       [DllImport ("")]
+       extern static void Blah ();
+
+    static void Main (string [] args)
+    {
+    }
+
+}
diff --git a/mcs/errors/cs0591-4.cs b/mcs/errors/cs0591-4.cs
new file mode 100644 (file)
index 0000000..adf1ff5
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0591: Invalid value for argument to `System.Runtime.InteropServices.DllImportAttribute' attribute
+// Line: 8
+
+using System.Runtime.InteropServices;
+using System;
+
+class X {
+       [DllImport (null)]
+       extern static void Blah ();
+
+    static void Main (string [] args)
+    {
+    }
+
+}
diff --git a/mcs/errors/cs0591-5.cs b/mcs/errors/cs0591-5.cs
new file mode 100644 (file)
index 0000000..964dca9
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0591: Invalid value for argument to `System.Runtime.CompilerServices.MethodImplAttribute' attribute
+// Line: 8
+
+using System.Runtime.CompilerServices;
+
+class Test
+{
+       [MethodImplAttribute(445)]
+       public void test ()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0591-6.cs b/mcs/errors/cs0591-6.cs
new file mode 100644 (file)
index 0000000..b9a4b2e
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0591: Invalid value for argument to `System.Runtime.CompilerServices.MethodImplAttribute' attribute
+// Line: 8
+
+using System.Runtime.CompilerServices;
+
+class Program
+{
+       [MethodImpl((MethodImplOptions)255)]
+       void Foo()
+       {
+       }
+}
\ No newline at end of file
index 8d5dc46a009b77d70729d320d33cc9c1ea8ad7a7..6ffbe846b0f59517a4abf63508b47b71cdf672c4 100644 (file)
@@ -1,4 +1,4 @@
-// CS0591: Invalid value for argument to `System.AttributeUsage' attribute
+// CS0591: Invalid value for argument to `System.AttributeUsageAttribute' attribute
 // Line: 4
 
 [System.AttributeUsage(0)]
diff --git a/mcs/errors/cs0647-10.cs b/mcs/errors/cs0647-10.cs
deleted file mode 100644 (file)
index aa5c0e3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS0647: Error during emitting `System.Runtime.InteropServices.MarshalAsAttribute' attribute. The reason is `Specified unmanaged type is only valid on fields'
-// Line: 10
-
-using System;
-using System.Runtime.InteropServices;
-
-public class main {
-
-    [DllImport("libname", EntryPoint = "scumbag")]
-    static extern int scumbag(ref int X, [MarshalAs(UnmanagedType.ByValArray)] ref byte[] fb);
-}
diff --git a/mcs/errors/cs0647-11.cs b/mcs/errors/cs0647-11.cs
deleted file mode 100644 (file)
index aa5c0e3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS0647: Error during emitting `System.Runtime.InteropServices.MarshalAsAttribute' attribute. The reason is `Specified unmanaged type is only valid on fields'
-// Line: 10
-
-using System;
-using System.Runtime.InteropServices;
-
-public class main {
-
-    [DllImport("libname", EntryPoint = "scumbag")]
-    static extern int scumbag(ref int X, [MarshalAs(UnmanagedType.ByValArray)] ref byte[] fb);
-}
diff --git a/mcs/errors/cs0647-12.cs b/mcs/errors/cs0647-12.cs
deleted file mode 100644 (file)
index f1d8370..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// CS0647: Error during emitting `System.Runtime.InteropServices.DllImportAttribute' attribute. The reason is `DllName cannot be empty or null'
-// Line: 8
-
-using System.Runtime.InteropServices;
-using System;
-
-class X {
-       [DllImport ("")]
-       extern static void Blah ();
-
-    static void Main (string [] args)
-    {
-    }
-
-}
diff --git a/mcs/errors/cs0647-13.cs b/mcs/errors/cs0647-13.cs
deleted file mode 100644 (file)
index 96751a1..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// CS0647: Error during emitting `System.Runtime.InteropServices.DllImportAttribute' attribute. The reason is `DllName cannot be empty or null'
-// Line: 8
-
-using System.Runtime.InteropServices;
-using System;
-
-class X {
-       [DllImport (null)]
-       extern static void Blah ();
-
-    static void Main (string [] args)
-    {
-    }
-
-}
diff --git a/mcs/errors/cs0647-15.cs b/mcs/errors/cs0647-15.cs
deleted file mode 100644 (file)
index 104d2db..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value'
-// Line: 8
-
-using System.Runtime.CompilerServices;
-
-class Test
-{
-       [MethodImplAttribute(445)]
-       public void test ()
-       {
-       }
-}
\ No newline at end of file
diff --git a/mcs/errors/cs0647-16.cs b/mcs/errors/cs0647-16.cs
deleted file mode 100644 (file)
index 41c3e05..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-// CS0647: Error during emitting `System.Reflection.AssemblyCultureAttribute' attribute. The reason is `The executables cannot be satelite assemblies, remove the attribute or keep it empty'
-// Line: 7
-
-using System;
-using System.Reflection;
-
-[assembly: AssemblyCulture("es")]
-[assembly: AssemblyVersion("1.2.3456.7")]
-
-namespace NS 
-{
-       class MyClass 
-       {
-               static void Main ()
-               {
-                       Console.WriteLine (typeof(MyClass).Assembly.FullName);
-               }
-       }
-}
diff --git a/mcs/errors/cs0647-17.cs b/mcs/errors/cs0647-17.cs
deleted file mode 100644 (file)
index 88117de..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// Cs0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `0.0.0.80420' is not valid'
-// Line: 7
-
-using System;
-using System.Reflection;
-
-[assembly: AssemblyVersion ("0.0.0.80420")]
-
-public class Test {
-
-       public static int Main ()
-       {
-               return 1;
-       }
-}
diff --git a/mcs/errors/cs0647-18.cs b/mcs/errors/cs0647-18.cs
deleted file mode 100644 (file)
index ce57d73..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-// CS0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `2.0.*.*' is not valid'
-// Line: 6
-
-using System.Reflection;
-
-[assembly: AssemblyVersion("2.0.*.*")]
diff --git a/mcs/errors/cs0647-19.cs b/mcs/errors/cs0647-19.cs
deleted file mode 100644 (file)
index 25b0400..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-// CS0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `2.*' is not valid'
-// Line: 6
-
-using System.Reflection;
-
-[assembly: AssemblyVersion("2.*")]
diff --git a/mcs/errors/cs0647-2.cs b/mcs/errors/cs0647-2.cs
deleted file mode 100644 (file)
index 5e05cfb..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// CS0647: Error during emitting `System.Security.Permissions.SecurityPermissionAttribute' attribute. The reason is `SecurityAction `Demand' is not valid for this declaration'
-// Line : 10
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.Demand, SkipVerification=true)]
-
-class Test
-{
-       static void Main () {}
-}
diff --git a/mcs/errors/cs0647-20.cs b/mcs/errors/cs0647-20.cs
deleted file mode 100644 (file)
index 2b03f1c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value'
-// Line: 8
-
-using System.Runtime.CompilerServices;
-
-class Program
-{
-       [MethodImpl((MethodImplOptions)255)]
-       void Foo()
-       {
-       }
-}
\ No newline at end of file
diff --git a/mcs/errors/cs0647-3.cs b/mcs/errors/cs0647-3.cs
deleted file mode 100644 (file)
index 272855d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-// CS0647: Error during emitting `System.Security.Permissions.SecurityPermissionAttribute' attribute. The reason is `SecurityAction `RequestMinimum' is not valid for this declaration'
-// Line : 10
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.RequestMinimum, ControlPrincipal=true, Flags=SecurityPermissionFlag.ControlPrincipal)]
-       static public void Main (string[] args)
-       {
-       }
-}
diff --git a/mcs/errors/cs0647-4.cs b/mcs/errors/cs0647-4.cs
deleted file mode 100644 (file)
index d799cee..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// CS0647: Error during emitting `DebugPermissionAttribute' attribute. The reason is `it is attached to invalid parent'
-// Line : 10
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [DebugPermission (SecurityAction.RequestMinimum)]
-        public int i;
-}
-
-[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
-[Serializable]
-public class DebugPermissionAttribute : CodeAccessSecurityAttribute {
-
-       public DebugPermissionAttribute (SecurityAction action)
-               : base (action)
-       {
-       }
-        
-       public override IPermission CreatePermission ()
-       {
-               return null;
-       }
-}
diff --git a/mcs/errors/cs0647-5.cs b/mcs/errors/cs0647-5.cs
deleted file mode 100644 (file)
index 20917f3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-// CS0647: Error during emitting `DebugPermissionAttribute' attribute. The reason is `it is attached to invalid parent'
-// Line : 11
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-        public delegate int DisplayHandler (string msg);
-     
-       [DebugPermission (SecurityAction.RequestMinimum)]
-        public event DisplayHandler OnShow;
-}
-
-[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
-[Serializable]
-public class DebugPermissionAttribute : CodeAccessSecurityAttribute {
-
-       public DebugPermissionAttribute (SecurityAction action)
-               : base (action)
-       {
-       }
-        
-       public override IPermission CreatePermission ()
-       {
-               return null;
-       }
-}
diff --git a/mcs/errors/cs0647-6.cs b/mcs/errors/cs0647-6.cs
deleted file mode 100644 (file)
index 9e7c37e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// CS0647: Error during emitting `DebugPermissionAttribute' attribute. The reason is `it is attached to invalid parent'
-// Line : 11
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-        [return: DebugPermission (SecurityAction.LinkDemand)]
-        public int Show (string message)
-        {
-                return 2;
-        }    
-}
-
-[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
-[Serializable]
-public class DebugPermissionAttribute : CodeAccessSecurityAttribute {
-
-       public DebugPermissionAttribute (SecurityAction action)
-               : base (action)
-       {
-       }
-        
-       public override IPermission CreatePermission ()
-       {
-               return null;
-       }
-}
diff --git a/mcs/errors/cs0647-7.cs b/mcs/errors/cs0647-7.cs
deleted file mode 100644 (file)
index 314fafe..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// CS0647: Error during emitting `DebugPermissionAttribute' attribute. The reason is `it is attached to invalid parent'
-// Line : 11
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-        [DebugPermission (SecurityAction.LinkDemand)]
-        public int Show
-        {
-            get {
-                return 2;
-            }
-        }    
-}
-
-[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
-[Serializable]
-public class DebugPermissionAttribute : CodeAccessSecurityAttribute {
-
-       public DebugPermissionAttribute (SecurityAction action)
-               : base (action)
-       {
-       }
-        
-       public override IPermission CreatePermission ()
-       {
-               return null;
-       }
-}
diff --git a/mcs/errors/cs0647-9.cs b/mcs/errors/cs0647-9.cs
deleted file mode 100644 (file)
index a7a1b38..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-// CS0647: Error during emitting `System.Security.Permissions.PrincipalPermissionAttribute' attribute. The reason is `SecurityAction is out of range'
-// Line : 10
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [PrincipalPermission ((SecurityAction)100, Name="Poupou")]
-       public virtual void Show (string message)
-       {
-       }
-}
diff --git a/mcs/errors/cs0647.cs b/mcs/errors/cs0647.cs
deleted file mode 100644 (file)
index 154bfff..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS0647: Error during emitting `System.Runtime.InteropServices.GuidAttribute' attribute. The reason is `Invalid Guid format: aaa'
-// Line: 6
-
-using System.Runtime.InteropServices;
-
-[Guid ("aaa")]
-class X {
-static void Main () {}
-}
diff --git a/mcs/errors/cs1501-16.cs b/mcs/errors/cs1501-16.cs
new file mode 100644 (file)
index 0000000..4dcbe3e
--- /dev/null
@@ -0,0 +1,14 @@
+// CS1501: No overload for method `Block' takes `2' arguments
+// Line: 12
+
+class X
+{
+       public static void Block (object type, object variables, params object[] expressions)
+       {
+       }
+
+       public static void Main ()
+       {
+               Block (variables: null, expressions: null);
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1593-5.cs b/mcs/errors/cs1593-5.cs
new file mode 100644 (file)
index 0000000..6055fee
--- /dev/null
@@ -0,0 +1,27 @@
+// CS1593: Delegate `System.Action<System.Threading.Tasks.Task>' does not take `0' arguments
+// Line: 17
+
+using System;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+
+namespace CrashRepro.Core
+{
+       public class X
+       {               
+               async void Foo ()
+               {
+                       var pushes = await Run ().ContinueWith (l =>
+                       {
+                               for (int i = 0; i < 1; ++i)
+                                       Run ().ContinueWith(() => { });
+                       });
+               }
+
+               Task Run ()
+               {
+                       return null;
+               }
+       }
+}
+
diff --git a/mcs/errors/cs1607-2.cs b/mcs/errors/cs1607-2.cs
deleted file mode 100644 (file)
index 2d0c3de..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-// CS1607: The version number `1.*' specified for `AssemblyFileVersion' is invalid
-// Line: 7
-// Compiler options: -warnaserror
-
-using System.Reflection;
-
-[assembly: AssemblyFileVersion ("1.*")]
diff --git a/mcs/errors/cs1607-3.cs b/mcs/errors/cs1607-3.cs
deleted file mode 100644 (file)
index 9268dfd..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// CS1607: Referenced assembly `CS1607-3-lib' has different culture setting of `en-US'
-// Line: 0
-// Compiler options: -r:CS1607-3-lib.dll -warnaserror
-
-using System;
-
-class Program
-{
-       static void Main ()
-       {
-               Console.WriteLine (typeof (Lang));
-       }
-}
index 6feb97925c79bb29e9e52577c2058724f8df774d..88f9c12deca51b8d214bd2e87c42b18b4efa6746 100644 (file)
@@ -1,3 +1,3 @@
-// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', `3', `4', `5', `Default' or `Future'
+// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 6
 // Line: 0
 // Compiler options: -langversion:ISO
diff --git a/mcs/errors/cs1644-35.cs b/mcs/errors/cs1644-35.cs
new file mode 100644 (file)
index 0000000..c97b37d
--- /dev/null
@@ -0,0 +1,17 @@
+// CS1644: Feature `exception filter' cannot be used because it is not part of the C# 5.0 language specification
+// Line: 14
+// Compiler options: -langversion:5
+
+using System;
+
+class X
+{
+       public static void Main ()
+       {
+               int x = 4;
+               try {
+                       throw null;
+               } catch (Exception) if (x > 0) {
+               }
+       }
+}
index 4b2021994cd0981194e2c11040e74fe2fcce492c..975a2f2c7ac193c7dc538ccb7d9a60dc3e4d5d15 100644 (file)
@@ -1,4 +1,4 @@
-// CS1700: Assembly reference `MyAssemblyName, Version=' is invalid and cannot be resolved
+// CS1700: Friend assembly reference `MyAssemblyName, Version=' is invalid and cannot be resolved
 // Line: 8
 // Compiler options: -warnaserror -warn:3
 
diff --git a/mcs/errors/cs1984.cs b/mcs/errors/cs1984.cs
deleted file mode 100644 (file)
index cf99841..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// CS1984: The `await' operator cannot be used in the body of a finally clause
-// Line: 13
-
-using System;
-using System.Threading.Tasks;
-
-class C
-{
-       public async Task Test ()
-       {
-               try {
-               } finally {
-                       await Call ();
-               }
-       }
-       
-       static Task Call ()
-       {
-               return null;
-       }
-}
diff --git a/mcs/errors/cs1985-2.cs b/mcs/errors/cs1985-2.cs
deleted file mode 100644 (file)
index 788d0e7..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// CS1985: The `await' operator cannot be used in a catch clause
-// Line: 18
-
-using System;
-using System.Threading.Tasks;
-
-class X
-{
-       public static void Main ()
-       {
-       }
-
-       static async Task Test ()
-       {
-               int x = 4;
-               try {
-                       throw null;
-               } catch (NullReferenceException) if (await Foo ()) {
-                       return;
-               }
-       }
-
-       static Task<bool> Foo ()
-       {
-               throw new NotImplementedException ();
-       }
-}
\ No newline at end of file
diff --git a/mcs/errors/cs1985.cs b/mcs/errors/cs1985.cs
deleted file mode 100644 (file)
index 62d3642..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// CS1985: The `await' operator cannot be used in a catch clause
-// Line: 13
-
-using System;
-using System.Threading.Tasks;
-
-class C
-{
-       public async Task Test ()
-       {
-               try {
-               } catch {
-                       await Call ();
-               }
-       }
-       
-       static Task Call ()
-       {
-               return null;
-       }
-}
diff --git a/mcs/errors/cs1997-2.cs b/mcs/errors/cs1997-2.cs
deleted file mode 100644 (file)
index 9f8c533..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-// CS1997: `System.Func<System.Threading.Tasks.Task>': A return keyword must not be followed by an expression when async delegate returns `Task'. Consider using `Task<T>' return type
-// Line: 12
-
-using System;
-using System.Threading.Tasks;
-
-class Test
-{
-       public static void Main()
-       {
-               Func<Task> t = async delegate {
-                       return null;
-               };
-
-               return;
-       }
-}
index e0e7caa4fb83d0723af18a2b26ef2ef1623fbb09..f6ac27d07eb4402e26c3a066472f827eb97a15c2 100644 (file)
@@ -1,4 +1,4 @@
-// CS4017: The CallerMemberName attribute cannot be applied because there is no standard conversion from `int' to `byte'
+// CS4017: The CallerLineNumberAttribute attribute cannot be applied because there is no standard conversion from `int' to `byte'
 // Line: 8
 
 using System.Runtime.CompilerServices;
diff --git a/mcs/errors/cs4024.cs b/mcs/errors/cs4024.cs
new file mode 100644 (file)
index 0000000..d3360ed
--- /dev/null
@@ -0,0 +1,17 @@
+// CS4024: The CallerLineNumberAttribute applied to parameter `x' will have no effect because it applies to a member that is used in context that do not allow optional arguments
+// Line: 14
+// Compiler options: -warnaserror
+
+using System.Runtime.CompilerServices;
+
+partial class D
+{
+       partial void Foo (int x = 2);
+}
+
+partial class D
+{
+       partial void Foo ([CallerLineNumber] int x)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs4025.cs b/mcs/errors/cs4025.cs
new file mode 100644 (file)
index 0000000..6e9f203
--- /dev/null
@@ -0,0 +1,17 @@
+// CS4025: The CallerFilePath applied to parameter `x' will have no effect because it applies to a member that is used in context that do not allow optional arguments
+// Line: 14
+// Compiler options: -warnaserror
+
+using System.Runtime.CompilerServices;
+
+partial class D
+{
+       partial void Foo (string x = "x");
+}
+
+partial class D
+{
+       partial void Foo ([CallerFilePath] string x)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs4026.cs b/mcs/errors/cs4026.cs
new file mode 100644 (file)
index 0000000..9497700
--- /dev/null
@@ -0,0 +1,17 @@
+// CS4026: The CallerMemberName applied to parameter `x' will have no effect because it applies to a member that is used in context that do not allow optional arguments
+// Line: 14
+// Compiler options: -warnaserror
+
+using System.Runtime.CompilerServices;
+
+partial class D
+{
+       partial void Foo (string x = "x");
+}
+
+partial class D
+{
+       partial void Foo ([CallerMemberName] string x)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs4029.cs b/mcs/errors/cs4029.cs
new file mode 100644 (file)
index 0000000..14fce4f
--- /dev/null
@@ -0,0 +1,19 @@
+// CS4029: Cannot return an expression of type `void'
+// Line: 15
+
+using System;
+using System.Threading.Tasks;
+
+class C
+{
+       static void Foo<T> (Func<Task<T>> f)
+       {
+       }
+
+       static void Main ()
+       {
+               Foo (async () => {
+                       return await Task.Factory.StartNew (() => { });
+               });
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7023-2.cs b/mcs/errors/cs7023-2.cs
new file mode 100644 (file)
index 0000000..ee14e24
--- /dev/null
@@ -0,0 +1,10 @@
+// CS7023: The second operand of `is' or `as' operator cannot be static type `X'
+// Line: 8
+
+static class X
+{
+       public static void Main ()
+       {
+               var v = null is X;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7023.cs b/mcs/errors/cs7023.cs
new file mode 100644 (file)
index 0000000..dae17ca
--- /dev/null
@@ -0,0 +1,10 @@
+// CS7023: The second operand of `is' or `as' operator cannot be static type `X'
+// Line: 8
+
+static class X
+{
+       public static void Main ()
+       {
+               var v = null as X;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7025.cs b/mcs/errors/cs7025.cs
new file mode 100644 (file)
index 0000000..59eca47
--- /dev/null
@@ -0,0 +1,13 @@
+// CS7025: Inconsistent accessibility: event type `System.Action<I>' is less accessible than event `C.E'
+// Line: 8
+
+using System;
+
+public class C
+{
+       public event Action<I> E;
+}
+
+interface I
+{
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7030.cs b/mcs/errors/cs7030.cs
new file mode 100644 (file)
index 0000000..01abf11
--- /dev/null
@@ -0,0 +1,6 @@
+// CS7030: Friend assembly reference cannot have `null' value
+// Line: 6
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo (null)]
diff --git a/mcs/errors/cs7034-2.cs b/mcs/errors/cs7034-2.cs
new file mode 100644 (file)
index 0000000..b769869
--- /dev/null
@@ -0,0 +1,6 @@
+// CS7034: The specified version string `2.0.*.*' does not conform to the required format - major[.minor[.build[.revision]]]
+// Line: 6
+
+using System.Reflection;
+
+[assembly: AssemblyVersion("2.0.*.*")]
diff --git a/mcs/errors/cs7034-3.cs b/mcs/errors/cs7034-3.cs
new file mode 100644 (file)
index 0000000..a406b0f
--- /dev/null
@@ -0,0 +1,6 @@
+// CS7034: The specified version string `2.*' does not conform to the required format - major[.minor[.build[.revision]]]
+// Line: 6
+
+using System.Reflection;
+
+[assembly: AssemblyVersion("2.*")]
diff --git a/mcs/errors/cs7034.cs b/mcs/errors/cs7034.cs
new file mode 100644 (file)
index 0000000..071535b
--- /dev/null
@@ -0,0 +1,15 @@
+// CS7034: The specified version string `0.0.0.80420' does not conform to the required format - major[.minor[.build[.revision]]]
+// Line: 7
+
+using System;
+using System.Reflection;
+
+[assembly: AssemblyVersion ("0.0.0.80420")]
+
+public class Test {
+
+       public static int Main ()
+       {
+               return 1;
+       }
+}
diff --git a/mcs/errors/cs7035.cs b/mcs/errors/cs7035.cs
new file mode 100644 (file)
index 0000000..0d27cb0
--- /dev/null
@@ -0,0 +1,7 @@
+// CS7035: The specified version string `1.*' does not conform to the recommended format major.minor.build.revision
+// Line: 7
+// Compiler options: -warnaserror
+
+using System.Reflection;
+
+[assembly: AssemblyFileVersion ("1.*")]
diff --git a/mcs/errors/cs7042-2.cs b/mcs/errors/cs7042-2.cs
new file mode 100644 (file)
index 0000000..a70c129
--- /dev/null
@@ -0,0 +1,10 @@
+// CS7042: The DllImport attribute cannot be applied to a method that is generic or contained in a generic type
+// Line: 9
+
+using System.Runtime.InteropServices;
+
+public class C
+{
+       [DllImport ("my.dll")]
+       static extern void Foo<T> ();
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7042.cs b/mcs/errors/cs7042.cs
new file mode 100644 (file)
index 0000000..efebf84
--- /dev/null
@@ -0,0 +1,10 @@
+// CS7042: The DllImport attribute cannot be applied to a method that is generic or contained in a generic type
+// Line: 9
+
+using System.Runtime.InteropServices;
+
+public class C<T>
+{
+       [DllImport ("my.dll")]
+       static extern void Foo ();
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7049.cs b/mcs/errors/cs7049.cs
new file mode 100644 (file)
index 0000000..91114e8
--- /dev/null
@@ -0,0 +1,14 @@
+// CS7049: Security attribute `System.Security.Permissions.PrincipalPermissionAttribute' has an invalid SecurityAction value `100'
+// Line: 10
+
+using System;
+using System.Security;
+using System.Security.Permissions;
+
+public class Program {
+
+       [PrincipalPermission ((SecurityAction)100, Name="Poupou")]
+       public virtual void Show (string message)
+       {
+       }
+}
diff --git a/mcs/errors/cs7050.cs b/mcs/errors/cs7050.cs
new file mode 100644 (file)
index 0000000..6909f18
--- /dev/null
@@ -0,0 +1,13 @@
+// CS7050: SecurityAction value `System.Security.Permissions.SecurityAction' is invalid for security attributes applied to an assembly
+// Line: 10
+
+using System;
+using System.Security;
+using System.Security.Permissions;
+
+[assembly: SecurityPermission (SecurityAction.Demand, SkipVerification=true)]
+
+class Test
+{
+       static void Main () {}
+}
diff --git a/mcs/errors/cs7051.cs b/mcs/errors/cs7051.cs
new file mode 100644 (file)
index 0000000..2d18f11
--- /dev/null
@@ -0,0 +1,14 @@
+// CS7051: SecurityAction value `System.Security.Permissions.SecurityAction' is invalid for security attributes applied to a type or a method
+// Line: 10
+
+using System;
+using System.Security;
+using System.Security.Permissions;
+
+public class Program {
+
+       [SecurityPermission (SecurityAction.RequestMinimum, ControlPrincipal=true, Flags=SecurityPermissionFlag.ControlPrincipal)]
+       static public void Main (string[] args)
+       {
+       }
+}
diff --git a/mcs/errors/cs7055-2.cs b/mcs/errors/cs7055-2.cs
new file mode 100644 (file)
index 0000000..f2c15a8
--- /dev/null
@@ -0,0 +1,11 @@
+// CS7055: Unmanaged type `ByValArray' is only valid for fields
+// Line: 10
+
+using System;
+using System.Runtime.InteropServices;
+
+public class main {
+
+    [DllImport("libname", EntryPoint = "scumbag")]
+    static extern int scumbag(ref int X, [MarshalAs(UnmanagedType.ByValArray)] ref byte[] fb);
+}
diff --git a/mcs/errors/cs7055.cs b/mcs/errors/cs7055.cs
new file mode 100644 (file)
index 0000000..f2c15a8
--- /dev/null
@@ -0,0 +1,11 @@
+// CS7055: Unmanaged type `ByValArray' is only valid for fields
+// Line: 10
+
+using System;
+using System.Runtime.InteropServices;
+
+public class main {
+
+    [DllImport("libname", EntryPoint = "scumbag")]
+    static extern int scumbag(ref int X, [MarshalAs(UnmanagedType.ByValArray)] ref byte[] fb);
+}
diff --git a/mcs/errors/cs7059.cs b/mcs/errors/cs7059.cs
new file mode 100644 (file)
index 0000000..f19fd02
--- /dev/null
@@ -0,0 +1,19 @@
+// CS7059: Executables cannot be satellite assemblies. Remove the attribute or keep it empty
+// Line: 7
+
+using System;
+using System.Reflection;
+
+[assembly: AssemblyCulture("es")]
+[assembly: AssemblyVersion("1.2.3456.7")]
+
+namespace NS 
+{
+       class MyClass 
+       {
+               static void Main ()
+               {
+                       Console.WriteLine (typeof(MyClass).Assembly.FullName);
+               }
+       }
+}
diff --git a/mcs/errors/cs7070-2.cs b/mcs/errors/cs7070-2.cs
new file mode 100644 (file)
index 0000000..e618405
--- /dev/null
@@ -0,0 +1,28 @@
+// CS7070: Security attribute `DebugPermissionAttribute' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations
+// Line: 11
+
+using System;
+using System.Security;
+using System.Security.Permissions;
+
+public class Program {
+        public delegate int DisplayHandler (string msg);
+     
+       [DebugPermission (SecurityAction.RequestMinimum)]
+        public event DisplayHandler OnShow;
+}
+
+[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
+[Serializable]
+public class DebugPermissionAttribute : CodeAccessSecurityAttribute {
+
+       public DebugPermissionAttribute (SecurityAction action)
+               : base (action)
+       {
+       }
+        
+       public override IPermission CreatePermission ()
+       {
+               return null;
+       }
+}
diff --git a/mcs/errors/cs7070-3.cs b/mcs/errors/cs7070-3.cs
new file mode 100644 (file)
index 0000000..907993d
--- /dev/null
@@ -0,0 +1,32 @@
+// CS7070: Security attribute `DebugPermissionAttribute' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations
+// Line: 11
+
+using System;
+using System.Security;
+using System.Security.Permissions;
+
+public class Program {
+
+        [DebugPermission (SecurityAction.LinkDemand)]
+        public int Show
+        {
+            get {
+                return 2;
+            }
+        }    
+}
+
+[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
+[Serializable]
+public class DebugPermissionAttribute : CodeAccessSecurityAttribute {
+
+       public DebugPermissionAttribute (SecurityAction action)
+               : base (action)
+       {
+       }
+        
+       public override IPermission CreatePermission ()
+       {
+               return null;
+       }
+}
diff --git a/mcs/errors/cs7070-4.cs b/mcs/errors/cs7070-4.cs
new file mode 100644 (file)
index 0000000..a2c43a5
--- /dev/null
@@ -0,0 +1,30 @@
+// CS7070: Security attribute `DebugPermissionAttribute' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations
+// Line: 11
+
+using System;
+using System.Security;
+using System.Security.Permissions;
+
+public class Program {
+
+        [return: DebugPermission (SecurityAction.LinkDemand)]
+        public int Show (string message)
+        {
+                return 2;
+        }    
+}
+
+[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
+[Serializable]
+public class DebugPermissionAttribute : CodeAccessSecurityAttribute {
+
+       public DebugPermissionAttribute (SecurityAction action)
+               : base (action)
+       {
+       }
+        
+       public override IPermission CreatePermission ()
+       {
+               return null;
+       }
+}
diff --git a/mcs/errors/cs7070.cs b/mcs/errors/cs7070.cs
new file mode 100644 (file)
index 0000000..599a180
--- /dev/null
@@ -0,0 +1,27 @@
+// CS7070: Security attribute `DebugPermissionAttribute' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations
+// Line: 10
+
+using System;
+using System.Security;
+using System.Security.Permissions;
+
+public class Program {
+
+       [DebugPermission (SecurityAction.RequestMinimum)]
+        public int i;
+}
+
+[AttributeUsage (AttributeTargets.All, AllowMultiple = true, Inherited = false)]
+[Serializable]
+public class DebugPermissionAttribute : CodeAccessSecurityAttribute {
+
+       public DebugPermissionAttribute (SecurityAction action)
+               : base (action)
+       {
+       }
+        
+       public override IPermission CreatePermission ()
+       {
+               return null;
+       }
+}
diff --git a/mcs/errors/cs7080.cs b/mcs/errors/cs7080.cs
new file mode 100644 (file)
index 0000000..4da5075
--- /dev/null
@@ -0,0 +1,12 @@
+// CS7080: The CallerMemberNameAttribute applied to parameter `o' will have no effect. It is overridden by the CallerFilePathAttribute
+// Line: 9
+// Compiler options: -warnaserror
+
+using System.Runtime.CompilerServices;
+
+class D
+{
+       void Foo ([CallerMemberName, CallerFilePath] object o = null)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7081.cs b/mcs/errors/cs7081.cs
new file mode 100644 (file)
index 0000000..20597c1
--- /dev/null
@@ -0,0 +1,12 @@
+// CS7081: The CallerMemberNameAttribute applied to parameter `o' will have no effect. It is overridden by the CallerLineNumberAttribute
+// Line: 9
+// Compiler options: -warnaserror
+
+using System.Runtime.CompilerServices;
+
+class D
+{
+       void Foo ([CallerMemberName, CallerLineNumber] object o = null)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7082.cs b/mcs/errors/cs7082.cs
new file mode 100644 (file)
index 0000000..1b02bd5
--- /dev/null
@@ -0,0 +1,12 @@
+// CS7082: The CallerFilePathAttribute applied to parameter `o' will have no effect. It is overridden by the CallerLineNumberAttribute
+// Line: 9
+// Compiler options: -warnaserror
+
+using System.Runtime.CompilerServices;
+
+class D
+{
+       void Foo ([CallerFilePath, CallerLineNumber] object o = null)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7083-2.cs b/mcs/errors/cs7083-2.cs
new file mode 100644 (file)
index 0000000..14d378f
--- /dev/null
@@ -0,0 +1,10 @@
+// CS7083: Expression must be implicitly convertible to Boolean or its type `C' must define operator `false'
+// Line: 8
+
+class C
+{
+       dynamic M (dynamic d)
+       {
+               return this && d;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7083.cs b/mcs/errors/cs7083.cs
new file mode 100644 (file)
index 0000000..5f359c3
--- /dev/null
@@ -0,0 +1,10 @@
+// CS7083: Expression must be implicitly convertible to Boolean or its type `C' must define operator `true'
+// Line: 8
+
+class C
+{
+       dynamic M (dynamic d)
+       {
+               return this || d;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs7094.cs b/mcs/errors/cs7094.cs
new file mode 100644 (file)
index 0000000..93cd637
--- /dev/null
@@ -0,0 +1,15 @@
+// CS7094: The `await' operator cannot be used in the filter expression of a catch clause
+// Line: 12
+
+using System.Threading.Tasks;
+
+class Test
+{
+       async static Task M1 ()
+       {
+               try {
+               }
+               catch if (await Task.Factory.StartNew (() => false)) {
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8009.cs b/mcs/errors/cs8009.cs
new file mode 100644 (file)
index 0000000..851e066
--- /dev/null
@@ -0,0 +1,13 @@
+// CS8009: Referenced assembly `CS8009-lib' has different culture setting of `en-US'
+// Line: 0
+// Compiler options: -r:CS8009-lib.dll -warnaserror
+
+using System;
+
+class Program
+{
+       static void Main ()
+       {
+               Console.WriteLine (typeof (Lang));
+       }
+}
diff --git a/mcs/errors/cs8030-2.cs b/mcs/errors/cs8030-2.cs
new file mode 100644 (file)
index 0000000..231f211
--- /dev/null
@@ -0,0 +1,11 @@
+// CS8030: Anonymous function or lambda expression converted to a void returning delegate cannot return a value
+// Line: 9
+
+delegate void D (int x);
+
+class X {
+       static void Main ()
+       {
+               D d6 = delegate (int x) { return x; }; // Return type mismatch.
+       }
+}
diff --git a/mcs/errors/cs8030-3.cs b/mcs/errors/cs8030-3.cs
new file mode 100644 (file)
index 0000000..1ff2894
--- /dev/null
@@ -0,0 +1,13 @@
+// CS8030: Anonymous function or lambda expression converted to a void returning delegate cannot return a value
+// Line: 11
+
+using System;
+using System.Threading.Tasks;
+
+class C
+{
+       public async void GetValue()
+       {
+               return await Task.FromResult(100);
+       }
+}
diff --git a/mcs/errors/cs8030.cs b/mcs/errors/cs8030.cs
new file mode 100644 (file)
index 0000000..4f2751c
--- /dev/null
@@ -0,0 +1,16 @@
+// CS8030: Anonymous function or lambda expression converted to a void returning delegate cannot return a value
+// Line: 10
+
+using System;
+
+class C
+{
+       public void Test ()
+       {
+               Action a = () => { return Skip (); };
+       }
+       
+       void Skip ()
+       {
+       }
+}
diff --git a/mcs/errors/cs8031.cs b/mcs/errors/cs8031.cs
new file mode 100644 (file)
index 0000000..dbb83bc
--- /dev/null
@@ -0,0 +1,17 @@
+// CS8031: Async lambda expression or anonymous method converted to a `Task' cannot return a value. Consider returning `Task<T>'
+// Line: 12
+
+using System;
+using System.Threading.Tasks;
+
+class Test
+{
+       public static void Main()
+       {
+               Func<Task> t = async delegate {
+                       return null;
+               };
+
+               return;
+       }
+}
index b47867d3e33a68754ca2e1b82624d5a6897a0bcb..fcac218b1df5d647e516b280d0223fc2151eabc0 100644 (file)
@@ -256,11 +256,17 @@ unsigned n;
     return (p);
 }
 
+#ifdef __GNUC__
+#define GNUC_UNUSED __attribute__((__unused__))
+#else
+#define GNUC_UNUSED
+#endif
 
 create_file_names()
 {
     int i, len;
     char *tmpdir;
+    int mkstemp_res GNUC_UNUSED;
 
 #if defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__)
     tmpdir = ".";
@@ -303,9 +309,9 @@ create_file_names()
     prolog_file_name[len + 5] = 'p';
     local_file_name[len + 5] = 'l';
 
-    mkstemp(action_file_name);
-    mkstemp(prolog_file_name);
-    mkstemp(local_file_name);
+    mkstemp_res = mkstemp(action_file_name);
+    mkstemp_res = mkstemp(prolog_file_name);
+    mkstemp_res = mkstemp(local_file_name);
 
     len = strlen(file_prefix);
 
index 6c99245480b93f6766af3adb8b86f5beddb78c0c..f93c0383962a4849b5613d916007241aa79a2fa1 100644 (file)
@@ -207,7 +207,7 @@ namespace Mono.CSharp
                                        return;
 
                                if (Compiler.Settings.Target == Target.Exe) {
-                                       a.Error_AttributeEmitError ("The executables cannot be satelite assemblies, remove the attribute or keep it empty");
+                                       Report.Error (7059, a.Location, "Executables cannot be satellite assemblies. Remove the attribute or keep it empty");
                                        return;
                                }
 
@@ -231,7 +231,8 @@ namespace Mono.CSharp
 
                                var vinfo = IsValidAssemblyVersion (value, true);
                                if (vinfo == null) {
-                                       a.Error_AttributeEmitError (string.Format ("Specified version `{0}' is not valid", value));
+                                       Report.Error (7034, a.Location, "The specified version string `{0}' does not conform to the required format - major[.minor[.build[.revision]]]",
+                                               value);
                                        return;
                                }
 
@@ -322,13 +323,18 @@ namespace Mono.CSharp
 
                        if (a.Type == pa.InternalsVisibleTo) {
                                string assembly_name = a.GetString ();
+                               if (assembly_name == null) {
+                                       Report.Error (7030, a.Location, "Friend assembly reference cannot have `null' value");
+                                       return;
+                               }
+
                                if (assembly_name.Length == 0)
                                        return;
 #if STATIC
                                ParsedAssemblyName aname;
                                ParseAssemblyResult r = Fusion.ParseAssemblyName (assembly_name, out aname);
                                if (r != ParseAssemblyResult.OK) {
-                                       Report.Warning (1700, 3, a.Location, "Assembly reference `{0}' is invalid and cannot be resolved",
+                                       Report.Warning (1700, 3, a.Location, "Friend assembly reference `{0}' is invalid and cannot be resolved",
                                                assembly_name);
                                        return;
                                }
@@ -353,10 +359,15 @@ namespace Mono.CSharp
                        } else if (a.Type == pa.AssemblyFileVersion) {
                                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",
+                                       Report.Warning (7035, 1, a.Location, "The specified version string `{0}' does not conform to the recommended format major.minor.build.revision",
                                                vi_product_version, a.Name);
                                        return;
                                }
+
+                               // File version info decoding from blob is not supported
+                               var cab = new CustomAttributeBuilder ((ConstructorInfo) ctor.GetMetaInfo (), new object[] { vi_product_version });
+                               Builder.SetCustomAttribute (cab);
+                               return;
                        } else if (a.Type == pa.AssemblyProduct) {
                                vi_product = a.GetString ();
                        } else if (a.Type == pa.AssemblyCompany) {
@@ -394,8 +405,8 @@ namespace Mono.CSharp
                                }
 
                                var ci = a.Assembly.GetName ().CultureInfo;
-                               if (!ci.Equals (System.Globalization.CultureInfo.InvariantCulture)) {
-                                       Report.Warning (1607, 1, "Referenced assembly `{0}' has different culture setting of `{1}'",
+                               if (!ci.Equals (CultureInfo.InvariantCulture)) {
+                                       Report.Warning (8009, 1, "Referenced assembly `{0}' has different culture setting of `{1}'",
                                                a.Name, ci.Name);
                                }
 
index 7ed03d2bad47e4cdbaf8d118c1636b9b310d2756..6cd75bc9af503de909d7d9c17c0a90e6a05e5cf6 100644 (file)
@@ -74,10 +74,6 @@ namespace Mono.CSharp
 
                protected override Expression DoResolve (ResolveContext rc)
                {
-                       if (rc.HasSet (ResolveContext.Options.FinallyScope)) {
-                               rc.Report.Error (1984, loc,  "The `await' operator cannot be used in the body of a finally clause");
-                       }
-
                        if (rc.HasSet (ResolveContext.Options.LockScope)) {
                                rc.Report.Error (1996, loc,
                                        "The `await' operator cannot be used in the body of a lock statement");
@@ -244,7 +240,7 @@ namespace Mono.CSharp
                        var fe_awaiter = new FieldExpr (awaiter, loc);
                        fe_awaiter.InstanceExpression = new CompilerGeneratedThis (ec.CurrentType, loc);
 
-                               Label skip_continuation = ec.DefineLabel ();
+                       Label skip_continuation = ec.DefineLabel ();
 
                        using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
                                //
@@ -324,10 +320,6 @@ namespace Mono.CSharp
                                return false;
                        }
 
-                       if (bc.HasSet (ResolveContext.Options.CatchScope)) {
-                               bc.Report.Error (1985, loc, "The `await' operator cannot be used in a catch clause");
-                       }
-
                        if (!base.Resolve (bc))
                                return false;
 
@@ -429,6 +421,8 @@ namespace Mono.CSharp
        public class AsyncInitializer : StateMachineInitializer
        {
                TypeInferenceContext return_inference;
+               List<Label> redirected_jumps;
+               FieldExpr HoistedReturnState;
 
                public AsyncInitializer (ParametersBlock block, TypeDefinition host, TypeSpec returnType)
                        : base (block, host, returnType)
@@ -464,9 +458,9 @@ namespace Mono.CSharp
                protected override BlockContext CreateBlockContext (BlockContext bc)
                {
                        var ctx = base.CreateBlockContext (bc);
-                       var lambda = bc.CurrentAnonymousMethod as LambdaMethod;
-                       if (lambda != null)
-                               return_inference = lambda.ReturnTypeInference;
+                       var am = bc.CurrentAnonymousMethod as AnonymousMethodBody;
+                       if (am != null)
+                               return_inference = am.ReturnTypeInference;
 
                        ctx.Set (ResolveContext.Options.TryScope);
 
@@ -491,6 +485,57 @@ namespace Mono.CSharp
                        ec.Emit (OpCodes.Ret);
                }
 
+               //
+               // Emits state table of jumps outside of try block and reload of return
+               // value when try block returns value
+               //
+               public void EmitRedirectedJumpsTable (EmitContext ec, StackFieldExpr returnResult, Label localReturn)
+               {
+                       if (redirected_jumps == null)
+                               return;
+
+                       int ret_index = redirected_jumps.IndexOf (localReturn);
+                       if (ret_index >= 0) {
+                               redirected_jumps [ret_index] = ec.DefineLabel ();
+                       }
+
+                       HoistedReturnState.Emit (ec);
+                       ec.Emit (OpCodes.Switch, redirected_jumps.ToArray ());
+
+                       if (ret_index >= 0) {
+                               ec.MarkLabel (redirected_jumps [ret_index]);
+                               var s = (AsyncTaskStorey)storey;
+                               ((IAssignMethod)s.HoistedReturnValue).EmitAssign (ec, returnResult, false, false);
+
+                               ec.Emit (OpCodes.Leave, BodyEnd);
+                       }
+
+                       // Mark fallthrough label
+                       ec.MarkLabel (redirected_jumps [0]);
+               }
+
+               public void EmitRedirectedJump (EmitContext ec, Label label)
+               {
+                       if (redirected_jumps == null) {
+                               redirected_jumps = new List<Label> ();
+
+                               // Add fallthrough label
+                               redirected_jumps.Add (ec.DefineLabel ());
+                               HoistedReturnState = ec.GetTemporaryField (ec.Module.Compiler.BuiltinTypes.Int);
+                       }
+
+                       int index = redirected_jumps.IndexOf (label);
+                       if (index < 0) {
+                               redirected_jumps.Add (label);
+                               index = redirected_jumps.Count - 1;
+                       }
+
+                       //
+                       // Indicates we have return value captured
+                       //
+                       HoistedReturnState.EmitAssign (ec, new IntConstant (HoistedReturnState.Type, index, Location.Null), false, false);
+               }
+
                public override void MarkReachable (Reachability rc)
                {
                        //
@@ -509,7 +554,6 @@ namespace Mono.CSharp
                MethodSpec builder_factory;
                MethodSpec builder_start;
                PropertySpec task;
-               LocalVariable hoisted_return;
                int locals_captured;
                Dictionary<TypeSpec, List<Field>> stack_fields;
                Dictionary<TypeSpec, List<Field>> awaiter_fields;
@@ -523,11 +567,7 @@ namespace Mono.CSharp
 
                #region Properties
 
-               public LocalVariable HoistedReturn {
-                       get {
-                               return hoisted_return;
-                       }
-               }
+               public Expression HoistedReturnValue { get; set; }
 
                public TypeSpec ReturnType {
                        get {
@@ -717,7 +757,7 @@ namespace Mono.CSharp
                        set_state_machine.Block.AddStatement (new StatementExpression (new Invocation (mg, args)));
 
                        if (has_task_return_type) {
-                               hoisted_return = LocalVariable.CreateCompilerGenerated (bt.TypeArguments[0], StateMachineMethod.Block, Location);
+                               HoistedReturnValue = TemporaryVariableReference.Create (bt.TypeArguments [0], StateMachineMethod.Block, Location);
                        }
 
                        return true;
@@ -904,11 +944,11 @@ namespace Mono.CSharp
                        };
 
                        Arguments args;
-                       if (hoisted_return == null) {
+                       if (HoistedReturnValue == null) {
                                args = new Arguments (0);
                        } else {
                                args = new Arguments (1);
-                               args.Add (new Argument (new LocalVariableReference (hoisted_return, Location)));
+                               args.Add (new Argument (HoistedReturnValue));
                        }
 
                        using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
index 2152674d2da63e7d766bea3b3f36bde38a0a0b18..7318f2605931c273b9f8f094e0a7dcaed9ab672c 100644 (file)
@@ -258,19 +258,22 @@ namespace Mono.CSharp {
                        Report.Error (1970, loc, "Do not use `{0}' directly. Use `dynamic' keyword instead", GetSignatureForError ());
                }
 
-               /// <summary>
-               /// This is rather hack. We report many emit attribute error with same error to be compatible with
-               /// csc. But because csc has to report them this way because error came from ilasm we needn't.
-               /// </summary>
-               public void Error_AttributeEmitError (string inner)
+               void Error_AttributeEmitError (string inner)
                {
                        Report.Error (647, Location, "Error during emitting `{0}' attribute. The reason is `{1}'",
                                      Type.GetSignatureForError (), inner);
                }
 
+               public void Error_InvalidArgumentValue (TypeSpec attributeType)
+               {
+                       Report.Error (591, Location, "Invalid value for argument to `{0}' attribute", attributeType.GetSignatureForError ());
+               }
+
                public void Error_InvalidSecurityParent ()
                {
-                       Error_AttributeEmitError ("it is attached to invalid parent");
+                       Report.Error (7070, Location,
+                               "Security attribute `{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations",
+                               Type.GetSignatureForError ());
                }
 
                Attributable Owner {
@@ -412,7 +415,7 @@ namespace Mono.CSharp {
                        return ((MethodImplOptions) value | all) == all;
                }
 
-               static bool IsValidArgumentType (TypeSpec t)
+               public static bool IsValidArgumentType (TypeSpec t)
                {
                        if (t.IsArray) {
                                var ac = (ArrayContainer) t;
@@ -831,6 +834,7 @@ namespace Mono.CSharp {
                {
                        SecurityAction action = GetSecurityActionValue ();
                        bool for_assembly = Target == AttributeTargets.Assembly || Target == AttributeTargets.Module;
+                       var c = (Constant)pos_args [0].Expr;
 
                        switch (action) {
 #pragma warning disable 618
@@ -853,11 +857,22 @@ namespace Mono.CSharp {
 #pragma warning restore 618
 
                        default:
-                               Error_AttributeEmitError ("SecurityAction is out of range");
+                               Report.Error (7049, c.Location, "Security attribute `{0}' has an invalid SecurityAction value `{1}'",
+                                       Type.GetSignatureForError (), c.GetValueAsLiteral());
                                return false;
                        }
 
-                       Error_AttributeEmitError (String.Concat ("SecurityAction `", action, "' is not valid for this declaration"));
+                       switch (Target) {
+                       case AttributeTargets.Assembly:
+                               Report.Error (7050, c.Location, "SecurityAction value `{0}' is invalid for security attributes applied to an assembly",
+                                       c.GetSignatureForError ());
+                               break;
+                       default:
+                               Report.Error (7051, c.Location, "SecurityAction value `{0}' is invalid for security attributes applied to a type or a method",
+                                       c.GetSignatureForError ());
+                               break;
+                       }
+
                        return false;
                }
 
@@ -1026,44 +1041,42 @@ namespace Mono.CSharp {
                                                                        return;
                                                                }
                                                        } else if (Type == predefined.Guid) {
+                                                               string v = ((StringConstant) arg_expr).Value;
                                                                try {
-                                                                       string v = ((StringConstant) arg_expr).Value;
                                                                        new Guid (v);
-                                                               } catch (Exception e) {
-                                                                       Error_AttributeEmitError (e.Message);
+                                                               } catch {
+                                                                       Error_InvalidArgumentValue (Type);
                                                                        return;
                                                                }
                                                        } else if (Type == predefined.AttributeUsage) {
                                                                int v = ((IntConstant) ((EnumConstant) arg_expr).Child).Value;
-                                                               if (v == 0) {
-                                                                       context.Module.Compiler.Report.Error (591, Location, "Invalid value for argument to `{0}' attribute",
-                                                                               "System.AttributeUsage");
-                                                               }
+                                                               if (v == 0)
+                                                                       Error_InvalidArgumentValue (Type);
                                                        } else if (Type == predefined.MarshalAs) {
                                                                if (pos_args.Count == 1) {
                                                                        var u_type = (UnmanagedType) System.Enum.Parse (typeof (UnmanagedType), ((Constant) pos_args[0].Expr).GetValue ().ToString ());
                                                                        if (u_type == UnmanagedType.ByValArray && !(Owner is FieldBase)) {
-                                                                               Error_AttributeEmitError ("Specified unmanaged type is only valid on fields");
+                                                                               Report.Error (7055, pos_args [0].Expr.Location, "Unmanaged type `ByValArray' is only valid for fields");
                                                                        }
                                                                }
                                                        } else if (Type == predefined.DllImport) {
                                                                if (pos_args.Count == 1 && pos_args[0].Expr is Constant) {
                                                                        var value = ((Constant) pos_args[0].Expr).GetValue () as string;
                                                                        if (string.IsNullOrEmpty (value))
-                                                                               Error_AttributeEmitError ("DllName cannot be empty or null");
+                                                                               Error_InvalidArgumentValue (Type);
                                                                }
                                                        } else if (Type == predefined.MethodImpl) {
                                                                if (pos_args.Count == 1) {
                                                                        var value = (int) ((Constant) arg_expr).GetValueAsLong ();
 
                                                                        if (!IsValidMethodImplOption (value)) {
-                                                                               Error_AttributeEmitError ("Incorrect argument value");
+                                                                               Error_InvalidArgumentValue (Type);
                                                                        }
                                                                }
                                                        }
                                                }
 
-                                               arg_expr.EncodeAttributeValue (context, encoder, pt);
+                                               arg_expr.EncodeAttributeValue (context, encoder, pt, pt);
                                        }
                                }
 
@@ -1077,7 +1090,7 @@ namespace Mono.CSharp {
 
                                                encoder.Encode (na.Key.Type);
                                                encoder.Encode (na.Value.Name);
-                                               na.Value.Expr.EncodeAttributeValue (context, encoder, na.Key.Type);
+                                               na.Value.Expr.EncodeAttributeValue (context, encoder, na.Key.Type, na.Key.Type);
                                        }
                                } else {
                                        encoder.EncodeEmptyNamedArguments ();
@@ -1527,7 +1540,7 @@ namespace Mono.CSharp {
                        Encode ((byte) 0x54); // property
                        Encode (property.MemberType);
                        Encode (property.Name);
-                       value.EncodeAttributeValue (null, this, property.MemberType);
+                       value.EncodeAttributeValue (null, this, property.MemberType, property.MemberType);
                }
 
                //
@@ -1539,7 +1552,7 @@ namespace Mono.CSharp {
                        Encode ((byte) 0x53); // field
                        Encode (field.MemberType);
                        Encode (field.Name);
-                       value.EncodeAttributeValue (null, this, field.MemberType);
+                       value.EncodeAttributeValue (null, this, field.MemberType, field.MemberType);
                }
 
                public void EncodeNamedArguments<T> (T[] members, Constant[] values) where T : MemberSpec, IInterfaceMemberSpec
@@ -1559,7 +1572,7 @@ namespace Mono.CSharp {
 
                                Encode (member.MemberType);
                                Encode (member.Name);
-                               values [i].EncodeAttributeValue (null, this, member.MemberType);
+                               values [i].EncodeAttributeValue (null, this, member.MemberType, member.MemberType);
                        }
                }
 
index bea0ee06df05bf7a2e542eacd6dd617bccbb801a..72f3a9c3620eb72e7c9a3e6c11afda7fd69c922d 100644 (file)
@@ -367,8 +367,8 @@ namespace Mono.CSharp {
                                                return null;
 
                                        result = result.Reduce (ec, lt);
-                                       if (result == null)
-                                               return null;
+                                       if (result == null || lt.IsEnum)
+                                               return result;
 
                                        return new EnumConstant (result, lt);
                                }
index 36761432a51625ec32235fbaa18324d0989c536d..0cf97b22e94396b25c5d03f755d3a7aca31e9cf1 100644 (file)
@@ -3736,25 +3736,29 @@ namespace Mono.CSharp
                                Report.SymbolRelatedToPreviousError (MemberType);
                                if (this is Property)
                                        Report.Error (53, Location,
-                                                     "Inconsistent accessibility: property type `" +
-                                                     MemberType.GetSignatureForError () + "' is less " +
-                                                     "accessible than property `" + GetSignatureForError () + "'");
+                                               "Inconsistent accessibility: property type `" +
+                                               MemberType.GetSignatureForError () + "' is less " +
+                                               "accessible than property `" + GetSignatureForError () + "'");
                                else if (this is Indexer)
                                        Report.Error (54, Location,
-                                                     "Inconsistent accessibility: indexer return type `" +
-                                                     MemberType.GetSignatureForError () + "' is less " +
-                                                     "accessible than indexer `" + GetSignatureForError () + "'");
+                                               "Inconsistent accessibility: indexer return type `" +
+                                               MemberType.GetSignatureForError () + "' is less " +
+                                               "accessible than indexer `" + GetSignatureForError () + "'");
                                else if (this is MethodCore) {
                                        if (this is Operator)
                                                Report.Error (56, Location,
-                                                             "Inconsistent accessibility: return type `" +
-                                                             MemberType.GetSignatureForError () + "' is less " +
-                                                             "accessible than operator `" + GetSignatureForError () + "'");
+                                                       "Inconsistent accessibility: return type `" +
+                                                       MemberType.GetSignatureForError () + "' is less " +
+                                                       "accessible than operator `" + GetSignatureForError () + "'");
                                        else
                                                Report.Error (50, Location,
-                                                             "Inconsistent accessibility: return type `" +
-                                                             MemberType.GetSignatureForError () + "' is less " +
-                                                             "accessible than method `" + GetSignatureForError () + "'");
+                                                       "Inconsistent accessibility: return type `" +
+                                                       MemberType.GetSignatureForError () + "' is less " +
+                                                       "accessible than method `" + GetSignatureForError () + "'");
+                               } else if (this is Event) {
+                                       Report.Error (7025, Location,
+                                               "Inconsistent accessibility: event type `{0}' is less accessible than event `{1}'",
+                                               MemberType.GetSignatureForError (), GetSignatureForError ());
                                } else {
                                        Report.Error (52, Location,
                                                      "Inconsistent accessibility: field type `" +
index 84394c99eddcfa7ca87737d0b21d71b9df39c9e1..d310043c0b329888e47f8c42b8bd681547683392 100644 (file)
@@ -204,6 +204,8 @@ namespace Mono.CSharp
                        }
                }
 
+               public LocalVariable AsyncThrowVariable { get; set; }
+
                #endregion
 
                public void AddStatementEpilog (IExpressionCleanup cleanupExpression)
@@ -1036,7 +1038,7 @@ namespace Mono.CSharp
                                }
                        }
 
-                       if (call_op == OpCodes.Callvirt && (InstanceExpression.Type.IsGenericParameter || InstanceExpression.Type.IsStruct)) {
+                       if (call_op == OpCodes.Callvirt && (InstanceExpression.Type.IsGenericParameter || InstanceExpression.Type.IsStructOrEnum)) {
                                ec.Emit (OpCodes.Constrained, InstanceExpression.Type);
                        }
 
@@ -1076,7 +1078,7 @@ namespace Mono.CSharp
                        //
                        // Push the instance expression
                        //
-                       if ((instance_type.IsStruct && (callOpcode == OpCodes.Callvirt || (callOpcode == OpCodes.Call && declaringType.IsStruct))) ||
+                       if ((instance_type.IsStructOrEnum && (callOpcode == OpCodes.Callvirt || (callOpcode == OpCodes.Call && declaringType.IsStruct))) ||
                                instance_type.IsGenericParameter || declaringType.IsNullableType) {
                                //
                                // If the expression implements IMemoryLocation, then
@@ -1098,7 +1100,7 @@ namespace Mono.CSharp
                                return ReferenceContainer.MakeType (ec.Module, instance_type);
                        }
 
-                       if (instance_type.IsEnum || instance_type.IsStruct) {
+                       if (instance_type.IsStructOrEnum) {
                                instance.Emit (ec);
                                ec.Emit (OpCodes.Box, instance_type);
                                return ec.BuiltinTypes.Object;
index d37e0f01bf37b55a738b4cc3c8b06dcb89bfc67d..8935fde6b989af4120f88ba454104524a1d52201 100644 (file)
@@ -522,7 +522,7 @@ namespace Mono.CSharp {
                        return Value ? 1 : 0;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -573,7 +573,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -673,7 +673,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode ((ushort) Value);
                }
@@ -801,7 +801,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -904,7 +904,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -1017,7 +1017,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -1126,7 +1126,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -1302,7 +1302,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -1419,7 +1419,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -1550,7 +1550,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -1674,7 +1674,7 @@ namespace Mono.CSharp {
                        return base.ConvertImplicitly (type);
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -1803,7 +1803,7 @@ namespace Mono.CSharp {
                        Value = v;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        enc.Encode (Value);
                }
@@ -2088,7 +2088,7 @@ namespace Mono.CSharp {
                        ec.Emit (OpCodes.Ldstr, Value);
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        // cast to object
                        if (type != targetType)
@@ -2153,7 +2153,7 @@ namespace Mono.CSharp {
                        return base.CreateExpressionTree (ec);
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        switch (targetType.BuiltinType) {
                        case BuiltinTypeSpec.Type.Object:
@@ -2174,7 +2174,7 @@ namespace Mono.CSharp {
                                break;
                        }
 
-                       base.EncodeAttributeValue (rc, enc, targetType);
+                       base.EncodeAttributeValue (rc, enc, targetType, parameterType);
                }
 
                public override void Emit (EmitContext ec)
index 8cbaeff0c5464d7956eebd1f5039ffa632e52e83..95ccc943b810ba71ff56195c66ce682861586fc7 100644 (file)
@@ -664,7 +664,9 @@ namespace Mono.CSharp
 
                        ConstructorScope = 1 << 3,
 
-                       AsyncBody = 1 << 4
+                       AsyncBody = 1 << 4,
+
+                       HoistedReturnResult = 1 << 5
                }
 
                // utility helper for CheckExpr, UnCheckExpr, Checked and Unchecked statements
index 7736532e07c5c149bb4d2f8be881edfd0a0be6eb..f93324f30602ca2f956eff102b7674a76df37471 100644 (file)
@@ -6892,7 +6892,7 @@ doc_cref
          }       
        | OPERATOR overloadable_operator opt_doc_method_sig
          {
-               var p = (List<DocumentationParameter>)$3 ?? new List<DocumentationParameter> (1);
+               var p = (List<DocumentationParameter>)$3;
                module.DocumentationBuilder.ParsedParameters = p;
                module.DocumentationBuilder.ParsedOperator = (Operator.OpType) $2;
                $$ = null;
index a5adf348a4186e0405676a21b4b05d0b211a3f3c..7632a6128fd43ae74c53de938fef8abedc8e1a9f 100644 (file)
@@ -446,7 +446,8 @@ namespace Mono.CSharp {
 
                public override bool ContainsEmitWithAwait ()
                {
-                       return false;
+                       var instance = method_group.InstanceExpression;
+                       return instance != null && instance.ContainsEmitWithAwait ();
                }
 
                public static Arguments CreateDelegateMethodArguments (ResolveContext rc, AParametersCollection pd, TypeSpec[] types, Location loc)
index f0386177bd4ffa2e879a8deee57f99f1ee725c80..788b9e1dee5a0746f107597d6cca6192cb560e1f 100644 (file)
@@ -540,10 +540,16 @@ namespace Mono.CSharp {
                        return c;
                }
 
-               public virtual void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public virtual void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
-                       rc.Module.Compiler.Report.Error (182, loc,
-                               "An attribute argument must be a constant expression, typeof expression or array creation expression");
+                       if (Attribute.IsValidArgumentType (parameterType)) {
+                               rc.Module.Compiler.Report.Error (182, loc,
+                                       "An attribute argument must be a constant expression, typeof expression or array creation expression");
+                       } else {
+                               rc.Module.Compiler.Report.Error (181, loc,
+                                       "Attribute constructor parameter has type `{0}', which is not a valid attribute parameter type",
+                                       targetType.GetSignatureForError ());
+                       }
                }
 
                /// <summary>
@@ -1582,9 +1588,9 @@ namespace Mono.CSharp {
                        Child.Emit (ec);
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
-                       Child.EncodeAttributeValue (rc, enc, Child.Type);
+                       Child.EncodeAttributeValue (rc, enc, Child.Type, parameterType);
                }
 
                public override void EmitBranchable (EmitContext ec, Label label, bool on_true)
@@ -1702,16 +1708,16 @@ namespace Mono.CSharp {
                        return this;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        // Only boxing to object type is supported
                        if (targetType.BuiltinType != BuiltinTypeSpec.Type.Object) {
-                               base.EncodeAttributeValue (rc, enc, targetType);
+                               base.EncodeAttributeValue (rc, enc, targetType, parameterType);
                                return;
                        }
 
                        enc.Encode (child.Type);
-                       child.EncodeAttributeValue (rc, enc, child.Type);
+                       child.EncodeAttributeValue (rc, enc, child.Type, parameterType);
                }
 
                public override void Emit (EmitContext ec)
@@ -2113,15 +2119,15 @@ namespace Mono.CSharp {
                                return c;
                        }
 
-                       public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+                       public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                        {
                                //
                                // LAMESPEC: Reduced conditional expression is allowed as an attribute argument
                                //
                                if (orig_expr is Conditional)
-                                       child.EncodeAttributeValue (rc, enc, targetType);
+                                       child.EncodeAttributeValue (rc, enc, targetType,parameterType);
                                else
-                                       base.EncodeAttributeValue (rc, enc, targetType);
+                                       base.EncodeAttributeValue (rc, enc, targetType, parameterType);
                        }
                }
 
@@ -4485,11 +4491,11 @@ namespace Mono.CSharp {
                                        //
                                        // LAMESPEC:
                                        //
-                                       // void Foo (params int[]) is better than void Foo (int i = 0) for Foo ()
+                                       // void Foo (int i = 0) is better than void Foo (params int[]) for Foo ()
                                        // void Foo (string[] s, string value = null) is better than Foo (string s, params string[]) for Foo (null) or Foo ()
                                        //
                                        if (cand_param.HasDefaultValue != best_param.HasDefaultValue)
-                                               return !candidate_params;
+                                               return cand_param.HasDefaultValue;
 
                                        if (cand_param.HasDefaultValue) {
                                                ++j;
@@ -4692,7 +4698,10 @@ namespace Mono.CSharp {
                                                                ++arg_count;
                                                                temp = null;
                                                        } else {
-                                                               temp = arguments[index];
+                                                               if (index == arg_count) 
+                                                                       return (i + 1) * 3;
+
+                                                               temp = arguments [index];
 
                                                                // The slot has been taken by positional argument
                                                                if (temp != null && !(temp is NamedArgument))
@@ -5442,8 +5451,7 @@ namespace Mono.CSharp {
                        // For candidates which match on parameters count report more details about incorrect arguments
                        //
                        if (pm != null) {
-                               int unexpanded_count = ((IParametersMember) best_candidate).Parameters.HasParams ? pm.Parameters.Count - 1 : pm.Parameters.Count;
-                               if (pm.Parameters.Count == arg_count || params_expanded || unexpanded_count == arg_count) {
+                               if (pm.Parameters.Count == arg_count || params_expanded || HasUnfilledParams (best_candidate, pm, args)) {
                                        // Reject any inaccessible member
                                        if (!best_candidate.IsAccessible (rc) || !best_candidate.DeclaringType.IsAccessible (rc)) {
                                                rc.Report.SymbolRelatedToPreviousError (best_candidate);
@@ -5497,6 +5505,39 @@ namespace Mono.CSharp {
                        }
                }
 
+               static bool HasUnfilledParams (MemberSpec best_candidate, IParametersMember pm, Arguments args)
+               {
+                       var p = ((IParametersMember)best_candidate).Parameters;
+                       if (!p.HasParams)
+                               return false;
+
+                       string name = null;
+                       for (int i = p.Count - 1; i != 0; --i) {
+                               var fp = p.FixedParameters [i];
+                               if ((fp.ModFlags & Parameter.Modifier.PARAMS) == 0)
+                                       continue;
+
+                               name = fp.Name;
+                               break;
+                       }
+
+                       foreach (var arg in args) {
+                               var na = arg as NamedArgument;
+                               if (na == null)
+                                       continue;
+
+                               if (na.Name == name) {
+                                       name = null;
+                                       break;
+                               }
+                       }
+
+                       if (name == null)
+                               return false;
+
+                       return args.Count + 1 == pm.Parameters.Count;
+               }
+
                bool VerifyArguments (ResolveContext ec, ref Arguments args, MemberSpec member, IParametersMember pm, bool chose_params_expanded)
                {
                        var pd = pm.Parameters;
@@ -6259,7 +6300,6 @@ namespace Mono.CSharp {
                                var temp = ec.GetTemporaryLocal (type);
                                ec.Emit (OpCodes.Stloc, temp);
                                ec.Emit (OpCodes.Ldloca, temp);
-                               ec.FreeTemporaryLocal (temp, type);
                                return;
                        }
 
index 766bb05696b6f9e815d0b80ee621c3e1c54194f7..5bda997062587af84c2d227d0cf5e371c5dea3ef 100644 (file)
@@ -1233,10 +1233,13 @@ namespace Mono.CSharp
                        if (undo_actions == null)
                                undo_actions = new List<Action> ();
 
-                       var existing = current_container.Containers.FirstOrDefault (l => l.Basename == tc.Basename);
-                       if (existing != null) {
-                               current_container.RemoveContainer (existing);
-                               undo_actions.Add (() => current_container.AddTypeContainer (existing));
+                       if (current_container.Containers != null)
+                       {
+                               var existing = current_container.Containers.FirstOrDefault (l => l.Basename == tc.Basename);
+                               if (existing != null) {
+                                       current_container.RemoveContainer (existing);
+                                       undo_actions.Add (() => current_container.AddTypeContainer (existing));
+                               }
                        }
 
                        undo_actions.Add (() => current_container.RemoveContainer (tc));
index 28c2a117e15336a6c1e05d12560968f92c4bf84a..caaab3404dd71576f49944697465b87c8788164f 100644 (file)
@@ -1429,8 +1429,9 @@ namespace Mono.CSharp
                                return null;
 
                        if (probe_type_expr.IsStatic) {
-                               ec.Report.Error (-244, loc, "The `{0}' operator cannot be applied to an operand of a static type",
-                                       OperatorName);
+                               ec.Report.Error (7023, loc, "The second operand of `is' or `as' operator cannot be static type `{0}'",
+                                       probe_type_expr.GetSignatureForError ());
+                               return null;
                        }
                        
                        if (expr.Type.IsPointer || probe_type_expr.IsPointer) {
@@ -2610,7 +2611,9 @@ namespace Mono.CSharp
                public override void FlowAnalysis (FlowAnalysisContext fc)
                {
                        if ((oper & Operator.LogicalMask) == 0) {
+                               fc.DefiniteAssignmentOnTrue = fc.DefiniteAssignmentOnFalse = fc.DefiniteAssignment;
                                left.FlowAnalysis (fc);
+                               fc.DefiniteAssignmentOnTrue = fc.DefiniteAssignmentOnFalse = fc.DefiniteAssignment;
                                right.FlowAnalysis (fc);
                                return;
                        }
@@ -2962,8 +2965,8 @@ namespace Mono.CSharp
                                                        }
                                                }
 
-                                               left = ConvertEnumOperandToUnderlyingType (rc, left);
-                                               right = ConvertEnumOperandToUnderlyingType (rc, right);
+                                               left = ConvertEnumOperandToUnderlyingType (rc, left, r.IsNullableType);
+                                               right = ConvertEnumOperandToUnderlyingType (rc, right, l.IsNullableType);
                                                return expr;
                                        }
                                } else if ((oper == Operator.Addition || oper == Operator.Subtraction)) {
@@ -2978,8 +2981,8 @@ namespace Mono.CSharp
                                                // which is not ambiguous with predefined enum operators
                                                //
                                                if (expr != null) {
-                                                       left = ConvertEnumOperandToUnderlyingType (rc, left);
-                                                       right = ConvertEnumOperandToUnderlyingType (rc, right);
+                                                       left = ConvertEnumOperandToUnderlyingType (rc, left, false);
+                                                       right = ConvertEnumOperandToUnderlyingType (rc, right, false);
 
                                                        return expr;
                                                }
@@ -3477,6 +3480,13 @@ namespace Mono.CSharp
                                } else {
                                        LocalVariable temp = LocalVariable.CreateCompilerGenerated (rc.BuiltinTypes.Bool, rc.CurrentBlock, loc);
 
+                                       if (!Convert.ImplicitConversionExists (rc, left, temp.Type) && (oper == Operator.LogicalAnd ? GetOperatorFalse (rc, left, loc) : GetOperatorTrue (rc, left, loc)) == null) {
+                                               rc.Report.Error (7083, left.Location,
+                                                       "Expression must be implicitly convertible to Boolean or its type `{0}' must define operator `{1}'",
+                                                       lt.GetSignatureForError (), oper == Operator.LogicalAnd ? "false" : "true");
+                                               return null;
+                                       }
+
                                        args.Add (new Argument (temp.CreateReferenceExpression (rc, loc).Resolve (rc)));
                                        args.Add (new Argument (right));
                                        right = new DynamicExpressionStatement (this, args, loc);
@@ -3782,7 +3792,7 @@ namespace Mono.CSharp
                        return null;
                }
 
-               static Expression ConvertEnumOperandToUnderlyingType (ResolveContext rc, Expression expr)
+               static Expression ConvertEnumOperandToUnderlyingType (ResolveContext rc, Expression expr, bool liftType)
                {
                        TypeSpec underlying_type;
                        if (expr.Type.IsNullableType) {
@@ -3806,7 +3816,7 @@ namespace Mono.CSharp
                                break;
                        }
 
-                       if (expr.Type.IsNullableType)
+                       if (expr.Type.IsNullableType || liftType)
                                underlying_type = rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { underlying_type });
 
                        if (expr.Type == underlying_type)
@@ -4088,12 +4098,12 @@ namespace Mono.CSharp
                        if (!TypeSpec.IsReferenceType (l) || !TypeSpec.IsReferenceType (r))
                                return null;
 
-                       if (l.BuiltinType == BuiltinTypeSpec.Type.String || l.BuiltinType == BuiltinTypeSpec.Type.Delegate || MemberCache.GetUserOperator (l, CSharp.Operator.OpType.Equality, false) != null)
+                       if (l.BuiltinType == BuiltinTypeSpec.Type.String || l.BuiltinType == BuiltinTypeSpec.Type.Delegate || l.IsDelegate || MemberCache.GetUserOperator (l, CSharp.Operator.OpType.Equality, false) != null)
                                ec.Report.Warning (253, 2, loc,
                                        "Possible unintended reference comparison. Consider casting the right side expression to type `{0}' to get value comparison",
                                        l.GetSignatureForError ());
 
-                       if (r.BuiltinType == BuiltinTypeSpec.Type.String || r.BuiltinType == BuiltinTypeSpec.Type.Delegate || MemberCache.GetUserOperator (r, CSharp.Operator.OpType.Equality, false) != null)
+                       if (r.BuiltinType == BuiltinTypeSpec.Type.String || r.BuiltinType == BuiltinTypeSpec.Type.Delegate || r.IsDelegate || MemberCache.GetUserOperator (r, CSharp.Operator.OpType.Equality, false) != null)
                                ec.Report.Warning (252, 2, loc,
                                        "Possible unintended reference comparison. Consider casting the left side expression to type `{0}' to get value comparison",
                                        r.GetSignatureForError ());
@@ -6752,7 +6762,7 @@ namespace Mono.CSharp
                        if (!Emit (ec, v))
                                v.Emit (ec);
                }
-               
+
                public override void EmitStatement (EmitContext ec)
                {
                        LocalTemporary v = null;
@@ -7555,7 +7565,9 @@ namespace Mono.CSharp
 
                public override void Emit (EmitContext ec)
                {
-                       EmitToFieldSource (ec);
+                       var await_field = EmitToFieldSource (ec);
+                       if (await_field != null)
+                               await_field.Emit (ec);
                }
 
                protected sealed override FieldExpr EmitToFieldSource (EmitContext ec)
@@ -7609,18 +7621,18 @@ namespace Mono.CSharp
                        return await_stack_field;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        // no multi dimensional or jagged arrays
                        if (arguments.Count != 1 || array_element_type.IsArray) {
-                               base.EncodeAttributeValue (rc, enc, targetType);
+                               base.EncodeAttributeValue (rc, enc, targetType, parameterType);
                                return;
                        }
 
                        // No array covariance, except for array -> object
                        if (type != targetType) {
                                if (targetType.BuiltinType != BuiltinTypeSpec.Type.Object) {
-                                       base.EncodeAttributeValue (rc, enc, targetType);
+                                       base.EncodeAttributeValue (rc, enc, targetType, parameterType);
                                        return;
                                }
 
@@ -7634,7 +7646,7 @@ namespace Mono.CSharp
                        if (array_data == null) {
                                IntConstant ic = arguments[0] as IntConstant;
                                if (ic == null || !ic.IsDefaultValue) {
-                                       base.EncodeAttributeValue (rc, enc, targetType);
+                                       base.EncodeAttributeValue (rc, enc, targetType, parameterType);
                                } else {
                                        enc.Encode (0);
                                }
@@ -7644,7 +7656,7 @@ namespace Mono.CSharp
 
                        enc.Encode (array_data.Count);
                        foreach (var element in array_data) {
-                               element.EncodeAttributeValue (rc, enc, array_element_type);
+                               element.EncodeAttributeValue (rc, enc, array_element_type, parameterType);
                        }
                }
                
@@ -8368,7 +8380,7 @@ namespace Mono.CSharp
                        return false;
                }
 
-               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
+               public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType, TypeSpec parameterType)
                {
                        // Target type is not System.Type therefore must be object
                        // and we need to use different encoding sequence
@@ -8803,7 +8815,7 @@ namespace Mono.CSharp
                                // with disable flow analysis as we don't know whether left side expression
                                // is used as variable or type
                                //
-                               if (expr is VariableReference || expr is ConstantExpr || expr is Linq.TransparentMemberAccess) {
+                               if (expr is VariableReference || expr is ConstantExpr || expr is Linq.TransparentMemberAccess || expr is EventExpr) {
                                        expr = expr.Resolve (rc);
                                } else if (expr is TypeParameterExpr) {
                                        expr.Error_UnexpectedKind (rc, flags, sn.Location);
@@ -11052,6 +11064,20 @@ namespace Mono.CSharp
                        return e;
                }
 
+               public override void Emit (EmitContext ec)
+               {
+                       if (method == null && TypeSpec.IsValueType (type) && initializers.Initializers.Count > 1 && ec.HasSet (BuilderContext.Options.AsyncBody) && initializers.ContainsEmitWithAwait ()) {
+                               var fe = ec.GetTemporaryField (type);
+
+                               if (!Emit (ec, fe))
+                                       fe.Emit (ec);
+
+                               return;
+                       }
+
+                       base.Emit (ec);
+               }
+
                public override bool Emit (EmitContext ec, IMemoryLocation target)
                {
                        bool left_on_stack;
@@ -11068,6 +11094,8 @@ namespace Mono.CSharp
                        LocalTemporary temp = null;
 
                        instance = target as LocalTemporary;
+                       if (instance == null)
+                               instance = target as StackFieldExpr;
 
                        if (instance == null) {
                                if (!left_on_stack) {
index 4b0b21685993678e3891b45c005db46cbadaf61d..278f71e0f1830471ef1bda269a3856f7efafaaf2 100644 (file)
@@ -223,7 +223,9 @@ namespace Mono.CSharp
                        if (MemberType.IsStatic)
                                Error_VariableOfStaticClass (Location, GetSignatureForError (), MemberType, Report);
 
-                       CheckBase ();
+                       if (!IsCompilerGenerated)
+                               CheckBase ();
+
                        IsTypePermitted ();
                }
 
index 89fd1a2e6ac9c7799a7b28e27fb854761fcb7a92..d97c7f3b82a01775d05cc2f191b42bb304d3eef8 100644 (file)
@@ -1457,13 +1457,18 @@ namespace Mono.CSharp {
                        if (tp != null)
                                return Inflate (tp);
 
-                       var ac = type as ArrayContainer;
-                       if (ac != null) {
-                               var et = Inflate (ac.Element);
-                               if (et != ac.Element)
-                                       return ArrayContainer.MakeType (context.Module, et, ac.Rank);
+                       var ec = type as ElementTypeSpec;
+                       if (ec != null) {
+                               var et = Inflate (ec.Element);
+                               if (et != ec.Element) {
+                                       var ac = ec as ArrayContainer;
+                                       if (ac != null)
+                                               return ArrayContainer.MakeType (context.Module, et, ac.Rank);
+
+                                       throw new NotImplementedException ();
+                               }
 
-                               return ac;
+                               return ec;
                        }
 
                        if (type.Kind == MemberKind.MissingType)
index f10773009de7d715ecdd03b75f701cf871573441..8b45f88a911a054c4156b8d13f545f430d2e707a 100644 (file)
@@ -724,7 +724,6 @@ namespace Mono.CSharp
                // The state as we generate the machine
                //
                Label move_next_ok;
-               Label iterator_body_end;
                protected Label move_next_error;
                LocalBuilder skip_finally;
                protected LocalBuilder current_pc;
@@ -738,11 +737,7 @@ namespace Mono.CSharp
 
                #region Properties
 
-               public Label BodyEnd {
-                       get {
-                               return iterator_body_end;
-                       }
-               }
+               public Label BodyEnd { get; set; }
 
                public LocalBuilder CurrentPC
                {
@@ -830,11 +825,11 @@ namespace Mono.CSharp
                        // We only care if the PC is zero (start executing) or non-zero (don't do anything)
                        ec.Emit (OpCodes.Brtrue, move_next_error);
 
-                       iterator_body_end = ec.DefineLabel ();
+                       BodyEnd = ec.DefineLabel ();
 
                        block.EmitEmbedded (ec);
 
-                       ec.MarkLabel (iterator_body_end);
+                       ec.MarkLabel (BodyEnd);
 
                        EmitMoveNextEpilogue (ec);
 
@@ -893,11 +888,11 @@ namespace Mono.CSharp
 
                        ec.MarkLabel (labels[0]);
 
-                       iterator_body_end = ec.DefineLabel ();
+                       BodyEnd = ec.DefineLabel ();
 
                        block.EmitEmbedded (ec);
 
-                       ec.MarkLabel (iterator_body_end);
+                       ec.MarkLabel (BodyEnd);
 
                        if (async_init != null) {
                                var catch_value = LocalVariable.CreateCompilerGenerated (ec.Module.Compiler.BuiltinTypes.Exception, block, Location);
index a440d0ca66f6a0634d83863b766e5676d11286d6..daa7628756501f0f99ea11300281965550d7a19c 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  \r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
@@ -136,7 +137,7 @@ $(ProjectDir)\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(Project
   <ItemGroup>\r
     <ProjectReference Include="../class/corlib/corlib-net_4_5.csproj">\r
       <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
+      <Name>corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
index 58baf51b09e034d5429b6ab6f7f3f79cbf9fd96c..c29ce97bea687209ccf5e37d289805ec674dbec9 100644 (file)
@@ -563,6 +563,12 @@ namespace Mono.CSharp {
                                if ((ModFlags & extern_static) != extern_static) {
                                        Report.Error (601, a.Location, "The DllImport attribute must be specified on a method marked `static' and `extern'");
                                }
+
+                               if (MemberName.IsGeneric || Parent.IsGenericOrParentIsGeneric) {
+                                       Report.Error (7042, a.Location, 
+                                               "The DllImport attribute cannot be applied to a method that is generic or contained in a generic type");
+                               }
+
                                is_external_implementation = true;
                        }
 
index 5f1822d00701b8a259f8e1746e5b4ae4954d470d..566c62af3aa0a6fe708354d6eb0d6f1129d6ee0a 100644 (file)
@@ -1158,26 +1158,25 @@ namespace Mono.CSharp.Nullable
                                        //
                                        Constant lc = left as Constant;
                                        if (lc != null && !lc.IsDefaultValue)
-                                               return ReducedExpression.Create (lc, this);
+                                               return ReducedExpression.Create (lc, this, false);
 
                                        //
                                        // Reduce (left ?? null) to left OR (null-constant ?? right) to right
                                        //
-                                       if (right.IsNull || lc != null)
-                                               return ReducedExpression.Create (lc != null ? right : left, this);
+                                       if (right.IsNull || lc != null) {
+                                               //
+                                               // Special case null ?? null
+                                               //
+                                               if (right.IsNull && ltype == right.Type)
+                                                       return null;
+
+                                               return ReducedExpression.Create (lc != null ? right : left, this, false);
+                                       }
 
                                        right = Convert.ImplicitConversion (ec, right, ltype, loc);
                                        type = ltype;
                                        return this;
                                }
-
-                               //
-                               // Special case null ?? null
-                               //
-                               if (ltype == right.Type) {
-                                       type = ltype;
-                                       return this;
-                               }
                        } else {
                                return null;
                        }
@@ -1190,7 +1189,7 @@ namespace Mono.CSharp.Nullable
                        // Reduce (null ?? right) to right
                        //
                        if (left.IsNull)
-                               return ReducedExpression.Create (right, this).Resolve (ec);
+                               return ReducedExpression.Create (right, this, false).Resolve (ec);
 
                        left = Convert.ImplicitConversion (ec, unwrap ?? left, rtype, loc);
                        type = rtype;
@@ -1238,7 +1237,7 @@ namespace Mono.CSharp.Nullable
                                // When both expressions are nullable the unwrap
                                // is needed only for null check not for value uwrap
                                //
-                               if (type.IsNullableType)
+                               if (type.IsNullableType && TypeSpecComparer.IsEqual (NullableInfo.GetUnderlyingType (type), unwrap.Type))
                                        unwrap.Load (ec);
                                else
                                        left.Emit (ec);
index d95363c774c62b9aae16f0aa55624622b9911009..f1215173cb255a34c9c645bd0ff5540d53cc9ad9 100644 (file)
@@ -379,6 +379,15 @@ namespace Mono.CSharp {
                        return member.IsAccessibleAs (parameter_type);
                }
 
+               bool IsValidCallerContext (MemberCore memberContext)
+               {
+                       var m = memberContext as Method;
+                       if (m != null)
+                               return !m.IsPartialImplementation;
+
+                       return true;
+               }
+
                // <summary>
                //   Resolve is used in method definitions
                // </summary>
@@ -428,6 +437,7 @@ namespace Mono.CSharp {
                {
                        var pa = rc.Module.PredefinedAttributes;
                        TypeSpec caller_type;
+                       Attribute callerMemberName = null, callerFilePath = null;
 
                        foreach (var attr in attributes.Attrs) {
                                var atype = attr.ResolveTypeForComparison ();
@@ -442,7 +452,14 @@ namespace Mono.CSharp {
                                                        caller_type.GetSignatureForError (), parameter_type.GetSignatureForError ());
                                        }
 
+                                       if (!IsValidCallerContext (rc.CurrentMemberDefinition)) {
+                                               rc.Report.Warning (4026, 1, attr.Location,
+                                                       "The CallerMemberName applied to parameter `{0}' will have no effect because it applies to a member that is used in context that do not allow optional arguments",
+                                                       name);
+                                       }
+
                                        modFlags |= Modifier.CallerMemberName;
+                                       callerMemberName = attr;
                                        continue;
                                }
 
@@ -450,10 +467,16 @@ namespace Mono.CSharp {
                                        caller_type = rc.BuiltinTypes.Int;
                                        if (caller_type != parameter_type && !Convert.ImplicitNumericConversionExists (caller_type, parameter_type)) {
                                                rc.Report.Error (4017, attr.Location,
-                                                       "The CallerMemberName attribute cannot be applied because there is no standard conversion from `{0}' to `{1}'",
+                                                       "The CallerLineNumberAttribute attribute cannot be applied because there is no standard conversion from `{0}' to `{1}'",
                                                        caller_type.GetSignatureForError (), parameter_type.GetSignatureForError ());
                                        }
 
+                                       if (!IsValidCallerContext (rc.CurrentMemberDefinition)) {
+                                               rc.Report.Warning (4024, 1, attr.Location,
+                                                       "The CallerLineNumberAttribute applied to parameter `{0}' will have no effect because it applies to a member that is used in context that do not allow optional arguments",
+                                                       name);
+                                       }
+
                                        modFlags |= Modifier.CallerLineNumber;
                                        continue;
                                }
@@ -466,10 +489,40 @@ namespace Mono.CSharp {
                                                        caller_type.GetSignatureForError (), parameter_type.GetSignatureForError ());
                                        }
 
+                                       if (!IsValidCallerContext (rc.CurrentMemberDefinition)) {
+                                               rc.Report.Warning (4025, 1, attr.Location,
+                                                       "The CallerFilePath applied to parameter `{0}' will have no effect because it applies to a member that is used in context that do not allow optional arguments",
+                                                       name);
+                                       }
+
                                        modFlags |= Modifier.CallerFilePath;
+                                       callerFilePath = attr;
                                        continue;
                                }
                        }
+
+                       if ((modFlags & Modifier.CallerLineNumber) != 0) {
+                               if (callerMemberName != null) {
+                                       rc.Report.Warning (7081, 1, callerMemberName.Location,
+                                               "The CallerMemberNameAttribute applied to parameter `{0}' will have no effect. It is overridden by the CallerLineNumberAttribute",
+                                               Name);
+                               }
+
+                               if (callerFilePath != null) {
+                                       rc.Report.Warning (7082, 1, callerFilePath.Location,
+                                               "The CallerFilePathAttribute applied to parameter `{0}' will have no effect. It is overridden by the CallerLineNumberAttribute",
+                                               name);
+                               }
+                       }
+
+                       if ((modFlags & Modifier.CallerMemberName) != 0) {
+                               if (callerFilePath != null) {
+                                       rc.Report.Warning (7080, 1, callerFilePath.Location,
+                                               "The CallerMemberNameAttribute applied to parameter `{0}' will have no effect. It is overridden by the CallerFilePathAttribute",
+                                               name);
+                               }
+
+                       }
                }
 
                public void ResolveDefaultValue (ResolveContext rc)
index 339d42d8f6753c1fad8a13f00ee0a4f5f1935a5d..e8b3879f05afb10598cf8d54e3f1d093015910c2 100644 (file)
@@ -512,7 +512,16 @@ namespace Mono.CSharp
                        // Check base property accessors conflict
                        //
                        var base_prop = (PropertySpec) base_member;
-                       if (Get != null) {
+                       if (Get == null) {
+                               if ((ModFlags & Modifiers.SEALED) != 0 && base_prop.HasGet && !base_prop.Get.IsAccessible (this)) {
+                                       // TODO: Should be different error code but csc uses for some reason same
+                                       Report.SymbolRelatedToPreviousError (base_prop);
+                                       Report.Error (545, Location,
+                                               "`{0}': cannot override because `{1}' does not have accessible get accessor",
+                                               GetSignatureForError (), base_prop.GetSignatureForError ());
+                                       ok = false;
+                               }
+                       } else {
                                if (!base_prop.HasGet) {
                                        if (ok) {
                                                Report.SymbolRelatedToPreviousError (base_prop);
@@ -529,7 +538,16 @@ namespace Mono.CSharp
                                }
                        }
 
-                       if (Set != null) {
+                       if (Set == null) {
+                               if ((ModFlags & Modifiers.SEALED) != 0 && base_prop.HasSet && !base_prop.Set.IsAccessible (this)) {
+                                       // TODO: Should be different error code but csc uses for some reason same
+                                       Report.SymbolRelatedToPreviousError (base_prop);
+                                       Report.Error (546, Location,
+                                               "`{0}': cannot override because `{1}' does not have accessible set accessor",
+                                               GetSignatureForError (), base_prop.GetSignatureForError ());
+                                       ok = false;
+                               }
+                       } else {
                                if (!base_prop.HasSet) {
                                        if (ok) {
                                                Report.SymbolRelatedToPreviousError (base_prop);
index 009007b0d529ca45d1cc0de85de61a5cb4f1dab8..5ae47d8a0d061938ddae241f13621178fb6bdd14 100644 (file)
@@ -56,7 +56,9 @@ namespace Mono.CSharp {
                        3000, 3001, 3002, 3003, 3005, 3006, 3007, 3008, 3009,
                        3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019,
                        3021, 3022, 3023, 3024, 3026, 3027,
-                       4014
+                       4014, 4024, 4025, 4026,
+                       7035, 7080, 7081, 7082, 7095,
+                       8009,
                };
 
                static HashSet<int> AllWarningsHashSet;
index 5e56f614f232f985a567d6ec9d7d3f2029cee2a1..3c7f13bdb13b4b3922fc19d5f57593c2334418e1 100644 (file)
@@ -28,6 +28,7 @@ namespace Mono.CSharp {
                V_3 = 3,
                V_4 = 4,
                V_5 = 5,
+               V_6 = 6,
                Future = 100,
 
                Default = LanguageVersion.Future,
@@ -1136,11 +1137,13 @@ namespace Mono.CSharp {
 
                                switch (value.ToLowerInvariant ()) {
                                case "iso-1":
+                               case "1":
                                        settings.Version = LanguageVersion.ISO_1;
                                        return ParseResult.Success;
                                case "default":
                                        settings.Version = LanguageVersion.Default;
                                        return ParseResult.Success;
+                               case "2":
                                case "iso-2":
                                        settings.Version = LanguageVersion.ISO_2;
                                        return ParseResult.Success;
@@ -1153,12 +1156,15 @@ namespace Mono.CSharp {
                                case "5":
                                        settings.Version = LanguageVersion.V_5;
                                        return ParseResult.Success;
+                               case "6":
+                                       settings.Version = LanguageVersion.V_6;
+                                       return ParseResult.Success;
                                case "future":
                                        settings.Version = LanguageVersion.Future;
                                        return ParseResult.Success;
                                }
 
-                               report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3', `4', `5', `Default' or `Future'", value);
+                               report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 6", value);
                                return ParseResult.Error;
 
                        case "/codepage":
index cbce03f2bc5506facff0ca588a77ec51cef52df0..4076eb05e8e4257e13380cf709b298615dc86d04 100644 (file)
@@ -688,11 +688,7 @@ namespace Mono.CSharp {
                                infinite = true;
                        }
 
-                       base.Resolve (bc);
-
-                       Iterator.Resolve (bc);
-
-                       return true;
+                       return base.Resolve (bc) && Iterator.Resolve (bc);
                }
 
                protected override bool DoFlowAnalysis (FlowAnalysisContext fc)
@@ -859,11 +855,11 @@ namespace Mono.CSharp {
                        var prev_loop = bc.EnclosingLoop;
                        var prev_los = bc.EnclosingLoopOrSwitch;
                        bc.EnclosingLoopOrSwitch = bc.EnclosingLoop = this;
-                       Statement.Resolve (bc);
+                       var ok = Statement.Resolve (bc);
                        bc.EnclosingLoopOrSwitch = prev_los;
                        bc.EnclosingLoop = prev_loop;
 
-                       return true;
+                       return ok;
                }
 
                //
@@ -1202,15 +1198,16 @@ namespace Mono.CSharp {
                                                var async_type = storey.ReturnType;
 
                                                if (async_type == null && async_block.ReturnTypeInference != null) {
-                                                       async_block.ReturnTypeInference.AddCommonTypeBoundAsync (expr.Type);
+                                                       if (expr.Type.Kind == MemberKind.Void && !(this is ContextualReturn))
+                                                               ec.Report.Error (4029, loc, "Cannot return an expression of type `void'");
+                                                       else
+                                                               async_block.ReturnTypeInference.AddCommonTypeBoundAsync (expr.Type);
                                                        return true;
                                                }
 
                                                if (async_type.Kind == MemberKind.Void) {
-                                                       ec.Report.Error (127, loc,
-                                                               "`{0}': A return keyword must not be followed by any expression when method returns void",
-                                                               ec.GetSignatureForError ());
-
+                                                       ec.Report.Error (8030, loc,
+                                                               "Anonymous function or lambda expression converted to a void returning delegate cannot return a value");
                                                        return false;
                                                }
 
@@ -1218,18 +1215,14 @@ namespace Mono.CSharp {
                                                        if (this is ContextualReturn)
                                                                return true;
 
-                                                       // Same error code as .NET but better error message
                                                        if (async_block.DelegateType != null) {
-                                                               ec.Report.Error (1997, loc,
-                                                                       "`{0}': A return keyword must not be followed by an expression when async delegate returns `Task'. Consider using `Task<T>' return type",
-                                                                       async_block.DelegateType.GetSignatureForError ());
+                                                               ec.Report.Error (8031, loc,
+                                                                       "Async lambda expression or anonymous method converted to a `Task' cannot return a value. Consider returning `Task<T>'");
                                                        } else {
                                                                ec.Report.Error (1997, loc,
                                                                        "`{0}': A return keyword must not be followed by an expression when async method returns `Task'. Consider using `Task<T>' return type",
                                                                        ec.GetSignatureForError ());
-
                                                        }
-
                                                        return false;
                                                }
 
@@ -1245,12 +1238,9 @@ namespace Mono.CSharp {
                                                }
                                        }
                                } else {
-                                       // Same error code as .NET but better error message
                                        if (block_return_type.Kind == MemberKind.Void) {
-                                               ec.Report.Error (127, loc,
-                                                       "`{0}': A return keyword must not be followed by any expression when delegate returns void",
-                                                       am.GetSignatureForError ());
-
+                                               ec.Report.Error (8030, loc,
+                                                       "Anonymous function or lambda expression converted to a void returning delegate cannot return a value");
                                                return false;
                                        }
 
@@ -1294,23 +1284,39 @@ namespace Mono.CSharp {
                protected override void DoEmit (EmitContext ec)
                {
                        if (expr != null) {
-                               expr.Emit (ec);
 
                                var async_body = ec.CurrentAnonymousMethod as AsyncInitializer;
                                if (async_body != null) {
-                                       var async_return = ((AsyncTaskStorey) async_body.Storey).HoistedReturn;
+                                       var storey = (AsyncTaskStorey)async_body.Storey;
 
+                                       //
                                        // It's null for await without async
-                                       if (async_return != null) {
-                                               async_return.EmitAssign (ec);
+                                       //
+                                       if (storey.HoistedReturnValue != null) {
+                                               //
+                                               // Special case hoisted return value (happens in try/finally scenario)
+                                               //
+                                               if (ec.HasSet (BuilderContext.Options.HoistedReturnResult)) {
 
+                                                       if (storey.HoistedReturnValue is VariableReference) {
+                                                               storey.HoistedReturnValue = ec.GetTemporaryField (storey.HoistedReturnValue.Type);
+                                                       }
+
+                                                       async_body.EmitRedirectedJump (ec, async_body.BodyEnd);
+                                               }
+
+                                               var async_return = (IAssignMethod)storey.HoistedReturnValue;
+                                               async_return.EmitAssign (ec, expr, false, false);
                                                ec.EmitEpilogue ();
+                                       } else {
+                                               expr.Emit (ec);
                                        }
 
                                        ec.Emit (OpCodes.Leave, async_body.BodyEnd);
                                        return;
                                }
 
+                               expr.Emit (ec);
                                ec.EmitEpilogue ();
 
                                if (unwind_protect || ec.EmitAccurateDebugInfo)
@@ -1431,8 +1437,6 @@ namespace Mono.CSharp {
                                } else {
                                        label.AddGotoReference (rc, true);
                                }
-
-                               try_finally = null;
                        } else {
                                label.AddGotoReference (rc, false);
                        }
@@ -1451,8 +1455,28 @@ namespace Mono.CSharp {
                                throw new InternalErrorException ("goto emitted before target resolved");
 
                        Label l = label.LabelTarget (ec);
+
+                       if (try_finally != null && ec.HasSet (BuilderContext.Options.HoistedReturnResult) && IsLeavingFinally (label.Block)) {
+                               var async_body = (AsyncInitializer) ec.CurrentAnonymousMethod;
+                               async_body.EmitRedirectedJump (ec, l);
+                               l = async_body.BodyEnd;
+                       }
+
                        ec.Emit (unwind_protect ? OpCodes.Leave : OpCodes.Br, l);
                }
+
+               bool IsLeavingFinally (Block labelBlock)
+               {
+                       var b = try_finally.Statement as Block;
+                       while (b != null) {
+                               if (b == labelBlock)
+                                       return true;
+
+                               b = b.Parent;
+                       }
+
+                       return false;
+               }
                
                public override object Accept (StructuralVisitor visitor)
                {
@@ -1791,9 +1815,20 @@ namespace Mono.CSharp {
                        
                protected override void DoEmit (EmitContext ec)
                {
-                       if (expr == null)
-                               ec.Emit (OpCodes.Rethrow);
-                       else {
+                       if (expr == null) {
+                               var atv = ec.AsyncThrowVariable;
+                               if (atv != null) {
+                                       if (atv.HoistedVariant != null) {
+                                               atv.HoistedVariant.Emit (ec);
+                                       } else {
+                                               atv.Emit (ec);
+                                       }
+
+                                       ec.Emit (OpCodes.Throw);
+                               } else {
+                                       ec.Emit (OpCodes.Rethrow);
+                               }
+                       } else {
                                expr.Emit (ec);
 
                                ec.Emit (OpCodes.Throw);
@@ -2185,13 +2220,13 @@ namespace Mono.CSharp {
                {
                        li.CreateBuilder (ec);
 
-                       if (Initializer != null)
+                       if (Initializer != null && !IsUnreachable)
                                ((ExpressionStatement) Initializer).EmitStatement (ec);
 
                        if (declarators != null) {
                                foreach (var d in declarators) {
                                        d.Variable.CreateBuilder (ec);
-                                       if (d.Initializer != null) {
+                                       if (d.Initializer != null && !IsUnreachable) {
                                                ec.Mark (d.Variable.Location);
                                                ((ExpressionStatement) d.Initializer).EmitStatement (ec);
                                        }
@@ -2521,6 +2556,10 @@ namespace Mono.CSharp {
 
                public void EmitAddressOf (EmitContext ec)
                {
+                       // TODO: Need something better for temporary variables
+                       if ((flags & Flags.CompilerGenerated) != 0)
+                               CreateBuilder (ec);
+
                        ec.Emit (OpCodes.Ldloca, builder);
                }
 
@@ -2898,10 +2937,12 @@ namespace Mono.CSharp {
                        DoEmit (ec);
                }
 
-               protected void EmitScopeInitializers (EmitContext ec)
+               public void EmitScopeInitializers (EmitContext ec)
                {
                        foreach (Statement s in scope_initializers)
                                s.Emit (ec);
+
+                       scope_initializers = null;
                }
 
                protected override bool DoFlowAnalysis (FlowAnalysisContext fc)
@@ -2922,7 +2963,7 @@ namespace Mono.CSharp {
 
                                end_unreachable = s.FlowAnalysis (fc);
                                if (s.IsUnreachable) {
-                                       statements[startIndex] = new EmptyStatement (s.loc);
+                                       statements [startIndex] = RewriteUnreachableStatement (s);
                                        continue;
                                }
 
@@ -2949,7 +2990,7 @@ namespace Mono.CSharp {
 
                                                if (s.IsUnreachable) {
                                                        s.FlowAnalysis (fc);
-                                                       statements[startIndex] = new EmptyStatement (s.loc);
+                                                       statements [startIndex] = RewriteUnreachableStatement (s);
                                                }
                                        }
                                }
@@ -2964,6 +3005,24 @@ namespace Mono.CSharp {
                        return !Explicit.HasReachableClosingBrace;
                }
 
+               static Statement RewriteUnreachableStatement (Statement s)
+               {
+                       // LAMESPEC: It's not clear whether declararion statement should be part of reachability
+                       // analysis. Even csc report unreachable warning for it but it's actually used hence
+                       // we try to emulate this behaviour
+                       //
+                       // Consider:
+                       //      goto L;
+                       //      int v;
+                       // L:
+                       //      v = 1;
+
+                       if (s is BlockVariable)
+                               return s;
+
+                       return new EmptyStatement (s.loc);
+               }
+
                public void ScanGotoJump (Statement label)
                {
                        int i;
@@ -3726,16 +3785,14 @@ namespace Mono.CSharp {
                        var label = value as LabeledStatement;
                        Block b = block;
                        if (label != null) {
-                               do {
-                                       if (label.Block == b)
-                                               return label;
-                                       b = b.Parent;
-                               } while (b != null);
+                               if (IsLabelVisible (label, b))
+                                       return label;
+
                        } else {
                                List<LabeledStatement> list = (List<LabeledStatement>) value;
                                for (int i = 0; i < list.Count; ++i) {
                                        label = list[i];
-                                       if (label.Block == b)
+                                       if (IsLabelVisible (label, b))
                                                return label;
                                }
                        }
@@ -3743,6 +3800,17 @@ namespace Mono.CSharp {
                        return null;
                }
 
+               static bool IsLabelVisible (LabeledStatement label, Block b)
+               {
+                       do {
+                               if (label.Block == b)
+                                       return true;
+                               b = b.Parent;
+                       } while (b != null);
+
+                       return false;
+               }
+
                public ParameterInfo GetParameterInfo (Parameter p)
                {
                        for (int i = 0; i < parameters.Count; ++i) {
@@ -5458,7 +5526,7 @@ namespace Mono.CSharp {
                        EmitTryBodyPrepare (ec);
                        EmitTryBody (ec);
 
-                       ec.BeginFinallyBlock ();
+                       bool begin = EmitBeginFinallyBlock (ec);
 
                        Label start_finally = ec.DefineLabel ();
                        if (resume_points != null) {
@@ -5486,7 +5554,8 @@ namespace Mono.CSharp {
                                EmitFinallyBody (ec);
                        }
 
-                       ec.EndExceptionBlock ();
+                       if (begin)
+                               ec.EndExceptionBlock ();
                }
 
                public override void EmitForDispose (EmitContext ec, LocalBuilder pc, Label end, bool have_dispatcher)
@@ -5560,6 +5629,12 @@ namespace Mono.CSharp {
                        return res;
                }
 
+               protected virtual bool EmitBeginFinallyBlock (EmitContext ec)
+               {
+                       ec.BeginFinallyBlock ();
+                       return true;
+               }
+
                public override Reachability MarkReachable (Reachability rc)
                {
                        base.MarkReachable (rc);
@@ -6311,9 +6386,16 @@ namespace Mono.CSharp {
                        public override bool Resolve (BlockContext bc)
                        {
                                ctch.Filter = ctch.Filter.Resolve (bc);
-                               var c = ctch.Filter as Constant;
-                               if (c != null && !c.IsDefaultValue) {
-                                       bc.Report.Warning (7095, 1, ctch.Filter.Location, "Exception filter expression is a constant");
+
+                               if (ctch.Filter != null) {
+                                       if (ctch.Filter.ContainsEmitWithAwait ()) {
+                                               bc.Report.Error (7094, ctch.Filter.Location, "The `await' operator cannot be used in the filter expression of a catch clause");
+                                       }
+
+                                       var c = ctch.Filter as Constant;
+                                       if (c != null && !c.IsDefaultValue) {
+                                               bc.Report.Warning (7095, 1, ctch.Filter.Location, "Exception filter expression is a constant");
+                                       }
                                }
 
                                return true;
@@ -6385,20 +6467,29 @@ namespace Mono.CSharp {
 
                                if (li != null)
                                        EmitCatchVariableStore (ec);
-                       } else {
-                               if (IsGeneral)
-                                       ec.BeginCatchBlock (ec.BuiltinTypes.Object);
-                               else
-                                       ec.BeginCatchBlock (CatchType);
 
-                               if (li != null) {
-                                       EmitCatchVariableStore (ec);
+                               if (Block.HasAwait) {
+                                       Block.EmitScopeInitializers (ec);
                                } else {
-                                       ec.Emit (OpCodes.Pop);
+                                       Block.Emit (ec);
                                }
+
+                               return;
                        }
 
-                       Block.Emit (ec);
+                       if (IsGeneral)
+                               ec.BeginCatchBlock (ec.BuiltinTypes.Object);
+                       else
+                               ec.BeginCatchBlock (CatchType);
+
+                       if (li != null) {
+                               EmitCatchVariableStore (ec);
+                       } else {
+                               ec.Emit (OpCodes.Pop);
+                       }
+
+                       if (!Block.HasAwait)
+                               Block.Emit (ec);
                }
 
                void EmitCatchVariableStore (EmitContext ec)
@@ -6414,24 +6505,33 @@ namespace Mono.CSharp {
                                hoisted_temp = new LocalTemporary (li.Type);
                                hoisted_temp.Store (ec);
 
-                               // switch to assigning from the temporary variable and not from top of the stack
+                               // switch to assignment from temporary variable and not from top of the stack
                                assign.UpdateSource (hoisted_temp);
                        }
                }
 
-               public override bool Resolve (BlockContext ec)
+               public override bool Resolve (BlockContext bc)
                {
-                       using (ec.Set (ResolveContext.Options.CatchScope)) {
-                               if (type_expr != null) {
-                                       type = type_expr.ResolveAsType (ec);
+                       using (bc.Set (ResolveContext.Options.CatchScope)) {
+                               if (type_expr == null) {
+                                       if (CreateExceptionVariable (bc.Module.Compiler.BuiltinTypes.Object)) {
+                                               Expression source = new EmptyExpression (li.Type);
+                                               assign = new CompilerAssign (new LocalVariableReference (li, Location.Null), source, Location.Null);
+                                               Block.AddScopeStatement (new StatementExpression (assign, Location.Null));
+                                       }
+                               } else {
+                                       type = type_expr.ResolveAsType (bc);
                                        if (type == null)
                                                return false;
 
-                                       if (type.BuiltinType != BuiltinTypeSpec.Type.Exception && !TypeSpec.IsBaseClass (type, ec.BuiltinTypes.Exception, false)) {
-                                               ec.Report.Error (155, loc, "The type caught or thrown must be derived from System.Exception");
+                                       if (li == null)
+                                               CreateExceptionVariable (type);
+
+                                       if (type.BuiltinType != BuiltinTypeSpec.Type.Exception && !TypeSpec.IsBaseClass (type, bc.BuiltinTypes.Exception, false)) {
+                                               bc.Report.Error (155, loc, "The type caught or thrown must be derived from System.Exception");
                                        } else if (li != null) {
                                                li.Type = type;
-                                               li.PrepareAssignmentAnalysis (ec);
+                                               li.PrepareAssignmentAnalysis (bc);
 
                                                // source variable is at the top of the stack
                                                Expression source = new EmptyExpression (li.Type);
@@ -6451,13 +6551,26 @@ namespace Mono.CSharp {
                                }
 
                                Block.SetCatchBlock ();
-                               return Block.Resolve (ec);
+                               return Block.Resolve (bc);
                        }
                }
 
+               bool CreateExceptionVariable (TypeSpec type)
+               {
+                       if (!Block.HasAwait)
+                               return false;
+
+                       // TODO: Scan the block for rethrow expression
+                       //if (!Block.HasRethrow)
+                       //      return;
+
+                       li = LocalVariable.CreateCompilerGenerated (type, block, Location.Null);
+                       return true;
+               }
+
                protected override bool DoFlowAnalysis (FlowAnalysisContext fc)
                {
-                       if (li != null) {
+                       if (li != null && !li.IsCompilerGenerated) {
                                fc.SetVariableAssigned (li.VariableInfo, true);
                        }
 
@@ -6494,6 +6607,10 @@ namespace Mono.CSharp {
                ExplicitBlock fini;
                List<DefiniteAssignmentBitSet> try_exit_dat;
 
+               // TODO: Should be on stack only
+               Label prev_body_end;
+               Expression prev_HoistedReturn;
+
                public TryFinally (Statement stmt, ExplicitBlock fini, Location loc)
                         : base (stmt, loc)
                {
@@ -6528,12 +6645,86 @@ namespace Mono.CSharp {
 
                protected override void EmitTryBody (EmitContext ec)
                {
+                       if (fini.HasAwait) {
+                               prev_HoistedReturn = ec.AsyncTaskStorey.HoistedReturnValue;
+                               var ai = (AsyncInitializer)ec.CurrentAnonymousMethod;
+                               prev_body_end = ai.BodyEnd;
+                               ai.BodyEnd = ec.DefineLabel ();
+
+                               using (ec.With (BuilderContext.Options.HoistedReturnResult, true)) {
+                                       stmt.Emit (ec);
+                               }
+
+                               return;
+                       }
+
                        stmt.Emit (ec);
                }
 
+               protected override bool EmitBeginFinallyBlock (EmitContext ec)
+               {
+                       if (fini.HasAwait)
+                               return false;
+
+                       return base.EmitBeginFinallyBlock (ec);
+               }
+
                public override void EmitFinallyBody (EmitContext ec)
                {
+                       if (!fini.HasAwait) {
+                               fini.Emit (ec);
+                               return;
+                       }
+
+                       //
+                       // Emits catch block like
+                       //
+                       // catch (object temp) {
+                       //      this.exception_field = temp;
+                       // }
+                       //
+                       var type = ec.BuiltinTypes.Object;
+                       ec.BeginCatchBlock (type);
+
+                       var temp = ec.GetTemporaryLocal (type);
+                       ec.Emit (OpCodes.Stloc, temp);
+
+                       var exception_field = ec.GetTemporaryField (type);
+                       ec.EmitThis ();
+                       ec.Emit (OpCodes.Ldloc, temp);
+                       exception_field.EmitAssignFromStack (ec);
+
+                       ec.EndExceptionBlock ();
+
+                       ec.FreeTemporaryLocal (temp, type);
+
+                       var ai = (AsyncInitializer)ec.CurrentAnonymousMethod;
+                       ec.MarkLabel (ai.BodyEnd);
+                       var local_return = ai.BodyEnd;
+                       ai.BodyEnd = prev_body_end;
+                       var fin_hoisted_return = ec.AsyncTaskStorey.HoistedReturnValue as StackFieldExpr;
+                       ec.AsyncTaskStorey.HoistedReturnValue = prev_HoistedReturn;
+
                        fini.Emit (ec);
+
+                       //
+                       // Emits exception rethrow
+                       //
+                       // if (this.exception_field != null)
+                       //      throw this.exception_field;
+                       //
+                       exception_field.Emit (ec);
+                       var skip_throw = ec.DefineLabel ();
+                       ec.Emit (OpCodes.Brfalse_S, skip_throw);
+                       exception_field.Emit (ec);
+                       ec.Emit (OpCodes.Throw);
+                       ec.MarkLabel (skip_throw);
+
+                       exception_field.IsAvailableForReuse = true;
+
+                       ai.EmitRedirectedJumpsTable (ec, fin_hoisted_return, local_return);
+                       if (fin_hoisted_return != null)
+                               fin_hoisted_return.PrepareCleanup (ec);
                }
 
                protected override bool DoFlowAnalysis (FlowAnalysisContext fc)
@@ -6597,6 +6788,7 @@ namespace Mono.CSharp {
                public Block Block;
                List<Catch> clauses;
                readonly bool inside_try_finally;
+               List<Catch> catch_sm;
 
                public TryCatch (Block block, List<Catch> catch_clauses, Location l, bool inside_try_finally)
                        : base (l)
@@ -6641,6 +6833,13 @@ namespace Mono.CSharp {
 
                                ok &= c.Resolve (bc);
 
+                               if (c.Block.HasAwait) {
+                                       if (catch_sm == null)
+                                               catch_sm = new List<Catch> ();
+
+                                       catch_sm.Add (c);
+                               }
+
                                if (c.Filter != null)
                                        continue;
 
@@ -6697,11 +6896,56 @@ namespace Mono.CSharp {
 
                        Block.Emit (ec);
 
-                       foreach (Catch c in clauses)
+                       LocalBuilder state_variable = null;
+                       foreach (Catch c in clauses) {
                                c.Emit (ec);
 
+                               if (catch_sm != null) {
+                                       if (state_variable == null)
+                                               state_variable = ec.GetTemporaryLocal (ec.Module.Compiler.BuiltinTypes.Int);
+
+                                       var index = catch_sm.IndexOf (c);
+                                       if (index < 0)
+                                               continue;
+
+                                       ec.EmitInt (index + 1);
+                                       ec.Emit (OpCodes.Stloc, state_variable);
+                               }
+                       }
+
                        if (!inside_try_finally)
                                ec.EndExceptionBlock ();
+
+                       if (state_variable != null) {
+                               ec.Emit (OpCodes.Ldloc, state_variable);
+
+                               var labels = new Label [catch_sm.Count + 1];
+                               for (int i = 0; i < labels.Length; ++i) {
+                                       labels [i] = ec.DefineLabel ();
+                               }
+
+                               var end = ec.DefineLabel ();
+                               ec.Emit (OpCodes.Switch, labels);
+
+                               // 0 value is default label
+                               ec.MarkLabel (labels [0]);
+                               ec.Emit (OpCodes.Br, end);
+
+                               var atv = ec.AsyncThrowVariable;
+                               Catch c = null;
+                               for (int i = 0; i < catch_sm.Count; ++i) {
+                                       if (c != null && c.Block.HasReachableClosingBrace)
+                                               ec.Emit (OpCodes.Br, end);
+
+                                       ec.MarkLabel (labels [i + 1]);
+                                       c = catch_sm [i];
+                                       ec.AsyncThrowVariable = c.Variable;
+                                       c.Block.Emit (ec);
+                               }
+                               ec.AsyncThrowVariable = atv;
+
+                               ec.MarkLabel (end);
+                       }
                }
 
                protected override bool DoFlowAnalysis (FlowAnalysisContext fc)
@@ -6775,6 +7019,7 @@ namespace Mono.CSharp {
                        public VariableDeclaration (LocalVariable li, Location loc)
                                : base (li)
                        {
+                               reachable = true;
                                this.loc = loc;
                        }
 
@@ -7024,12 +7269,12 @@ namespace Mono.CSharp {
                                }
                        }
 
-                       base.Resolve (ec);
+                       var ok = base.Resolve (ec);
 
                        if (vr != null)
                                vr.IsLockedByStatement = vr_locked;
 
-                       return true;
+                       return ok;
                }
 
                protected override void CloneTo (CloneContext clonectx, Statement t)
@@ -7217,6 +7462,7 @@ namespace Mono.CSharp {
                                public RuntimeDispose (LocalVariable lv, Location loc)
                                        : base (lv, loc)
                                {
+                                       reachable = true;
                                }
 
                                protected override void CheckIDiposableConversion (BlockContext bc, LocalVariable li, Expression initializer)
@@ -7590,8 +7836,7 @@ namespace Mono.CSharp {
                                Statement = new CollectionForeach (this, variable, expr);
                        }
 
-                       base.Resolve (ec);
-                       return true;
+                       return base.Resolve (ec);
                }
 
                protected override void DoEmit (EmitContext ec)
index 73d82b086f97752c46a2af57bdc684a48d80b0ab..0da8133fbd2c15d75f94f0105d3ee9d750c93de6 100644 (file)
@@ -295,6 +295,12 @@ namespace Mono.CSharp
                        }
                }
 
+               public bool IsStructOrEnum {
+                       get {
+                               return (Kind & (MemberKind.Struct | MemberKind.Enum)) != 0;
+                       }
+               }
+
                public bool IsTypeBuilder {
                        get {
 #if STATIC
@@ -1930,6 +1936,11 @@ namespace Mono.CSharp
 
                        return ac;
                }
+
+               public override List<MissingTypeSpecReference> ResolveMissingDependencies (MemberSpec caller)
+               {
+                       return Element.ResolveMissingDependencies (caller);
+               }
        }
 
        class ReferenceContainer : ElementTypeSpec
diff --git a/mcs/tests/gtest-311.cs b/mcs/tests/gtest-311.cs
deleted file mode 100644 (file)
index d9792d5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// Compiler options: -t:library
-
-using System;
-using System.Runtime.InteropServices;
-
-class A
-{
-       [DllImport ("Dingus", CharSet=CharSet.Auto)]
-       extern static void Do<T> ();
-
-       [DllImport ("Dingus")]
-       extern static void Do2<T> ();
-
-       public static void Main ()
-       {
-
-       }
-}
\ No newline at end of file
index bea361535af5c5b40f069cd84462d51373bdbce6..fbc4644f46be35c04755786c48ad901a17d916cd 100644 (file)
@@ -19,12 +19,8 @@ class C
                if (b != "a")
                        return 1;
                
-               int? i = null ?? null;
-               if (i != null)
-                       return 2;
-
                object z = a ?? null;
-               if (i != null)
+               if (z != null)
                        return 3;
 
                string p = default (string) ?? "a";
diff --git a/mcs/tests/gtest-614.cs b/mcs/tests/gtest-614.cs
new file mode 100644 (file)
index 0000000..d68193a
--- /dev/null
@@ -0,0 +1,28 @@
+using System;
+
+struct S
+{
+       public static explicit operator int? (S? s)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static implicit operator int (S? s)
+       {
+               return 2;
+       }
+}
+
+class C
+{
+       public static int Main()
+       {
+               int? nn = 3;
+               S? s = new S ();
+               int? ret = s ?? nn;
+               if (ret != 2)
+                       return 1;
+
+               return 0;
+       }
+}
diff --git a/mcs/tests/gtest-615.cs b/mcs/tests/gtest-615.cs
new file mode 100644 (file)
index 0000000..f20ee57
--- /dev/null
@@ -0,0 +1,21 @@
+// Compiler options: -unsafe 
+
+unsafe class X
+{
+       struct S
+       {
+       }
+
+       public class N<T>
+       {
+               S* s;
+       }
+}
+
+public class C
+{
+       public static void Main ()
+       {
+               new X.N<int> ();
+       }
+}
\ No newline at end of file
index 248d1452d2bb949b8639d8fa3ddee3f21cf09b80..e538021cd0aff253f68ddc97dfe97a30991ec39a 100644 (file)
@@ -254,6 +254,12 @@ enum MyEnumUlong : ulong
        Value_1 = 1
 }
 
+enum EnumInt
+{
+       A,
+       B,
+       C
+}
 
 class NewTest<T>
 {
@@ -1205,6 +1211,14 @@ class Tester
                Assert (true, e.Compile ().Invoke (4, 4));
        }
 
+       void EqualTest_16 ()
+       {
+               Expression<Func<EnumInt?, EnumInt, bool?>> e = (x, y) => x == y;
+               AssertNodeType (e, ExpressionType.Convert);
+               Assert (false, e.Compile () (null, 0));
+               Assert (true, e.Compile () (EnumInt.B, EnumInt.B));
+       }
+
        void EqualTestDelegate ()
        {
                Expression<Func<Delegate, Delegate, bool>> e1 = (a, b) => a == b;
diff --git a/mcs/tests/gtest-optional-31.cs b/mcs/tests/gtest-optional-31.cs
new file mode 100644 (file)
index 0000000..9e7158a
--- /dev/null
@@ -0,0 +1,21 @@
+using System;
+
+class Test
+{
+       public static int M (bool b = false)
+       {
+               Console.WriteLine ("PASS");
+               return 0;
+       }
+
+       public static int M (params string[] args)
+       {
+               Console.WriteLine ("FAIL");
+               return 1;
+       }
+       
+       public static int Main ()
+       {
+               return M ();
+       }
+}
index 3b2fa888a96ac26f051f86bd68a244eb300b2b17..e0e263d435927787e29d8e475998b317d7457cb2 100644 (file)
@@ -4,7 +4,7 @@ class MainClass
 {
        public struct DC
        {
-               private readonly Guid m_Id;
+               public readonly Guid m_Id;
 
                public DC (Guid Id)
                {
@@ -27,6 +27,10 @@ class MainClass
                if (dc.Id.Equals (default (Guid)))
                        return 1;
 
+               if (dc.m_Id.Equals (default (Guid)))
+                       return 2;
+
+Console.WriteLine ("ok");
                return 0;
        }
 }
diff --git a/mcs/tests/test-859.cs b/mcs/tests/test-859.cs
new file mode 100644 (file)
index 0000000..b866263
--- /dev/null
@@ -0,0 +1,20 @@
+class X
+{
+       public static void Main ()
+       {
+               int i = 0;
+               if (i == 1) {
+                       a:
+                       switch (i) {
+                       default:
+                               goto a;
+                       }
+               } else if (i == 2) {
+                       a:
+                       switch (i) {
+                       default:
+                               goto a;
+                       }
+               }
+       }
+}
diff --git a/mcs/tests/test-892.cs b/mcs/tests/test-892.cs
new file mode 100644 (file)
index 0000000..b649279
--- /dev/null
@@ -0,0 +1,19 @@
+using System.Reflection;
+using System.Diagnostics;
+using System;
+
+[assembly: AssemblyVersion ("2011.04.0.0")]
+[assembly: AssemblyFileVersion ("2011.02.0.0")]
+
+class X
+{
+       public static int Main ()
+       {
+               Assembly executingAssembly = Assembly.GetAssembly (typeof(X));
+               FileVersionInfo fvi = FileVersionInfo.GetVersionInfo (executingAssembly.Location);
+               if (fvi.FileVersion != "2011.02.0.0")
+                       return 1;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-893.cs b/mcs/tests/test-893.cs
new file mode 100644 (file)
index 0000000..97cfc0a
--- /dev/null
@@ -0,0 +1,15 @@
+public class A
+{
+       public static bool TryAssign (out int x)
+       {
+               x = 0;
+               return true;
+       }
+
+       public static void Main ()
+       {
+               int x, y;
+               if ((!TryAssign (out x) || x == 0) & (!TryAssign (out y) || y == 0)) {
+               }
+       }
+}
diff --git a/mcs/tests/test-894.cs b/mcs/tests/test-894.cs
new file mode 100644 (file)
index 0000000..259a66c
--- /dev/null
@@ -0,0 +1,19 @@
+using System;
+
+[AttributeUsage (AttributeTargets.All + 0xFFFFFE + 1)]
+class A1Attribute : Attribute
+{
+}
+
+[AttributeUsage ((AttributeTargets) 0xffff)]
+class A2Attribute : Attribute
+{
+}
+
+public class Test
+{
+       public static void Main ()
+       {
+               
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-895.cs b/mcs/tests/test-895.cs
new file mode 100644 (file)
index 0000000..bef7982
--- /dev/null
@@ -0,0 +1,21 @@
+using System;
+
+class X
+{
+       public void Test (int g, out int results)
+       {
+               if ((results = Foo (g > 0 ? 1 : 2)) != 4)
+               {
+                       Console.WriteLine (results);
+               }
+       }
+
+       int Foo (object o)
+       {
+               return 4;
+       }
+
+       public static void Main ()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-896.cs b/mcs/tests/test-896.cs
new file mode 100644 (file)
index 0000000..4336bf7
--- /dev/null
@@ -0,0 +1,13 @@
+using System;
+
+class Program
+{
+       public static void Main ()
+       {
+               goto L1;
+               int z;
+       L1: 
+               z = 3;
+               Console.WriteLine (z);
+       }
+}
\ No newline at end of file
index 9f8cccac0700e535ade3411b92766ae7c006c939..3363d7f4b110d0f21faa7373cdf25ef53640eb5e 100644 (file)
@@ -585,6 +585,18 @@ class Tester : Base
                var s = new S (await Task.Factory.StartNew (() => 77), await Task.Factory.StartNew (() => "b"));
                return s.Value == 77;
        }
+
+       async Task<int> NewDelegate_1 ()
+       {
+               var f = new Func<int> (await NewDelegate_1_0 ());
+               return f ();
+       }
+
+       static async Task<Func<int>> NewDelegate_1_0 ()
+       {
+               await Task.Factory.StartNew (() => { });
+               return () => 0;         
+       }
        
        async Task<int> NewInitTest_1 ()
        {
index a1da25f39d5ec38cd4222450ce606465945af4ac..a3ae814086e2e10e58f9060f496815d011fce6b0 100644 (file)
@@ -1,8 +1,8 @@
-// Compiler options: -langversion:future
-
 using System;
 using System.Threading.Tasks;
 using System.Threading;
+using System.Collections;
+using System.Collections.Generic;
 
 interface IFoo
 {
@@ -25,12 +25,28 @@ struct S : IFoo
        }
 }
 
+struct S2 : IEnumerable
+{
+       public List<int> Values;
+
+       public void Add (int x)
+       {
+               if (Values == null)
+                       Values = new List<int> ();
+
+               Values.Add(x);
+       }
+
+       public IEnumerator GetEnumerator()
+       {
+               return Values as IEnumerator;
+       }
+}
+
 class Tester
 {
        async Task<T> NewInitTestGen<T> () where T : struct, IFoo
        {
-               int value = 9;
-               
                var s = new T () {
                        Value = await Task.Factory.StartNew (() => 13).ConfigureAwait (false)
                };
@@ -40,6 +56,16 @@ class Tester
                
                return s;
        }
+
+       static async Task<int> NewInitCol ()
+       {
+               var s = new S2 { 
+                       await Task.FromResult (1),
+                       await Task.Factory.StartNew (() => 2)
+               };
+
+               return s.Values [0] + s.Values [1];
+       }
        
        public static int Main ()
        {
@@ -51,6 +77,10 @@ class Tester
                
                if (t.Result.Value != 13)
                        return 2;
+
+               var v = NewInitCol ().Result;
+               if (v != 3)
+                       return 3;
                
                return 0;
        }
diff --git a/mcs/tests/test-async-63.cs b/mcs/tests/test-async-63.cs
new file mode 100644 (file)
index 0000000..4572d7e
--- /dev/null
@@ -0,0 +1,85 @@
+using System;
+using System.Threading.Tasks;
+
+class C
+{
+       static int counter;
+       public static async Task TestSingleAwait (bool throwException)
+       {
+               try {
+                       if (throwException)
+                               throw new ApplicationException ();
+               } catch (ApplicationException ex) {
+                       Console.WriteLine ("x1a");
+                       ++counter;
+                       await Call ();
+                       Console.WriteLine ("x2a");
+                       ++counter;
+               } catch {
+                       throw;
+               }
+
+               Console.WriteLine ("end");
+       }
+       
+       public static async Task TestDoubleAwait (bool throwException)
+       {
+               try {
+                       if (throwException)
+                               throw new ApplicationException ();
+               } catch (ApplicationException ex) {
+                       Console.WriteLine ("x1a");
+                       ++counter;
+                       await Call ();
+                       Console.WriteLine ("x2a");
+                       ++counter;
+               } catch {
+                       Console.WriteLine ("x1b");
+                       counter += 4;
+                       await Call ();
+                       Console.WriteLine ("x2b");
+                       counter += 7;
+               }
+
+               Console.WriteLine ("end");
+       }
+
+       static Task Call ()
+       {
+               return Task.Factory.StartNew (() => false);
+       }
+
+       void HH ()
+       {
+               try {
+                               throw new ApplicationException ();
+               } catch {
+                       throw;
+               }
+       }
+
+       public static int Main ()
+       {
+               TestSingleAwait (true).Wait ();
+               Console.WriteLine (counter);
+               if (counter != 2)
+                       return 1;
+
+               TestSingleAwait (false).Wait ();
+               if (counter != 2)
+                       return 2;
+
+               counter = 0;
+
+               TestDoubleAwait (true).Wait ();
+               Console.WriteLine (counter);
+               if (counter != 2)
+                       return 3;
+
+               TestDoubleAwait (false).Wait ();
+               if (counter != 2)
+                       return 4;               
+
+               return 0;
+       }
+}
diff --git a/mcs/tests/test-async-64.cs b/mcs/tests/test-async-64.cs
new file mode 100644 (file)
index 0000000..e16e127
--- /dev/null
@@ -0,0 +1,18 @@
+using System;
+using System.Threading.Tasks;
+
+class X
+{
+       public static void Main ()
+       {
+               Invoke (async delegate {
+                       await Task.Yield ();
+                       return 1;
+               });
+       }
+
+       static T Invoke<T> (Func<Task<T>> m)
+       {
+               return default (T);
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-async-65.cs b/mcs/tests/test-async-65.cs
new file mode 100644 (file)
index 0000000..3967236
--- /dev/null
@@ -0,0 +1,54 @@
+using System;
+using System.Threading.Tasks;
+
+class C
+{
+       static int counter;
+
+       public static async Task TestRethrow (Exception e)
+       {
+               try {
+                       throw e;
+               } catch (ApplicationException) {
+                       Console.WriteLine ("x1a");
+                       counter = 1;
+                       await Task.Delay (1);
+                       Console.WriteLine ("x2a");
+                       counter = 3;
+                       throw;
+               } catch {
+                       counter = 9;
+                       await Task.Delay (1);
+                       Console.WriteLine ("ga");
+                       throw;
+               }
+       }
+
+       public static int Main ()
+       {
+               var ex = new ApplicationException ();
+               try {
+                       TestRethrow (ex).Wait ();
+               } catch (AggregateException e) {
+                       if (e.InnerException != ex)
+                               return 1;
+               }
+
+               if (counter != 3)
+                       return 2;
+
+               var ex2 = new NotSupportedException ();
+               try {
+                       TestRethrow (ex2).Wait ();
+               } catch (AggregateException e) {
+                       if (e.InnerException != ex2)
+                               return 3;
+               }
+
+               if (counter != 9)
+                       return 4;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+}
diff --git a/mcs/tests/test-async-66.cs b/mcs/tests/test-async-66.cs
new file mode 100644 (file)
index 0000000..bbba098
--- /dev/null
@@ -0,0 +1,42 @@
+using System;
+using System.Threading.Tasks;
+
+class TestFinally
+{
+       static int counter;
+
+       async static Task Test (bool throwException)
+       {
+               try {
+                       if (throwException)
+                               throw new ApplicationException ();
+
+                       ++counter;
+                       System.Console.WriteLine ();
+               } finally {
+                       counter += 10;
+                       await Task.Delay (2);
+                       counter += 100;
+               }
+               counter += 1000;
+       }
+
+       static int Main ()
+       {
+               Test (false).Wait ();
+               if (counter != 1111)
+                       return 1;
+
+               counter = 0;
+               try {
+                       Test (true).Wait ();
+                       return 2;
+               } catch (AggregateException) {                  
+               }
+
+               if (counter != 110)
+                       return 3;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-async-67.cs b/mcs/tests/test-async-67.cs
new file mode 100644 (file)
index 0000000..2348dc7
--- /dev/null
@@ -0,0 +1,24 @@
+using System;
+using System.Threading.Tasks;
+
+class Test
+{
+       public static async Task<int[]> Run ()
+       {
+               return new int[] {
+                       1, await Task.Factory.StartNew (() => 2)
+               };
+       }
+
+       public static int Main ()
+       {
+               var t = Run ().Result;
+               if (t [0] != 1)
+                       return 1;
+
+               if (t [1] != 2)
+                       return 2;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-async-69.cs b/mcs/tests/test-async-69.cs
new file mode 100644 (file)
index 0000000..af133f9
--- /dev/null
@@ -0,0 +1,151 @@
+using System;
+using System.Threading.Tasks;
+
+class Test
+{
+       static bool fin;
+
+       static async Task<int> YieldValue (int a)
+       {
+               await Task.Yield ();
+               return a;
+       }
+
+       static async Task<int> TestFinallyWithReturn (int value)
+       {
+               fin = false;
+               try {
+                       if (value > 4)
+                               return 5;
+
+                       value += 10;
+                       Console.WriteLine ("try");
+               } finally {
+                       fin = true;
+                       Console.WriteLine ("finally");
+                       value += await YieldValue (100);
+               }
+
+               value += 1000;
+               Console.WriteLine ("over");
+
+               return value;
+       }
+
+       static async Task TestFinallyWithReturnNoValue (int value)
+       {
+               fin = false;
+               try {
+                       if (value > 4)
+                               return;
+
+                       value += 10;
+                       Console.WriteLine ("try");
+               } finally {
+                       fin = true;
+                       Console.WriteLine ("finally");
+                       value += await YieldValue (100);
+               }
+
+               value += 1000;
+               Console.WriteLine ("over");
+       }
+
+       static async Task<int> TestFinallyWithGoto (int value)
+       {
+               fin = false;
+               try {
+                       if (value > 4)
+                               goto L;
+
+                       value += 10;
+                       Console.WriteLine ("try");
+               } finally {
+                       fin = true;
+                       Console.WriteLine ("finally");
+                       value += await YieldValue (100);
+               }
+               value += 1000;
+L:
+               Console.WriteLine ("over");
+               return value;
+       }
+
+        static async Task<int> TestFinallyWithGotoAndReturn (int value)
+       {
+               fin = false;
+               try {
+                       if (value > 4)
+                               goto L;
+
+                       value += 10;
+                       Console.WriteLine ("try");
+                       if (value > 12)
+                               return 9;
+               } finally {
+                       fin = true;
+                       Console.WriteLine ("finally");
+                       value += await YieldValue (100);
+               }
+               value += 1000;
+L:
+               Console.WriteLine ("over");
+               return value;
+       }
+
+       public static int Main ()
+       {
+               if (TestFinallyWithReturn (9).Result != 5)
+                       return 1;
+
+               if (!fin)
+                       return 2;
+
+               if (TestFinallyWithReturn (1).Result != 1111)
+                       return 3;
+
+               if (!fin)
+                       return 4;
+
+               TestFinallyWithReturnNoValue (9).Wait ();
+               if (!fin)
+                       return 5;
+
+               TestFinallyWithReturnNoValue (1).Wait ();
+               if (!fin)
+                       return 6;
+
+               if (TestFinallyWithGoto (9).Result != 109)
+                       return 7;
+
+               if (!fin)
+                       return 8;
+
+               if (TestFinallyWithGoto (1).Result != 1111)
+                       return 9;
+
+               if (!fin)
+                       return 10;
+
+               if (TestFinallyWithGotoAndReturn (9).Result != 109)
+                       return 11;
+
+               if (!fin)
+                       return 12;
+
+               if (TestFinallyWithGotoAndReturn (1).Result != 1111)
+                       return 13;
+
+               if (!fin)
+                       return 14;
+
+               if (TestFinallyWithGotoAndReturn (3).Result != 9)
+                       return 15;
+
+               if (!fin)
+                       return 16;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-ex-filter-03.cs b/mcs/tests/test-ex-filter-03.cs
new file mode 100644 (file)
index 0000000..d2a3e91
--- /dev/null
@@ -0,0 +1,21 @@
+using System;
+
+class X
+{
+       public static int Main ()
+       {
+               try {
+                       bool x = true;
+                       try {
+                               throw new ApplicationException ();
+                       } catch (NullReferenceException) if (x) {
+                               throw;
+                       }
+
+                       return 1;
+               } catch (ApplicationException) {
+                       Console.WriteLine ("ok");
+                       return 0;
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-ex-filter-04.cs b/mcs/tests/test-ex-filter-04.cs
new file mode 100644 (file)
index 0000000..122accb
--- /dev/null
@@ -0,0 +1,74 @@
+using System;
+using System.Threading.Tasks;
+
+class X
+{
+       static Exception ex = new ApplicationException ();
+
+       public static int Main ()
+       {
+               if (Test (5, null).Result != 5)
+                       return 1;
+
+               try {
+                       Test (5, ex).Wait ();
+                       return 2;
+               } catch (AggregateException ae) {
+                       if (ae.InnerException != ex)
+                               return 3;
+               }
+
+               try {
+                       Test (15, ex).Wait ();
+                       return 4;
+               } catch (AggregateException ae) {
+                       if (ae.InnerException != ex)
+                               return 5;
+               }
+
+               try {
+                       TestGeneric (5).Wait ();
+                       return 10;
+               } catch (AggregateException ae) {
+                       if (ae.InnerException != ex)
+                               return 11;
+               }
+               
+               try {
+                       TestGeneric (15).Wait ();
+                       return 12;
+               } catch (AggregateException ae) {
+                       if (ae.InnerException != ex)
+                               return 13;
+               }
+
+               return 0;
+       }
+
+       async static Task<int> Test (int x, Exception e)
+       {
+               try {
+                       Console.WriteLine (x);
+                       if (e != null)
+                               throw e;
+               } catch (Exception) if (x != 15) {
+                       await Task.FromResult (0);
+                       throw;
+               }
+
+               return x;
+       }
+
+       async static Task<int> TestGeneric (int x)
+       {
+               try {
+                       Console.WriteLine (x);
+                       throw ex;
+               } catch if (x != 15) {
+                       await Task.FromResult (0);
+                       throw;
+               }
+
+               return x;
+       }
+}
\ No newline at end of file
index 5b4e0e1edcd25d63a464cd742b93a18ffa7db9fa..2db20c17d24a3ffcdc70f89ed18c659e970328ca 100644 (file)
@@ -1,37 +1,40 @@
-<?xml version="1.0"?>\r
-<doc>\r
-    <assembly>\r
-        <name>test-xml-063</name>\r
-    </assembly>\r
-    <members>\r
-        <member name="T:A">\r
-            Test A\r
-        </member>\r
-        <member name="T:Test">\r
-            <seealso cref="M:Test.op_Explicit(Test)~System.Int64"/>\r
-            <seealso cref="M:Test.op_Explicit(Test)~A"/>\r
-            <seealso cref="M:Test.op_Implicit(System.Int32)~Test"/>\r
-            <seealso cref="M:Test.op_Implicit(System.Boolean)~Test"/>\r
-            <seealso cref="M:Test.op_LogicalNot(Test)"/>\r
-            <seealso cref="M:Test.#ctor"/>\r
-        </member>\r
-        <member name="M:Test.#ctor">\r
-            Start\r
-        </member>\r
-        <member name="M:Test.op_Explicit(Test)~A">\r
-            Comment\r
-        </member>\r
-        <member name="M:Test.op_Explicit(Test)~System.Int64">\r
-            Comment 2\r
-        </member>\r
-        <member name="M:Test.op_Implicit(System.Int32)~Test">\r
-            Comment 3\r
-        </member>\r
-        <member name="M:Test.op_Implicit(System.Boolean)~Test">\r
-            Comment 4\r
-        </member>\r
-        <member name="M:Test.op_LogicalNot(Test)">\r
-            Comment 5\r
-        </member>\r
-    </members>\r
-</doc>\r
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-063</name>
+    </assembly>
+    <members>
+        <member name="T:A">
+            Test A</member>
+        <member name="T:Test">
+            <seealso cref="M:Test.op_Explicit(Test)~System.Int64" />
+            <seealso cref="M:Test.op_Explicit(Test)~A" />
+            <seealso cref="M:Test.op_Implicit(System.Int32)~Test" />
+            <seealso cref="M:Test.op_Implicit(System.Boolean)~Test" />
+            <seealso cref="M:Test.op_LogicalNot(Test)" />
+            <seealso cref="M:Test.op_Equality(Test,System.Int32)" />
+            <seealso cref="M:Test.op_Inequality(Test,System.Int32)" />
+            <seealso cref="M:Test.#ctor" />
+        </member>
+        <member name="M:Test.#ctor">
+            Start</member>
+        <member name="M:Test.op_Explicit(Test)~A">
+            Comment</member>
+        <member name="M:Test.op_Explicit(Test)~System.Int64">
+            Comment 2</member>
+        <member name="M:Test.op_Implicit(System.Int32)~Test">
+            Comment 3</member>
+        <member name="M:Test.op_Implicit(System.Boolean)~Test">
+            Comment 4</member>
+        <member name="M:Test.op_LogicalNot(Test)">
+            Comment 5</member>
+        <member name="M:Test.op_Equality(Test,System.Int32)">
+            Comment 6</member>
+        <member name="M:Test.op_Inequality(Test,System.Int32)">
+            Comment 7</member>
+        <member name="M:Test.op_Equality(Test,System.Int64)">
+            Comment 61</member>
+        <member name="M:Test.op_Inequality(Test,System.Int64)">
+            Comment 72</member>
+    </members>
+</doc>
index 7a63f013ad7e5940aba86d25f863bba8a769a009..f9964180120d0661b98c95100c953e95ff3b5266 100644 (file)
@@ -10,6 +10,8 @@ public class A
 /// <seealso cref="implicit operator Test"/>
 /// <seealso cref="implicit operator Test(bool)"/>
 /// <seealso cref="operator !(Test)"/>
+/// <seealso cref="operator =="/>
+/// <seealso cref="operator !="/>
 /// <seealso cref="Test()"/>
 public class Test
 {
@@ -17,37 +19,61 @@ public class Test
        Test ()
        {
        }
-       
+
        /// Comment
-       public static explicit operator A(Test test)
+       public static explicit operator A (Test test)
        {
                return new A ();
        }
-       
+
        /// Comment 2
-       public static explicit operator long(Test test)
+       public static explicit operator long (Test test)
        {
                return 2;
        }
-       
+
        /// Comment 3
-       public static implicit operator Test(int test)
+       public static implicit operator Test (int test)
        {
                return new Test ();
        }
-       
+
        /// Comment 4
-       public static implicit operator Test(bool test)
+       public static implicit operator Test (bool test)
        {
                return new Test ();
        }
-       
+
        /// Comment 5
        public static bool operator !(Test test)
        {
                return false;
        }
-       
+
+       /// Comment 6
+       public static bool operator == (Test a, int b)
+       {
+               return true;
+       }
+
+       /// Comment 7
+       public static bool operator != (Test a, int b)
+       {
+               return false;
+       }
+
+       /// Comment 61
+       public static bool operator == (Test a, long b)
+       {
+               return true;
+       }
+
+       /// Comment 72
+       public static bool operator != (Test a, long b)
+       {
+               return false;
+       }
+
        static void Main ()
        {
        }
index 19d9696f82c022aed828f8fb4e98ad92b6a9ab45..fbf8ee7af10f2a35932f48a2b69ad9d5c6e41c38 100644 (file)
         <size>2</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>245</size>\r
+        <size>208</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="gtest-433.cs">\r
     <type name="M">\r
       <method name="Void Main()" attrs="150">\r
-        <size>38</size>\r
+        <size>42</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>28</size>\r
       </method>\r
       <method name="Void ThisWorksFine()" attrs="150">\r
-        <size>39</size>\r
+        <size>41</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-614.cs">\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Int32] op_Explicit(System.Nullable`1[S])" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Int32 op_Implicit(System.Nullable`1[S])" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>100</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-615.cs">\r
+    <type name="X">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+N`1[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\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
         <size>0</size>\r
       </method>\r
     </type>\r
+    <type name="Tester">\r
+      <method name="Void EqualTest_16()" attrs="129">\r
+        <size>185</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-02.cs">\r
     <type name="M">\r
         <size>33</size>\r
       </method>\r
       <method name="T Value[T]()" attrs="145">\r
-        <size>84</size>\r
+        <size>86</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-optional-31.cs">\r
+    <type name="Test">\r
+      <method name="Int32 M(Boolean)" attrs="150">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Int32 M(System.String[])" attrs="150">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="gtest-partial-01.cs">\r
     <type name="B`1[U]">\r
       <method name="Void .ctor()" attrs="6278">\r
   <test name="test-279.cs">\r
     <type name="FlagsAttributeDemo">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>51</size>\r
+        <size>55</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="test-376.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>90</size>\r
+        <size>99</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
     </type>\r
     <type name="Test">\r
       <method name="Void Main()" attrs="150">\r
-        <size>72</size>\r
+        <size>76</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="test-453.cs">\r
     <type name="C">\r
       <method name="Void Main()" attrs="150">\r
-        <size>34</size>\r
+        <size>38</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
     </type>\r
     <type name="X">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>197</size>\r
+        <size>204</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="test-833.cs">\r
     <type name="MainClass">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>93</size>\r
+        <size>141</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-859.cs">\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>40</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-86.cs">\r
     <type name="T.T">\r
       <method name="Int32 method1(System.Type, Int32)" attrs="145">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-892.cs">\r
+    <type name="X">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>66</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-893.cs">\r
+    <type name="A">\r
+      <method name="Boolean TryAssign(Int32 ByRef)" attrs="150">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>48</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-894.cs">\r
+    <type name="A1Attribute">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A2Attribute">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-895.cs">\r
+    <type name="X">\r
+      <method name="Void Test(Int32, Int32 ByRef)" attrs="134">\r
+        <size>47</size>\r
+      </method>\r
+      <method name="Int32 Foo(System.Object)" attrs="129">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-896.cs">\r
+    <type name="Program">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-9.cs">\r
     <type name="X">\r
       <method name="Int32 Main(System.String[])" attrs="150">\r
     </type>\r
     <type name="Tester+&lt;CallTest_4&gt;c__async15">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>234</size>\r
+        <size>240</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;CallTest_5&gt;c__async16">\r
         <size>348</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewInitTest_1&gt;c__async30">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>1026</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewInitTest_2&gt;c__async31">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>739</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_1&gt;c__async32">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>240</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_2&gt;c__async33">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>355</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_3&gt;c__async34">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>246</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_4&gt;c__async35">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>427</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_5&gt;c__async36">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>264</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_6&gt;c__async37">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>266</size>\r
-      </method>\r
-    </type>\r
     <type name="Tester">\r
       <method name="Tester &lt;CastTest_2&gt;m__4()" attrs="129">\r
         <size>9</size>\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewInitTest_1&gt;c__async30">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__4()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__5()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewInitTest_2&gt;c__async31">\r
-      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
-      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_1&gt;c__async32">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_2&gt;c__async33">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_3&gt;c__async34">\r
-      <method name="Byte &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_4&gt;c__async35">\r
-      <method name="UInt16 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="UInt16 &lt;&gt;m__1()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_5&gt;c__async36">\r
-      <method name="S &lt;&gt;m__0()" attrs="145">\r
-        <size>25</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_6&gt;c__async37">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
     <type name="Tester">\r
       <method name="System.Threading.Tasks.Task`1[System.Boolean] NewArrayInitTest_7()" attrs="129">\r
         <size>33</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_7&gt;c__async38">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>299</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;PropertyTest_1&gt;c__async39">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>222</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;PropertyTest_2&gt;c__async3A">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>295</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;PropertyTest_3&gt;c__async3B">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>645</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;StringConcatTest_1&gt;c__async3C">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>455</size>\r
-      </method>\r
-      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
-      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
-      <method name="System.String &lt;&gt;m__2()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;UnaryTest_1&gt;c__async3D">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>233</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;UnaryTest_2&gt;c__async3E">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>339</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;UnaryTest_3&gt;c__async3F">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>372</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;VariableInitializer_1&gt;c__async40">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>348</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;ArrayAccessTest_5&gt;c__async4+&lt;ArrayAccessTest_5&gt;c__AnonStorey41">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;BinaryTest_2&gt;c__asyncD+&lt;BinaryTest_2&gt;c__AnonStorey42">\r
-      <method name="Boolean &lt;&gt;m__0()" attrs="131">\r
-        <size>24</size>\r
-      </method>\r
-      <method name="Boolean &lt;&gt;m__1()" attrs="131">\r
-        <size>24</size>\r
-      </method>\r
-      <method name="Boolean &lt;&gt;m__2()" attrs="131">\r
-        <size>24</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;CallTest_5&gt;c__async16+&lt;CallTest_5&gt;c__AnonStorey43">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;EventInvoke_1&gt;c__async20+&lt;EventInvoke_1&gt;c__AnonStorey44">\r
-      <method name="System.Action &lt;&gt;m__0()" attrs="131">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;IndexerTest_3&gt;c__async24+&lt;IndexerTest_3&gt;c__AnonStorey45">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;IndexerTest_4&gt;c__async25+&lt;IndexerTest_4&gt;c__AnonStorey46">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;IndexerTest_5&gt;c__async26+&lt;IndexerTest_5&gt;c__AnonStorey47">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;IndexerTest_7&gt;c__async28+&lt;IndexerTest_7&gt;c__AnonStorey48">\r
-      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;UnaryTest_2&gt;c__async3E+&lt;UnaryTest_2&gt;c__AnonStorey49">\r
-      <method name="System.Nullable`1[System.Int16] &lt;&gt;m__0()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
     <type name="Base">\r
       <method name="Void CallRefParams(Int32 ByRef, Int32[])" attrs="148">\r
         <size>5</size>\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewInitTest_1&gt;c__async30">\r
+    <type name="Tester">\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] NewDelegate_1()" attrs="129">\r
+        <size>33</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Func`1[System.Int32]] NewDelegate_1_0()" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;NewDelegate_1&gt;c__async30">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>212</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewInitTest_2&gt;c__async31">\r
+    <type name="Tester+&lt;NewDelegate_1_0&gt;c__async31">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>226</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_1&gt;c__async32">\r
+    <type name="Tester+&lt;NewInitTest_1&gt;c__async32">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>1026</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__4()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__5()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_2&gt;c__async33">\r
+    <type name="Tester+&lt;NewInitTest_2&gt;c__async33">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>739</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_3&gt;c__async34">\r
+    <type name="Tester+&lt;NewArrayInitTest_1&gt;c__async34">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>240</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_4&gt;c__async35">\r
+    <type name="Tester+&lt;NewArrayInitTest_2&gt;c__async35">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>355</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_3&gt;c__async36">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>246</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Byte &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_4&gt;c__async37">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>427</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="UInt16 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="UInt16 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_5&gt;c__async36">\r
+    <type name="Tester+&lt;NewArrayInitTest_5&gt;c__async38">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>264</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="S &lt;&gt;m__0()" attrs="145">\r
+        <size>25</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_6&gt;c__async37">\r
+    <type name="Tester+&lt;NewArrayInitTest_6&gt;c__async39">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>266</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_7&gt;c__async38">\r
+    <type name="Tester+&lt;NewArrayInitTest_7&gt;c__async3A">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>299</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;PropertyTest_1&gt;c__async39">\r
+    <type name="Tester+&lt;PropertyTest_1&gt;c__async3B">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>222</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;PropertyTest_2&gt;c__async3A">\r
+    <type name="Tester+&lt;PropertyTest_2&gt;c__async3C">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>295</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;PropertyTest_3&gt;c__async3B">\r
+    <type name="Tester+&lt;PropertyTest_3&gt;c__async3D">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>645</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;StringConcatTest_1&gt;c__async3C">\r
+    <type name="Tester+&lt;StringConcatTest_1&gt;c__async3E">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>455</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="System.String &lt;&gt;m__2()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;UnaryTest_1&gt;c__async3D">\r
+    <type name="Tester+&lt;UnaryTest_1&gt;c__async3F">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>233</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;UnaryTest_2&gt;c__async3E">\r
+    <type name="Tester+&lt;UnaryTest_2&gt;c__async40">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>339</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;UnaryTest_3&gt;c__async3F">\r
+    <type name="Tester+&lt;UnaryTest_3&gt;c__async41">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>372</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;VariableInitializer_1&gt;c__async40">\r
+    <type name="Tester+&lt;VariableInitializer_1&gt;c__async42">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>348</size>\r
+      </method>\r
       <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ArrayAccessTest_5&gt;c__async4+&lt;ArrayAccessTest_5&gt;c__AnonStorey43">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;BinaryTest_2&gt;c__asyncD+&lt;BinaryTest_2&gt;c__AnonStorey44">\r
+      <method name="Boolean &lt;&gt;m__0()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+      <method name="Boolean &lt;&gt;m__1()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+      <method name="Boolean &lt;&gt;m__2()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;CallTest_5&gt;c__async16+&lt;CallTest_5&gt;c__AnonStorey45">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;EventInvoke_1&gt;c__async20+&lt;EventInvoke_1&gt;c__AnonStorey46">\r
+      <method name="System.Action &lt;&gt;m__0()" attrs="131">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__1()" attrs="131">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_3&gt;c__async24+&lt;IndexerTest_3&gt;c__AnonStorey47">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_4&gt;c__async25+&lt;IndexerTest_4&gt;c__AnonStorey48">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_5&gt;c__async26+&lt;IndexerTest_5&gt;c__AnonStorey49">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_7&gt;c__async28+&lt;IndexerTest_7&gt;c__AnonStorey4A">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;UnaryTest_2&gt;c__async40+&lt;UnaryTest_2&gt;c__AnonStorey4B">\r
+      <method name="System.Nullable`1[System.Int16] &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-async-14.cs">\r
         <size>33</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>82</size>\r
+        <size>107</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
     </type>\r
     <type name="Tester+&lt;NewInitTestGen&gt;c__async0`1[T]">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>306</size>\r
+        <size>295</size>\r
       </method>\r
       <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>10</size>\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="S2">\r
+      <method name="Void Add(Int32)" attrs="134">\r
+        <size>36</size>\r
+      </method>\r
+      <method name="System.Collections.IEnumerator GetEnumerator()" attrs="486">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester">\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] NewInitCol()" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;NewInitCol&gt;c__async1">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>370</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-16.cs">\r
     <type name="Base">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-async-63.cs">\r
+    <type name="C">\r
+      <method name="System.Threading.Tasks.Task TestSingleAwait(Boolean)" attrs="150">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task TestDoubleAwait(Boolean)" attrs="150">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task Call()" attrs="145">\r
+        <size>48</size>\r
+      </method>\r
+      <method name="Void HH()" attrs="129">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>152</size>\r
+      </method>\r
+      <method name="Boolean &lt;Call&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestSingleAwait&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>274</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestDoubleAwait&gt;c__async1">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>419</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-64.cs">\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="T Invoke[T](System.Func`1[System.Threading.Tasks.Task`1[T]])" attrs="145">\r
+        <size>18</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] &lt;Main&gt;m__0()" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Main&gt;c__async2">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>167</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-65.cs">\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>161</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestRethrow&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>363</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="System.Threading.Tasks.Task TestRethrow(System.Exception)" attrs="150">\r
+        <size>41</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-66.cs">\r
+    <type name="TestFinally">\r
+      <method name="System.Threading.Tasks.Task Test(Boolean)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="145">\r
+        <size>95</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestFinally+&lt;Test&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>277</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-67.cs">\r
+    <type name="Test">\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32[]] Run()" attrs="150">\r
+        <size>33</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>53</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Run&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>239</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-69.cs">\r
+    <type name="Test">\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] YieldValue(Int32)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] TestFinallyWithReturn(Int32)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task TestFinallyWithReturnNoValue(Int32)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] TestFinallyWithGoto(Int32)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] TestFinallyWithGotoAndReturn(Int32)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>390</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;YieldValue&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>172</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;TestFinallyWithReturn&gt;c__async1">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>381</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;TestFinallyWithReturnNoValue&gt;c__async2">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>321</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;TestFinallyWithGoto&gt;c__async3">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>362</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;TestFinallyWithGotoAndReturn&gt;c__async4">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>411</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-cls-00.cs">\r
     <type name="CLSCLass_6">\r
       <method name="Void add_Disposed(Delegate)" attrs="2182">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-ex-filter-03.cs">\r
+    <type name="X">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>52</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-ex-filter-04.cs">\r
+    <type name="X">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>253</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] Test(Int32, System.Exception)" attrs="145">\r
+        <size>49</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] TestGeneric(Int32)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .cctor()" attrs="6289">\r
+        <size>11</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Test&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>281</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;TestGeneric&gt;c__async1">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>250</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-externalias-01.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
index 30b7779f586d2534a89a3f9e72b4cb7c64cd0bc1..430f2c2c8851e6cc7a0d08e6c6ea532e8bc87ae1 100644 (file)
@@ -290,12 +290,28 @@ namespace Mono.Linker.Steps {
                        if (CheckProcessed (assembly))
                                return;
 
+                       ProcessModule (assembly);
+
                        MarkCustomAttributes (assembly);
 
                        foreach (ModuleDefinition module in assembly.Modules)
                                MarkCustomAttributes (module);
                }
 
+               void ProcessModule (AssemblyDefinition assembly)
+               {
+                       // Pre-mark <Module> if there is any methods as they need to be executed 
+                       // at assembly load time
+                       foreach (TypeDefinition type in assembly.MainModule.Types)
+                       {
+                               if (type.Name == "<Module>" && type.HasMethods)
+                               {
+                                       MarkType (type);
+                                       break;
+                               }
+                       }
+               }
+
                protected void MarkField (FieldReference reference)
                {
 //                     if (IgnoreScope (reference.DeclaringType.Scope))
index 8d97f8dc1504b62d710c91111c05e999ed479cab..c4d71083cd531805cb93116ea521ac956623fff0 100644 (file)
@@ -217,6 +217,14 @@ namespace Mono.Linker {
                        case "mscorlib":
                        case "Accessibility":
                        case "Mono.Security":
+                               // WPF
+                       case "PresentationFramework":
+                       case "PresentationCore":
+                       case "WindowsBase":
+                       case "UIAutomationProvider":
+                       case "UIAutomationTypes":
+                       case "PresentationUI":
+                       case "ReachFramework":
                                return true;
                        default:
                                return name.Name.StartsWith ("System")
index 3f9965eeb41d52c2a9dc56fc9d25f0e41432b74d..bc70334412cd2a7ecbca9264ad4598d339d81342 100644 (file)
@@ -159,10 +159,10 @@ namespace Mono.XBuild.CommandLine {
                                var projectInstances = new List<ProjectInstance> ();
                                if (string.Equals (Path.GetExtension (projectFile), ".sln", StringComparison.OrdinalIgnoreCase)) {
                                        var parser = new SolutionParser ();
-                                       var root = ProjectRootElement.Create ();
+                                       var root = ProjectRootElement.Create (project_collection);
+                                       root.FullPath = projectFile;
                                        parser.ParseSolution (projectFile, project_collection, root, LogWarning);
-                                       foreach (var p in project_collection.LoadedProjects)
-                                               projectInstances.Add (p.CreateProjectInstance ());
+                                       projectInstances.Add (new Project (root, parameters.Properties, parameters.ToolsVersion, project_collection).CreateProjectInstance ());
                                } else {
                                        project = ProjectRootElement.Create (XmlReader.Create (projectFile, settings), project_collection);
                                        project.FullPath = projectFile;
@@ -170,7 +170,7 @@ namespace Mono.XBuild.CommandLine {
                                        projectInstances.Add (pi);
                                }
                                foreach (var projectInstance in projectInstances) {
-                                       var targets = parameters.Targets.Length == 0 ? projectInstance.DefaultTargets.ToArray () : parameters.Targets;
+                                       var targets = parameters.Targets.Length > 0 ? parameters.Targets : projectInstance.DefaultTargets.ToArray ();
                                        result = projectInstance.Build (targets, parameters.Loggers.Count > 0 ? parameters.Loggers : project_collection.Loggers);
                                        if (!result)
                                                break;
index 069a78eed6b4015b5bb5e70d1aeaa1f12ee30c54..61339b1a5cc54c0208bfdce507a971cbec418648 100644 (file)
@@ -7,6 +7,8 @@ BUILD_FRAMEWORK = Microsoft.Build.Framework.dll
 BUILD_NEW_ENGINE = Microsoft.Build.dll
 INSTALL_FRAMEWORK_VERSION = $(FRAMEWORK_VERSION)
 
+include ../xbuild/xbuild.make
+
 ifeq (3.5, $(FRAMEWORK_VERSION))
 NAME_SUFFIX = .v3.5
 ASSEMBLY_VERSION = 3.5.0.0
@@ -30,3 +32,13 @@ XBUILD_FRAMEWORKS_DIR=$(mono_libdir)/mono/xbuild-frameworks/.NETFramework/
 REDISTLIST_DIR=$(XBUILD_FRAMEWORKS_DIR)/v$(FRAMEWORK_VERSION)/RedistList
 #include $(XBUILD_DIR)/xbuild_targets.make
 
+install-local: install-extras
+
+install-extras: install-bin-data
+
+install-bin-data:
+       $(INSTALL_DATA) data/msbuild.rsp $(DESTDIR)$(XBUILD_BIN_DIR)
+
+EXTRA_DISTFILES = \
+       data/msbuild.rsp
+
index effba4bb8b682cd77853358cb10232713f28cbe7..7420a73f69a121b0e0c2aa0ac80cb8feea843694 100644 (file)
@@ -123,7 +123,11 @@ namespace Mono.XBuild.CommandLine {
                        StreamReader reader = new StreamReader (file);
                        string slnVersion = GetSlnFileVersion (reader);
                        if (slnVersion == "12.00")
+#if XBUILD_12
                                projects.DefaultToolsVersion = "12.0";
+#else
+                               projects.DefaultToolsVersion = "4.0";
+#endif
                        else if (slnVersion == "11.00")
                                projects.DefaultToolsVersion = "4.0";
                        else if (slnVersion == "10.00")
@@ -206,7 +210,7 @@ namespace Mono.XBuild.CommandLine {
 
                                if (!File.Exists (filename)) {
                                        RaiseWarning (0, String.Format ("Project file {0} referenced in the solution file, " +
-                                                               "not found. Ignoring.", filename));
+                                                               " not found. Ignoring.", filename));
                                        continue;
                                }
 
diff --git a/mcs/tools/msbuild/data/msbuild.rsp b/mcs/tools/msbuild/data/msbuild.rsp
new file mode 100644 (file)
index 0000000..9b9ce70
--- /dev/null
@@ -0,0 +1,3 @@
+# xbuild command line options specified here will be used
+# by xbuild on every build, unless /noautoresponse is passed
+# on the command line.
index 0936512b577b9fd972989bdb4e2840f0593808f7..11b40d66a9b51c6c6696def143aea14a91bf6e79 100644 (file)
                directories for mscorlib.dll by constructing a filtered item set, and assume it only has
                one item.
                -->
-               <ItemGroup>
+               <ItemGroup Condition="'$(MonoUseMicrosoftBuildDll)' != 'True'">
                        <_ExplicitReference Include="@(_TargetFrameworkDirectories->'%(FullPath)\mscorlib.dll')" Condition="Exists('%(FullPath)\mscorlib.dll')">
                                <Private>false</Private>
                        </_ExplicitReference>
                </ItemGroup>
+               <PropertyGroup Condition="'$(MonoUseMicrosoftBuildDll)' == 'True'">
+                       <_ExplicitMSCorlibPath>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries ('$(TargetFrameworkIdentifier)', '$(TargetFrameworkVersion)', '$(TargetFrameworkProfile)'))\mscorlib.dll</_ExplicitMSCorlibPath>
+               </PropertyGroup>
+               <ItemGroup Condition="'$(MonoUseMicrosoftBuildDll)' == 'True'">
+                       <_ExplicitReference Include="@(_TargetFrameworkDirectories->'%(FullPath)\mscorlib.dll')" Condition="Exists('%(FullPath)\mscorlib.dll')">
+                               <Private>false</Private>
+                       </_ExplicitReference>
+               </ItemGroup>
+               <ItemGroup Condition="'$(MonoUseMicrosoftBuildDll)' == 'True'">
+                       <_ExplicitReference Include="$(_ExplicitMSCorlibPath)" Condition="Exists('$(_ExplicitMSCorlibPath)')">
+                               <Private>false</Private>
+                       </_ExplicitReference>
+               </ItemGroup>
        </Target>
 
        <Target
index 0936512b577b9fd972989bdb4e2840f0593808f7..11b40d66a9b51c6c6696def143aea14a91bf6e79 100644 (file)
                directories for mscorlib.dll by constructing a filtered item set, and assume it only has
                one item.
                -->
-               <ItemGroup>
+               <ItemGroup Condition="'$(MonoUseMicrosoftBuildDll)' != 'True'">
                        <_ExplicitReference Include="@(_TargetFrameworkDirectories->'%(FullPath)\mscorlib.dll')" Condition="Exists('%(FullPath)\mscorlib.dll')">
                                <Private>false</Private>
                        </_ExplicitReference>
                </ItemGroup>
+               <PropertyGroup Condition="'$(MonoUseMicrosoftBuildDll)' == 'True'">
+                       <_ExplicitMSCorlibPath>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries ('$(TargetFrameworkIdentifier)', '$(TargetFrameworkVersion)', '$(TargetFrameworkProfile)'))\mscorlib.dll</_ExplicitMSCorlibPath>
+               </PropertyGroup>
+               <ItemGroup Condition="'$(MonoUseMicrosoftBuildDll)' == 'True'">
+                       <_ExplicitReference Include="@(_TargetFrameworkDirectories->'%(FullPath)\mscorlib.dll')" Condition="Exists('%(FullPath)\mscorlib.dll')">
+                               <Private>false</Private>
+                       </_ExplicitReference>
+               </ItemGroup>
+               <ItemGroup Condition="'$(MonoUseMicrosoftBuildDll)' == 'True'">
+                       <_ExplicitReference Include="$(_ExplicitMSCorlibPath)" Condition="Exists('$(_ExplicitMSCorlibPath)')">
+                               <Private>false</Private>
+                       </_ExplicitReference>
+               </ItemGroup>
        </Target>
 
        <Target
index 3677b2d95b1b8f0f91b0d4517e71590e98bd901a..47e656422ee35c7ad5ab68b519ae43ef1e05ba63 100644 (file)
@@ -6,6 +6,7 @@
 #define S390X_H
 #include <glib.h>
 #include <assert.h>
+#include <limits.h>
 
 #define FLOAT_REGS     2       /* No. float registers for parms    */
 #define GENERAL_REGS   5       /* No. general registers for parms  */
@@ -136,13 +137,16 @@ typedef enum {
        s390_fpc = 256,
 } S390SpecialRegister;
 
-#define s390_is_imm16(val)             ((glong)val >= (glong)-(1<<15) && \
-                                        (glong)val <= (glong)((1<<15)-1))
-#define s390_is_uimm16(val)            ((glong)val >= 0 && (glong)val <= 65535)
+#define s390_is_imm16(val)             ((glong)val >= (glong) SHRT_MIN && \
+                                        (glong)val <= (glong) SHRT_MAX)
+#define s390_is_imm32(val)             ((glong)val >= (glong) INT_MIN && \
+                                        (glong)val <= (glong) INT_MAX)
+#define s390_is_uimm16(val)            ((glong)val >= 0 && (glong)val <= (glong) USHRT_MAX)
+#define s390_is_uimm32(val)            ((glong)val >= 0 && (glong)val <= (glong) UINT_MAX)
 #define s390_is_uimm20(val)            ((glong)val >= 0 && (glong)val <= 1048575)
 #define s390_is_imm20(val)             ((glong)val >= -524288 && (glong)val <= 524287)
-#define s390_is_imm12(val)             ((glong)val >= (glong)-(1<<11) && \
-                                        (glong)val <= (glong)((1<<11)-1))
+#define s390_is_imm12(val)             ((glong)val >= (glong)-4096 && \
+                                        (glong)val <= (glong)4095)
 #define s390_is_uimm12(val)            ((glong)val >= 0 && (glong)val <= 4095)
 
 #define STK_BASE                       s390_r15
@@ -349,7 +353,36 @@ typedef struct {
        short   i2;
        char    xx;
        char    op2;
-} RIE_Format;
+} RIE_Format_1;
+
+typedef struct {
+       char    op1;
+       char    r1 : 4;
+       char    r3 : 4;
+       short   i2;
+       char    m2 : 4;
+       char    xx : 4;
+       char    op2;
+} RIE_Format_2;
+
+typedef struct {
+       char    op1;
+       char    r1 : 4;
+       char    r3 : 4;
+       short   d;
+       char    i;
+       char    op2;
+} RIE_Format_3;
+
+typedef struct {
+       char    op1;
+       char    r1 : 4;
+       char    yy : 4;
+       short   i2;
+       char    m3 : 4;
+       char    xx : 4;
+       char    op2;
+} RIE_Format_4;
 
 typedef struct {
        char    op1;
@@ -427,12 +460,22 @@ typedef struct {
 
 typedef struct {
        short   op;
-       char    b1 : 4;
+       short   tb1 : 4;
        short   d1 : 12;
-       char    b2 : 4;
+       short   b2 : 4;
        short   d2 : 12;
 } __attribute__ ((packed)) SSE_Format;
 
+typedef struct {
+       short   op;
+       char    r3 : 4;
+       char    o2 : 4;
+       short   b1 : 4;
+       short   d1 : 12;
+       short   b2 : 4;
+       short   d2 : 12;
+} __attribute__ ((packed)) SSF_Format;
+
 #define s390_emit16(c, x) do                   \
 {                                              \
        *((guint16 *) c) = (guint16) x;         \
@@ -509,12 +552,33 @@ typedef struct {
 
 #define S390_RI(c,opc,g1,m2)           s390_emit32(c, ((opc >> 4) << 24 | (g1) << 20 | (opc & 0x0f) << 16 | (m2 & 0xffff)))
 
-#define S390_RIE(c,opc,g1,g3,m2) do                            \
+#define S390_RIE_1(c,opc,g1,g3,m2) do                          \
 {                                                              \
        s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
        s390_emit32(c, ((m2) << 16 | (opc & 0xff)));            \
 } while (0)
 
+#define S390_RIE_2(c,opc,g1,g2,m3,v) do                                \
+{                                                              \
+       s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
+       s390_emit16(c, (v));                                    \
+       s390_emit16(c, ((m2) << 12 | (opc & 0xff)));            \
+} while (0)
+
+#define S390_RIE_3(c,opc,g1,i,m3,d) do                         \
+{                                                              \
+       s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | m3));      \
+       s390_emit16(c, (d));                                    \
+       s390_emit16(c, ((i) << 8 | (opc & 0xff)));              \
+} while (0)
+
+#define S390_RIE_4(c,opc,g1,i2,m3) do                          \
+{                                                              \
+       s390_emit16(c, ((opc & 0xff00) | (g1) << 4);            \
+       s390_emit16(c, (i2));                                   \
+       s390_emit16(c, ((m3) << 12 | (opc & 0xff)));            \
+} while (0)
+
 #define S390_RIL_1(c,opc,g1,m2) do                                     \
 {                                                                      \
        s390_emit16(c, ((opc >> 4) << 8 | (g1) << 4 | (opc & 0xf)));    \
@@ -527,6 +591,20 @@ typedef struct {
        s390_emit32(c, m2);                                             \
 } while (0)
 
+#define S390_RIS(c,opc,r,i,m3,b,d) do                          \
+{                                                              \
+       s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2));   \
+       s390_emit16(c, ((b) << 12) | (d));                      \
+       s390_emit16(c, ((i) << 4) | ((opc) & 0xff));            \
+}
+
+#define S390_RRS(c,opc,r1,r2,m3,b,d) do                                \
+{                                                              \
+       s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2));   \
+       s390_emit16(c, ((b) << 12) | (d));                      \
+       s390_emit16(c, ((m3) << 12) | ((opc) & 0xff));          \
+}
+
 #define S390_SI(c,opc,s1,p1,m2)                s390_emit32(c, (opc << 24 | (m2) << 16 | (s1) << 12 | ((p1) & 0xfff)));
 
 #define S390_SIY(c,opc,s1,p1,m2) do                            \
@@ -573,23 +651,60 @@ typedef struct {
        s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));  \
 } while (0)
 
+#define S390_SSF(c,opc,r3,s1,p1,s2,p2) do                              \
+{                                                                      \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((r3) << 4) |          \
+                       ((opc) & 0xf));                                 \
+       s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff)));                  \
+       s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));                  \
+} while (0)
+
 #define s390_a(c, r, x, b, d)          S390_RX(c, 0x5a, r, x, b, d)
 #define s390_adb(c, r, x, b, d)                S390_RXE(c, 0xed1a, r, x, b, d)
 #define s390_adbr(c, r1, r2)           S390_RRE(c, 0xb31a, r1, r2)
 #define s390_aebr(c, r1, r2)           S390_RRE(c, 0xb30a, r1, r2)
+#define s390_afi(c, r, v)              S390_RIL_1(c, 0xc29, r, v);
 #define s390_ag(c, r, x, b, d)         S390_RXY(c, 0xe308, r, x, b, d)
 #define s390_agf(c, r, x, b, d)                S390_RXY(c, 0xe318, r, x, b, d)
+#define s390_agfi(c, r, v)             S390_RIL_1(c, 0xc28, r, v)
+#define s390_afgr(c, r1, r2)           S390_RRE(c, 0xb918, r1, r2)
 #define s390_aghi(c, r, v)             S390_RI(c, 0xa7b, r, v)
+#define s390_aghik(c, r, v)            S390_RIE_1(c, 0xecd9, r, v)
 #define s390_agr(c, r1, r2)            S390_RRE(c, 0xb908, r1, r2)
+#define s390_agrk(c, r1, r2, r3)       S390_RRF_1(c, 0xb9e8, r1, r2, r3)
+#define s390_agsi(c, r, v)             S390_SIY(c, 0xeb7a, r v)
+#define s390_ahhhr(c, r1, r2, r3)      S390_RRF_1(c, 0xb9c8, r1, r2, r3)
+#define s390_ahhlr(c, r1, r2, r3)      S390_RRF_1(c, 0xb9d8, r1, r2, r3)
 #define s390_ahi(c, r, v)              S390_RI(c, 0xa7a, r, v)
+#define s390_ahik(c, r, v)             S390_RIE_1(c, 0xecd8, r, v)
+#define s390_ahy(c, r, x, b, d)                S390_RXY(c, 0xe37a, r, b, d)
+#define s390_aih(c, r, v)              S390_RIL_1(c, 0xcc8, r, v)
+#define s390_al(c, r, x, b, d)         S390_RX(c, 0x5e, r, x, b, d)
+#define s390_alc(c, r, x, b, d)                S390_RXY(c, 0xe398, r, x, b, d)
+#define s390_alcg(c, r, x, b, d)       S390_RXY(c, 0xe388, r, x, b, d)
 #define s390_alcgr(c, r1, r2)          S390_RRE(c, 0xb988, r1, r2)
 #define s390_alcr(c, r1, r2)           S390_RRE(c, 0xb998, r1, r2)
-#define s390_al(c, r, x, b, d)         S390_RX(c, 0x5e, r, x, b, d)
+#define s390_alfi(c, r, v)             S390_RIL_1(c, 0xc2b, r, v)
 #define s390_alg(c, r, x, b, d)                S390_RXY(c, 0xe30a, r, x, b, d)
 #define s390_algf(c, r, x, b, d)       S390_RXY(c, 0xe31a, r, x, b, d)
+#define s390_algfi(c, r, v)            S390_RIL_1(c, 0xc2a, r, v)
+#define s390_algfr(c, r1, r2)          S390_RRE(c, 0xb91a, r1, r2)
+#define s390_alghsik(c, r, v)          S390_RIE_1(c, 0xecd8, r, v)
 #define s390_algr(c, r1, r2)           S390_RRE(c, 0xb90a, r1, r2)
+#define s390_algsi(c, r, v)            S390_SIY(c, 0xeb7e, r, v)
+#define s390_alhhhr(c, r1, r2, r3)     S390_RRF_1(c, 0xb9ca, r1, r2, r3)
+#define s390_alhhlr(c, r1, r2, r3)     S390_RRF_1(c, 0xb9da, r1, r2, r3)
+#define s390_alhsik(c, r, v)           S390_RIE_1(c, 0xecda, r, v)
 #define s390_alr(c, r1, r2)            S390_RR(c, 0x1e, r1, r2)
+#define s390_alrk(c, r1, r2)           S390_RRF(c, 0xb9fa, r1, r2)
+#define s390_alsi(c, r, v)             S390_SIY(c, 0xeb6e, r, v)
+#define s390_alsih(c, r, v)            S390_RIL_1(c, 0xcca, r, v)
+#define s390_alsihn(c, r, v)           S390_RIL_1(c, 0xccb, r, v)
+#define s390_aly(c, r, x, b, d)                S390_RXY(c, 0xe35e, r, x, b, d)
 #define s390_ar(c, r1, r2)             S390_RR(c, 0x1a, r1, r2)
+#define s390_ark(c, r1, r2, r3)                S390_RRF_1(c, 0xb9f8, r1, r2, r3)
+#define s390_asi(c, r, v)              S390_SIY(c, 0xeb6a, r, v)
+#define s390_ay(c, r, x, b, d)         S390_RXY(c, 0xe35a, r, x, b, d)
 #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)
@@ -610,19 +725,46 @@ typedef struct {
 #define s390_cdsg(c, r1, r2, b, d)     S390_RSY_1(c, 0xeb3e, r1, r2, b, d)
 #define s390_cdsy(c, r1, r2, b, d)     S390_RSY_1(c, 0xeb31, r1, r2, b, d)
 #define s390_cebr(c, r1, r2)           S390_RRE(c, 0xb309, r1, r2)
+#define s390_cegbr(c, r1, r2)          S390_RRE(c, 0xb3a4, r1, r2)
 #define s390_cfdbr(c, r1, m, r2)       S390_RRF_2(c, 0xb399, r1, m, r2)
+#define s390_cfi(c, r, v)              S390_RIL_1(c, 0xc2d, r, v)
 #define s390_cgdbr(c, r1, m, r2)       S390_RRF_2(c, 0xb3a9, r1, m, r2)
 #define s390_cg(c, r, x, b, d)         S390_RXY(c, 0xe320, r, x, b, d)
+#define s390_cgfi(c, r, v)             S390_RIL_1(c, 0xc2c, r, v)
+#define s390_cgfrl(c, r, v)            S390_RIL_1(c, 0xc6c, r, v)
 #define s390_cghi(c, r, i)             S390_RI(c, 0xa7f, r, i)
+#define s390_cgib(c, r, i, m, b, d)    S390_RIS(c, 0xecfc, r, i, m, b, d)
+#define s390_cgij(c, r, i, m, d)       S390_RIE_3(c, 0xec7c, r, i, m, d)
+#define s390_cgit(c, r, i, m)          S390_RIE_4(c, 0xec70, r, i m);
 #define s390_cgr(c, r1, r2)            S390_RRE(c, 0xb920, r1, r2)
+#define s390_cgrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xece4, r1, r2, m3, b, d)
+#define s390_cgrj(c, r1, r2, m3, v)    S390_RIE_2(c, 0xec64, r1, r2, m3, v)
+#define s390_cgrl(c, r, v)             S390_RIL_1(c, 0xc68, r, v)
 #define s390_chi(c, r, i)              S390_RI(c, 0xa7e, r, i)
+#define s390_cib(c, r, i, m, b, d)     S390_RIS(c, 0xecfe, r, i, m, b, d)
+#define s390_cij(c, r, i, m, d)                S390_RIE_3(c, 0xec7e, r, i, m, d)
+#define s390_cit(c, r, i, m)           S390_RIE_4(c, 0xec72, r, i m);
 #define s390_cl(c, r, x, b, d)         S390_RX(c, 0x55, r, x, b, d)
 #define s390_clg(c, r, x, b, d)                S390_RXY(c, 0xe321, r, x, b, d)
+#define s390_clgib(c, r, i, m, b, d)   S390_RIS(c, 0xecfd, r, i, m, b, d)
+#define s390_clgij(c, r, i, b)         S390_RIE_3(c, 0xec7d, r, i, m, d)
 #define s390_clgr(c, r1, r2)           S390_RRE(c, 0xb921, r1, r2)
+#define s390_clgrj(c, r1, r2, m, v)    S390_RIE_2(c, 0xec65, r1, r2, m, v)
+#define s390_clgrb(c, r1, r2, m3, b, d)        S390_RRS(c, 0xece5, r1, r2, m3, b, d)
+#define s390_clib(c, r, i, m, b, d)    S390_RIS(c, 0xecff, r, i, m, b, d)
+#define s390_clij(c, r, i, b)          S390_RIE_3(c, 0xec7f, r, i, m, d)
 #define s390_clr(c, r1, r2)            S390_RR(c, 0x15, r1, r2)
+#define s390_clrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xecf7, r1, r2, m3, b, d)
+#define s390_clrj(c, r1, r2, m, v)     S390_RIE_2(c, 0xec77, r1, r2, m, v)
 #define s390_cr(c, r1, r2)             S390_RR(c, 0x19, r1, r2)
+#define s390_crb(c, r1, r2, m3, b, d)  S390_RRS(c, 0xecf6, r1, r2, m3, b, d)
+#define s390_crj(c, r1, r2, m3, v)     S390_RIE_2(c, 0xec76, r1, r2, m3, v)
+#define s390_crl(c, r, v)              S390_RIL_1(c, 0xc6d, r, v)
+#define s390_crt(c, r1, r2, m3)                S390_RRF_2(c, 0xb972, r1, r2, m3);
+#define s390_cgrt(c, r1, r2, m3)       S390_RRF_2(c, 0xb960, r1, r2, m3);
 #define s390_cs(c, r1, r2, b, d)       S390_RX(c, 0xba, r1, r2, b, d)
 #define s390_csg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb30, r1, r2, b, d)
+#define s390_csst(c, d1, b1, d2, b2, r)        S390_SSF(c, 0xc82, b1, d1, b2, d2, r)
 #define s390_csy(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb14, r1, r2, b, d)
 #define s390_ddbr(c, r1, r2)           S390_RRE(c, 0xb31d, r1, r2)
 #define s390_debr(c, r1, r2)           S390_RRE(c, 0xb30d, r1, r2)
@@ -637,6 +779,12 @@ typedef struct {
 #define s390_icm(c, r, m, b, d)                S390_RX(c, 0xbf, r, m, b, d)
 #define s390_icmy(c, r, x, b, d)       S390_RXY(c, 0xeb81, r, x, b, d)
 #define s390_icy(c, r, x, b, d)                S390_RXY(c, 0xe373, r, x, b, d)
+#define s390_iihf(c, r, v)             S390_RIL_1(c, 0xc08, r, v)
+#define s390_iihh(c, r, v)             S390_RI(c, 0xa50, r, v)
+#define s390_iihl(c, r, v)             S390_RI(c, 0xa51, r, v)
+#define s390_iilf(c, r, v)             S390_RIL_1(c, 0xc09, r, v)
+#define s390_iilh(c, r, v)             S390_RI(c, 0xa52, r, v)
+#define s390_iill(c, r, v)             S390_RI(c, 0xa53, r, v)
 #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_brcl(c, m, d)
@@ -690,23 +838,28 @@ typedef struct {
 #define s390_ldy(c, r, x, b, d)                S390_RXY(c, 0xed65, r, x, b, d)
 #define s390_ldeb(c, r, x, b, d)       S390_RXE(c, 0xed04, r, x, b, d)
 #define s390_ldebr(c, r1, r2)          S390_RRE(c, 0xb304, r1, r2)
+#define s390_ldgr(c, r1, r2)           S390_RRE(c, 0xb3c1, r1, r2)
 #define s390_ldr(c, r1, r2)            S390_RR(c, 0x28, r1, r2)
 #define s390_le(c, f, x, b, d)         S390_RX(c, 0x78, f, x, b, d)
 #define s390_ledbr(c, r1, r2)          S390_RRE(c, 0xb344, r1, r2)
 #define s390_ler(c, r1, r2)            S390_RR(c, 0x38, r1, r2)
 #define s390_ley(c, r, x, b, d)                S390_RXY(c, 0xed64, r, x, b, d)
+#define s390_lg(c, r, x, b, d)         S390_RXY(c, 0xe304, r, x, b, d)
 #define s390_lgb(c, r, x, b, d)                S390_RXY(c, 0xe377, r, x, b, d)
 #define s390_lgbr(c, r1, r2)           S390_RRE(c, 0xb906, r1, r2)
-#define s390_lg(c, r, x, b, d)         S390_RXY(c, 0xe304, r, x, b, d)
+#define s390_lgdr(c, r1, r2)           S390_RRE(c, 0xb3cd, r1, r2)
 #define s390_lgf(c, r, x, b, d)                S390_RXY(c, 0xe314, r, x, b, d)
+#define s390_lgfi(c, r, v)             S390_RIL_1(c, 0xc01, r, v)
+#define s390_lgfrl(c, r1, d)           S390_RIL_1(c, 0xc4c, r1, d)
 #define s390_lgfr(c, r1, r2)           S390_RRE(c, 0xb914, r1, r2)
 #define s390_lgh(c, r, x, b, d)                S390_RXY(c, 0xe315, r, x, b, d)
 #define s390_lghi(c, r, v)             S390_RI(c, 0xa79, r, v)
+#define s390_lghr(c, r1, r2)           S390_RRE(c, 0xb907, r1, r2)
 #define s390_lgr(c, r1, r2)            S390_RRE(c, 0xb904, r1, r2)
+#define s390_lgrl(c, r1, d)            S390_RIL_1(c, 0xc48, r1, d)
 #define s390_lh(c, r, x, b, d)         S390_RX(c, 0x48, r, x, b, d)
 #define s390_lhr(c, r1, r2)            S390_RRE(c, 0xb927, r1, r2)
 #define s390_lhg(c, r, x, b, d)                S390_RXY(c, 0xe315, r, x, b, d)
-#define s390_lghr(c, r1, r2)           S390_RRE(c, 0xb907, r1, r2)
 #define s390_lhi(c, r, v)              S390_RI(c, 0xa78, r, v)
 #define s390_lhy(c, r, x, b, d)                S390_RXY(c, 0xe378, r, x, b, d)
 #define s390_llcr(c, r1, r2)           S390_RRE(c, 0xb994, r1, r2)
@@ -717,6 +870,12 @@ typedef struct {
 #define s390_llgh(c, r, x, b, d)       S390_RXY(c, 0xe391, r, x, b, d)
 #define s390_llghr(c, r1, r2)          S390_RRE(c, 0xb985, r1, r2)
 #define s390_llhr(c, r1, r2)           S390_RRE(c, 0xb995, r1, r2)
+#define s390_llihf(c, r, v)            S390_RIL_1(c, 0xc0e, r, v)
+#define s390_llihh(c, r, v)            S390_RI(c, 0xa5c, r, v)
+#define s390_llihl(c, r, v)            S390_RI(c, 0xa5d, r, v)
+#define s390_llilf(c, r, v)            S390_RIL_1(c, 0xc0f, r, v)
+#define s390_llilh(c, r, v)            S390_RI(c, 0xa5e, r, v)
+#define s390_llill(c, r, v)            S390_RI(c, 0xa5f, r, v)
 #define s390_lm(c, r1, r2, b, d)       S390_RS_1(c, 0x98, r1, r2, b, d)
 #define s390_lmg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb04, r1, r2, b, d)
 #define s390_lndbr(c, r1, r2)          S390_RRE(c, 0xb311, r1, r2)
@@ -726,6 +885,7 @@ typedef struct {
 #define s390_lpgr(c, r1, r2)           S390_RRE(c, 0xb900, r1, r2)
 #define s390_lpr(c, r1, r2)            S390_RR(c, 0x10, r1, r2)
 #define s390_lr(c, r1, r2)             S390_RR(c, 0x18, r1, r2)
+#define s390_lrl(c, r1, d)             S390_RIL_1(c, 0xc4d, r1, d)
 #define s390_ltgfr(c, r1, r2)          S390_RRE(c, 0xb912, r1, r2)
 #define s390_ltgr(c, r1, r2)           S390_RRE(c, 0xb902, r1, r2)
 #define s390_ltr(c, r1, r2)            S390_RR(c, 0x12, r1, r2)
@@ -734,24 +894,44 @@ typedef struct {
 #define s390_m(c, r, x, b, d)          S390_RX(c, 0x5c, r, x, b, d)
 #define s390_mdbr(c, r1, r2)           S390_RRE(c, 0xb31c, r1, r2)
 #define s390_meebr(c, r1, r2)          S390_RRE(c, 0xb317, r1, r2)
+#define s390_mfy(c, r, x, b, d)                S390_RXY(c, 0xe35c, r, x, b, d)
 #define s390_mlgr(c, r1, r2)           S390_RRE(c, 0xb986, r1, r2)
 #define s390_mlr(c, r1, r2)            S390_RRE(c, 0xb996, r1, r2)
 #define s390_mr(c, r1, r2)             S390_RR(c, 0x1c, r1, r2)
 #define s390_ms(c, r, x, b, d)         S390_RX(c, 0x71, r, x, b, d)
+#define s390_msi(c, r, v)              S390_RIL_1(c, 0xc21, r, v)
 #define s390_msgfr(c, r1, r2)          S390_RRE(c, 0xb91c, r1, r2)
+#define s390_msgi(c, r, v)             S390_RIL_1(c, 0xc20, r, v)
 #define s390_msgr(c, r1, r2)           S390_RRE(c, 0xb90c, r1, r2)
 #define s390_msr(c, r1, r2)            S390_RRE(c, 0xb252, r1, r2)
 #define s390_mvc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
 #define s390_mvcl(c, r1, r2)           S390_RR(c, 0x0e, r1, r2)
 #define s390_mvcle(c, r1, r3, d2, b2)  S390_RS_1(c, 0xa8, r1, r3, d2, b2)
 #define s390_n(c, r, x, b, d)          S390_RX(c, 0x54, r, x, b, d)
+#define s390_nc(c, l, b1, d1, b2, d2)  S390_SS_1(c, 0xd4, l, b1, d1, b2, d2)
 #define s390_ng(c, r, x, b, d)         S390_RXY(c, 0xe380, r, x, b, d)
 #define s390_ngr(c, r1, r2)            S390_RRE(c, 0xb980, r1, r2)
+#define s390_ngrk(c, r1, r2, r3)       S390_RRF_1(c, 0xb9e4, r1, r2, r3)
+#define s390_ni(c, b, d, v)            S390_SI(c, 0x94, b, d, v) 
+#define s390_nihf(c, r, v)             S390_RIL_1(c, 0xc0a, r, v)
+#define s390_nihh(c, r, v)             S390_RI(c, 0xa54, r, v)
+#define s390_nihl(c, r, v)             S390_RI(c, 0xa55, r, v)
+#define s390_nilf(c, r, v)             S390_RIL_1(c, 0xc0b, r, v)
 #define s390_nilh(c, r, v)             S390_RI(c, 0xa56, r, v)
 #define s390_nill(c, r, v)             S390_RI(c, 0xa57, r, v)
+#define s390_niy(c, b, d, v)           S390_SIY(c, 0xeb54, b, d, v) 
 #define s390_nop(c)                    S390_RR(c, 0x07, 0x0, 0)
 #define s390_nr(c, r1, r2)             S390_RR(c, 0x14, r1, r2)
+#define s390_nrk(c, r1, r2)            S390_RRF_1(c, 0xb9f4, r1, r2)
+#define s390_ny(c, r, x, b, d)         S390_RRY(c, 0xe354, r1, r2)
 #define s390_o(c, r, x, b, d)          S390_RX(c, 0x56, r, x, b, d)
+#define s390_oihf(c, r, v)             S390_RIL_1(c, 0xc0c, r, v)
+#define s390_oihh(c, r, v)             S390_RI(c, 0xa58, r, v)
+#define s390_oihl(c, r, v)             S390_RI(c, 0xa59, r, v)
+#define s390_oilf(c, r, v)             S390_RIL_1(c, 0xc0d, r, v)
+#define s390_oilh(c, r, v)             S390_RI(c, 0xa5a, r, v)
+#define s390_oill(c, r, v)             S390_RI(c, 0xa5b` r, v)
+#define s390_oiy(c, b, d, v)           S390_SIY(c, 0xeb56 b, d, v) 
 #define s390_og(c, r, x, b, d)         S390_RXY(c, 0xe381, r, x, b, d)
 #define s390_ogr(c, r1, r2)            S390_RRE(c, 0xb981, r1, r2)
 #define s390_or(c, r1, r2)             S390_RR(c, 0x16, r1, r2)
@@ -762,16 +942,19 @@ typedef struct {
 #define s390_sg(c, r, x, b, d)         S390_RXY(c, 0xe309, r, x, b, d)
 #define s390_sgf(c, r, x, b, d)                S390_RXY(c, 0xe319, r, x, b, d)
 #define s390_sgr(c, r1, r2)            S390_RRE(c, 0xb909, r1, r2)
+#define s390_sl(c, r, x, b, d)         S390_RX(c, 0x5f, r, x, b, d)
 #define s390_sla(c, r, b, d)           S390_RS_3(c, 0x8b, r, b, d) 
 #define s390_slag(c, r1, r2, b, d)     S390_RSY_1(c, 0xeb0b, r1, r2, b, d) 
 #define s390_slbg(c, r, x, b, d)       S390_RXY(c, 0xe389, r, x, b, d)
 #define s390_slbgr(c, r1, r2)          S390_RRE(c, 0xb989, r1, r2)
 #define s390_slbr(c, r1, r2)           S390_RRE(c, 0xb999, r1, r2)
-#define s390_sl(c, r, x, b, d)         S390_RX(c, 0x5f, r, x, b, d)
 #define s390_slda(c, r, b, d)          S390_RS_3(c, 0x8f, r, b, d) 
 #define s390_sldl(c, r, b, d)          S390_RS_3(c, 0x8d, r, b, d) 
+#define s390_slfi(c, r, v)             S390_RIL_1(c, 0xc25, r, v)
 #define s390_slg(c, r, x, b, d)                S390_RXY(c, 0xe30b, r, x, b, d)
 #define s390_slgf(c, r, x, b, d)       S390_RXY(c, 0xe31b, r, x, b, d)
+#define s390_slgfr(c, r1, r2)          S390_RRE(c, 0xb91b, r1, r2)
+#define s390_slgfi(c, r, v)            S390_RIL_1(c, 0xc24, r, v)
 #define s390_slgr(c, r1, r2)           S390_RRE(c, 0xb90b, r1, r2)
 #define s390_sll(c, r, b, d)           S390_RS_3(c, 0x89, r, b, d) 
 #define s390_sllg(c, r1, r2, b, d)     S390_RSY_1(c, 0xeb0d, r1, r2, b, d) 
@@ -805,7 +988,10 @@ typedef struct {
 #define s390_tcdb(c, r, x, b, d)       S390_RXE(c, 0xed11, r, x, b, d)
 #define s390_tceb(c, r, x, b, d)       S390_RXE(c, 0xed10, r, x, b, d)
 #define s390_x(c, r, x, b, d)          S390_RX(c, 0x57, r, x, b, d)
+#define s390_xihf(c, r, v)             S390_RIL_1(c, 0xc06, r, v)
+#define s390_xilf(c, r, v)             S390_RIL_1(c, 0xc07, r, v)
 #define s390_xg(c, r, x, b, d)         S390_RXY(c, 0xe382, r, x, b, d)
 #define s390_xgr(c, r1, r2)            S390_RRE(c, 0xb982, r1, r2)
 #define s390_xr(c, r1, r2)             S390_RR(c, 0x17, r1, r2)
+#define s390_xy(c, r, x, b, d)         S390_RXY(c, 0xe357, r, x, b, d)
 #endif
index 116824da9ec9e2a687945bdb473aa54927dabb0a..70f3f6e4ced663289b1a5f2820a367ff52f1b53f 100755 (executable)
@@ -12,6 +12,7 @@
 #include <stdio.h>
 #include <math.h>
 #include "util.h"
+#include "mono/utils/mono-compiler.h"
 
 #ifdef HAVE_IEEEFP_H
 #include <ieeefp.h>
index 40c9591a8972cd4bfae302bf34f684ff40ba6c99..9e2fb959697245a7cab2e78ef642f118e752bc8e 100755 (executable)
@@ -705,7 +705,7 @@ static gboolean file_setendoffile(gpointer handle)
        }
        
 #ifdef FTRUNCATE_DOESNT_EXTEND
-       /* I haven't bothered to write the configure.in stuff for this
+       /* I haven't bothered to write the configure.ac stuff for this
         * because I don't know if any platform needs it.  I'm leaving
         * this code just in case though
         */
index 1d702d3188f274c02c319c8f3d59bc805d9ccbf4..d1bf3d0362c5b355311ab9af67c9c7c636872383 100644 (file)
 #include <sys/stat.h>
 #include <unistd.h>
 
-
-/* Disclaimers */
-
-#if defined(__GNUC__)
-#ifndef HAVE_GETRESUID
-       #warning getresuid not supported. WindowsImpersonationContext wont work
-#endif
-#ifndef HAVE_SETRESUID
-       #warning setresuid not supported. WindowsImpersonationContext wont work
-#endif
-#endif
-
-
 gboolean 
 ImpersonateLoggedOnUser (gpointer handle)
 {
index e4867a8a81a5dbb069d520cdbdd4983235a7e1c1..70591c7ba41ec3bbd4b9f07e72e13656eb59f79f 100644 (file)
@@ -75,7 +75,7 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLA
 #  mono-config.c uses MONO_CFG_DIR
 #
 # This won't result in many more false positives than AC_DEFINEing them
-# in configure.in.
+# in configure.ac.
 #
 assembly.lo mono-config.lo: Makefile
 
@@ -86,6 +86,9 @@ libmonoruntime_static_la_LIBADD = $(bundle_obj) $(libmonoruntime_la_LIBADD)
 null_sources = \
        console-null.c
 
+null_gc_sources = \
+       null-gc.c
+
 common_sources = \
        $(platform_sources)     \
        assembly.c              \
@@ -159,7 +162,6 @@ common_sources = \
        monitor.h               \
        nacl-stub.c             \
        normalization-tables.h  \
-       null-gc.c               \
        number-formatter.h      \
        object-internals.h      \
        opcodes.c               \
@@ -191,7 +193,11 @@ common_sources = \
        verify.c                \
        verify-internals.h      \
        wrapper-types.h \
-       reflection-internals.h
+       reflection-internals.h  \
+       file-mmap-posix.c       \
+       file-mmap-windows.c     \
+       file-mmap.h
+
 
 # These source files have compile time dependencies on GC code
 gc_dependent_sources = \
@@ -262,7 +268,7 @@ sgen_sources = \
        sgen-qsort.c    \
        sgen-qsort.h
 
-libmonoruntime_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(boehm_sources)
+libmonoruntime_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(null_gc_sources) $(boehm_sources)
 libmonoruntime_la_CFLAGS = $(BOEHM_DEFINES)
 
 libmonoruntimesgen_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(sgen_sources)
index 82bc43bace4ac21cd09bdb1748df53816b41a4c2..ef498c60760c6621d4e46a994f49dc89fcbc7c3d 100644 (file)
@@ -59,6 +59,9 @@ boehm_thread_unregister (MonoThreadInfo *p);
 static void
 register_test_toggleref_callback (void);
 
+#define BOEHM_GC_BIT_FINALIZER_AWARE 1
+static MonoGCFinalizerCallbacks fin_callbacks;
+
 static void
 mono_gc_warning (char *msg, GC_word arg)
 {
@@ -375,7 +378,8 @@ boehm_thread_unregister (MonoThreadInfo *p)
 
        tid = mono_thread_info_get_tid (p);
 
-       mono_threads_add_joinable_thread ((gpointer)tid);
+       if (p->runtime_thread)
+               mono_threads_add_joinable_thread ((gpointer)tid);
 }
 
 gboolean
@@ -1241,6 +1245,7 @@ void
 mono_gc_pthread_exit (void *retval)
 {
        pthread_exit (retval);
+       g_assert_not_reached ();
 }
 
 #endif
@@ -1259,6 +1264,10 @@ BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reser
 guint
 mono_gc_get_vtable_bits (MonoClass *class)
 {
+       if (fin_callbacks.is_class_finalization_aware) {
+               if (fin_callbacks.is_class_finalization_aware (class))
+                       return BOEHM_GC_BIT_FINALIZER_AWARE;
+       }
        return 0;
 }
 
@@ -1338,4 +1347,29 @@ register_test_toggleref_callback (void)
        mono_gc_toggleref_register_callback (test_toggleref_callback);
 }
 
+static gboolean
+is_finalization_aware (MonoObject *obj)
+{
+       MonoVTable *vt = obj->vtable;
+       return (vt->gc_bits & BOEHM_GC_BIT_FINALIZER_AWARE) == BOEHM_GC_BIT_FINALIZER_AWARE;
+}
+
+static void
+fin_notifier (MonoObject *obj)
+{
+       if (is_finalization_aware (obj))
+               fin_callbacks.object_queued_for_finalization (obj);
+}
+
+void
+mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks)
+{
+       if (callbacks->version != MONO_GC_FINALIZER_EXTENSION_VERSION)
+               g_error ("Invalid finalizer callback version. Expected %d but got %d\n", MONO_GC_FINALIZER_EXTENSION_VERSION, callbacks->version);
+
+       fin_callbacks = *callbacks;
+
+       GC_set_finalizer_notify_proc ((void (*) (GC_PTR))fin_notifier);
+}
+
 #endif /* no Boehm GC */
index 2160b11741810b6279a63e1320014205b031e05b..1dce9bf7e7a4eff6de998f5e97bb6c9b9d45e101 100644 (file)
@@ -712,38 +712,38 @@ typedef struct {
 
 typedef struct {
        guint64 new_object_count;
-       gulong initialized_class_count;
-       gulong generic_vtable_count;
-       gulong used_class_count;
-       gulong method_count;
-       gulong class_vtable_size;
-       gulong class_static_data_size;
-       gulong generic_instance_count;
-       gulong generic_class_count;
-       gulong inflated_method_count;
-       gulong inflated_method_count_2;
-       gulong inflated_type_count;
-       gulong generics_metadata_size;
-       gulong delegate_creations;
-       gulong imt_tables_size;
-       gulong imt_number_of_tables;
-       gulong imt_number_of_methods;
-       gulong imt_used_slots;
-       gulong imt_slots_with_collisions;
-       gulong imt_max_collisions_in_slot;
-       gulong imt_method_count_when_max_collisions;
-       gulong imt_thunks_size;
-       gulong jit_info_table_insert_count;
-       gulong jit_info_table_remove_count;
-       gulong jit_info_table_lookup_count;
-       gulong generics_sharable_methods;
-       gulong generics_unsharable_methods;
-       gulong generics_shared_methods;
-       gulong gsharedvt_methods;
-       gulong minor_gc_count;
-       gulong major_gc_count;
-       gulong minor_gc_time_usecs;
-       gulong major_gc_time_usecs;
+       size_t initialized_class_count;
+       size_t generic_vtable_count;
+       size_t used_class_count;
+       size_t method_count;
+       size_t class_vtable_size;
+       size_t class_static_data_size;
+       size_t generic_instance_count;
+       size_t generic_class_count;
+       size_t inflated_method_count;
+       size_t inflated_method_count_2;
+       size_t inflated_type_count;
+       size_t generics_metadata_size;
+       size_t delegate_creations;
+       size_t imt_tables_size;
+       size_t imt_number_of_tables;
+       size_t imt_number_of_methods;
+       size_t imt_used_slots;
+       size_t imt_slots_with_collisions;
+       size_t imt_max_collisions_in_slot;
+       size_t imt_method_count_when_max_collisions;
+       size_t imt_thunks_size;
+       size_t jit_info_table_insert_count;
+       size_t jit_info_table_remove_count;
+       size_t jit_info_table_lookup_count;
+       size_t generics_sharable_methods;
+       size_t generics_unsharable_methods;
+       size_t generics_shared_methods;
+       size_t gsharedvt_methods;
+       size_t minor_gc_count;
+       size_t major_gc_count;
+       size_t minor_gc_time_usecs;
+       size_t major_gc_time_usecs;
        gboolean enabled;
 } MonoStats;
 
index 36a86794e77bf55a723c6e26bebff446b1fdb4ce..2a0b76e97dd170699e318dc54da0a740ef83f1ae 100644 (file)
@@ -1749,6 +1749,7 @@ mono_class_layout_fields (MonoClass *class)
        guint32 layout = class->flags & TYPE_ATTRIBUTE_LAYOUT_MASK;
        guint32 pass, passes, real_size;
        gboolean gc_aware_layout = FALSE;
+       gboolean has_static_fields = FALSE;
        MonoClassField *field;
 
        /*
@@ -1989,6 +1990,8 @@ mono_class_layout_fields (MonoClass *class)
                        break;
                }
 
+               has_static_fields = TRUE;
+
                size = mono_type_size (field->type, &align);
                field->offset = class->sizes.class_size;
                /*align is always non-zero here*/
@@ -1996,6 +1999,10 @@ mono_class_layout_fields (MonoClass *class)
                field->offset &= ~(align - 1);
                class->sizes.class_size = field->offset + size;
        }
+
+       if (has_static_fields && class->sizes.class_size == 0)
+               /* Simplify code which depends on class_size != 0 if the class has static fields */
+               class->sizes.class_size = 8;
 }
 
 static MonoMethod*
index 9e48a3fe07749222d678cbc693ef0a21672a5b0b..5b7badcf66caf0a504497c5da78e0bbbdb9ed37b 100644 (file)
@@ -226,10 +226,12 @@ STDAPI _CorValidateImage(PVOID *ImageBase, LPCWSTR FileName)
 {
        IMAGE_DOS_HEADER* DosHeader;
        IMAGE_NT_HEADERS32* NtHeaders32;
-       IMAGE_NT_HEADERS64* NtHeaders64;
        IMAGE_DATA_DIRECTORY* CliHeaderDir;
+#ifdef _WIN64
+       IMAGE_NT_HEADERS64* NtHeaders64;
        MonoCLIHeader* CliHeader;
        DWORD SizeOfHeaders;
+#endif
        DWORD* Address;
        DWORD OldProtect;
 
@@ -410,7 +412,9 @@ HMODULE WINAPI MonoLoadImage(LPCWSTR FileName)
        HANDLE MapHandle;
        IMAGE_DOS_HEADER* DosHeader;
        IMAGE_NT_HEADERS32* NtHeaders32;
+#ifdef _WIN64
        IMAGE_NT_HEADERS64* NtHeaders64;
+#endif
        HMODULE ModuleHandle;
 
        FileHandle = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
@@ -458,7 +462,9 @@ InvalidImageFormat:
                goto UnmapView;
        }
 
+#ifdef _WIN64
 ValidImage:
+#endif
        UnmapViewOfFile(DosHeader);
        CloseHandle(MapHandle);
 
diff --git a/mono/metadata/file-mmap-posix.c b/mono/metadata/file-mmap-posix.c
new file mode 100644 (file)
index 0000000..6f8b7f2
--- /dev/null
@@ -0,0 +1,521 @@
+/*
+ * file-mmap-posix.c: File mmap internal calls
+ *
+ * Author:
+ *     Rodrigo Kumpera
+ *
+ * Copyright 2014 Xamarin Inc (http://www.xamarin.com)
+ */
+
+#include <config.h>
+
+#ifndef TARGET_WIN32
+
+#include <glib.h>
+#include <string.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+
+#include <fcntl.h>
+
+
+#include <mono/metadata/object.h>
+#include <mono/metadata/file-io.h>
+#include <mono/metadata/file-mmap.h>
+#include <mono/utils/atomic.h>
+#include <mono/utils/mono-memory-model.h>
+#include <mono/utils/mono-mmap.h>
+
+enum {
+       MMAP_KIND_FILE = 1,
+       MMAP_KIND_MEMORY = 2    
+};
+
+typedef struct {
+       int kind;
+       int ref_count;
+       gint64 capacity;
+       char *name;
+} Handle;
+
+typedef struct {
+       Handle handle;
+       int fd;
+} FileHandle;
+
+typedef struct {
+       Handle handle;
+       void *address;
+       size_t length;
+} MemoryHandle;
+
+typedef struct {
+       void *address;
+       void *free_handle;
+       int kind;
+       size_t length;
+} MmapHandle;
+
+enum {
+       BAD_CAPACITY_FOR_FILE_BACKED = 1,
+       CAPACITY_SMALLER_THAN_FILE_SIZE,
+       FILE_NOT_FOUND,
+       FILE_ALREADY_EXISTS,
+       PATH_TOO_LONG,
+       COULD_NOT_OPEN,
+       CAPACITY_MUST_BE_POSITIVE,
+       INVALID_FILE_MODE,
+       COULD_NOT_MAP_MEMORY
+};
+
+enum {
+       FILE_MODE_CREATE_NEW = 1,
+       FILE_MODE_CREATE = 2,
+       FILE_MODE_OPEN = 3,
+       FILE_MODE_OPEN_OR_CREATE = 4,
+       FILE_MODE_TRUNCATE = 5,
+       FILE_MODE_APPEND = 6,
+};
+
+enum {
+       MMAP_FILE_ACCESS_READ_WRITE = 0,
+       MMAP_FILE_ACCESS_READ = 1,
+       MMAP_FILE_ACCESS_WRITE = 2,
+       MMAP_FILE_ACCESS_COPY_ON_WRITE = 3,
+       MMAP_FILE_ACCESS_READ_EXECUTE = 4,
+       MMAP_FILE_ACCESS_READ_WRITE_EXECUTE = 5,
+};
+
+
+static int mmap_init_state;
+static mono_mutex_t named_regions_mutex;
+static GHashTable *named_regions;
+
+
+static gint64
+align_up_to_page_size (gint64 size)
+{
+       gint64 page_size = mono_pagesize ();
+       return (size + page_size - 1) & ~(page_size - 1);
+}
+
+static gint64
+align_down_to_page_size (gint64 size)
+{
+       gint64 page_size = mono_pagesize ();
+       return size & ~(page_size - 1);
+}
+
+static void
+file_mmap_init (void)
+{
+retry: 
+       switch (mmap_init_state) {
+       case  0:
+               if (InterlockedCompareExchange (&mmap_init_state, 1, 0) != 0)
+                       goto retry;
+               named_regions = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL);
+               mono_mutex_init (&named_regions_mutex);
+
+               mono_atomic_store_release (&mmap_init_state, 2);
+               break;
+
+       case 1:
+               do {
+                       g_usleep (1000); /* Been init'd by other threads, this is very rare. */
+               } while (mmap_init_state != 2);
+               break;
+       case 2:
+               break;
+       default:
+               g_error ("Invalid init state %d", mmap_init_state);
+       }
+}
+
+static void
+named_regions_lock (void)
+{
+       file_mmap_init ();
+       mono_mutex_lock (&named_regions_mutex);
+}
+
+static void
+named_regions_unlock (void)
+{
+       mono_mutex_unlock (&named_regions_mutex);       
+}
+
+
+static int
+file_mode_to_unix (int mode)
+{
+       switch (mode) {
+       case FILE_MODE_CREATE_NEW:
+        return O_CREAT | O_EXCL; 
+       case FILE_MODE_CREATE:
+        return O_CREAT | O_TRUNC;
+       case FILE_MODE_OPEN:
+               return 0;
+       case FILE_MODE_OPEN_OR_CREATE:
+        return O_CREAT;
+       case FILE_MODE_TRUNCATE:
+        return O_TRUNC;
+       case FILE_MODE_APPEND:
+               return O_APPEND;
+       default:
+               g_error ("unknown FileMode %d", mode);
+       }
+}
+
+static int
+access_mode_to_unix (int access)
+{
+       switch (access) {
+       case MMAP_FILE_ACCESS_READ_WRITE:
+       case MMAP_FILE_ACCESS_COPY_ON_WRITE:
+       case MMAP_FILE_ACCESS_READ_WRITE_EXECUTE:
+               return O_RDWR;
+       case MMAP_FILE_ACCESS_READ:
+       case MMAP_FILE_ACCESS_READ_EXECUTE:
+               return O_RDONLY;
+       case MMAP_FILE_ACCESS_WRITE:
+               return O_WRONLY;
+       default:
+               g_error ("unknown MemoryMappedFileAccess %d", access);
+       }
+}
+
+static int
+acess_to_mmap_flags (int access)
+{
+       switch (access) {
+       case MMAP_FILE_ACCESS_READ_WRITE:
+        return MONO_MMAP_WRITE | MONO_MMAP_READ | MONO_MMAP_SHARED;
+        
+       case MMAP_FILE_ACCESS_WRITE:
+        return MONO_MMAP_WRITE | MONO_MMAP_SHARED;
+        
+       case MMAP_FILE_ACCESS_COPY_ON_WRITE:
+        return MONO_MMAP_WRITE | MONO_MMAP_READ | MONO_MMAP_PRIVATE;
+        
+       case MMAP_FILE_ACCESS_READ_EXECUTE:
+        return MONO_MMAP_EXEC | MONO_MMAP_PRIVATE | MONO_MMAP_SHARED;
+        
+       case MMAP_FILE_ACCESS_READ_WRITE_EXECUTE:
+        return MONO_MMAP_WRITE | MONO_MMAP_READ | MONO_MMAP_EXEC | MONO_MMAP_SHARED;
+        
+       case MMAP_FILE_ACCESS_READ:
+        return MONO_MMAP_READ | MONO_MMAP_SHARED;
+       default:
+               g_error ("unknown MemoryMappedFileAccess %d", access);
+       }
+}
+
+/*
+XXX implement options
+*/
+static void*
+open_file_map (MonoString *path, int input_fd, int mode, gint64 *capacity, int access, int options, int *error)
+{
+       struct stat buf;
+       char *c_path = path ? mono_string_to_utf8 (path) : NULL;
+       FileHandle *handle = NULL;
+       int result, fd;
+
+       if (path)
+               result = stat (c_path, &buf);
+       else
+               result = fstat (input_fd, &buf);
+
+       if (mode == FILE_MODE_TRUNCATE || mode == FILE_MODE_APPEND || mode == FILE_MODE_OPEN) {
+               if (result == -1) { //XXX translate errno?
+                       *error = FILE_NOT_FOUND;
+                       goto done;
+               }
+       }
+
+       if (mode == FILE_MODE_CREATE_NEW && result == 0) {
+               *error = FILE_ALREADY_EXISTS;
+               goto done;
+       }
+
+       if (result == 0) {
+               if (*capacity == 0) {
+                       /**
+                        * Special files such as FIFOs, sockets, and devices can have a size of 0. Specifying a capacity for these
+                        * also makes little sense, so don't do the check if th file is one of these.
+                        */
+                       if (buf.st_size == 0 && (buf.st_mode & (S_IFCHR | S_IFBLK | S_IFIFO | S_IFSOCK)) == 0) {
+                               *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+                               goto done;
+                       }
+                       *capacity = buf.st_size;
+               } else if (*capacity < buf.st_size) {
+                       *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+                       goto done;
+               }
+       } else {
+               if (mode == FILE_MODE_CREATE_NEW && *capacity == 0) {
+                       *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+                       goto done;
+               }
+       }
+
+#ifndef PLATFORM_ANDROID
+       if (path) //FIXME use io portability?
+               fd = open (c_path, file_mode_to_unix (mode) | access_mode_to_unix (access), DEFFILEMODE);
+       else
+               fd = dup (input_fd);
+#else
+       // FIXME: No DEFFILEMODE
+       fd = -1;
+       g_assert_not_reached ();
+#endif
+
+       if (fd == -1) { //XXX translate errno?
+               *error = COULD_NOT_OPEN;
+               goto done;
+       }
+
+       *capacity = align_up_to_page_size ((size_t)*capacity);
+
+       if (*capacity > buf.st_size) {
+               int unused G_GNUC_UNUSED = ftruncate (fd, (off_t)*capacity);
+       }
+
+       handle = g_new0 (FileHandle, 1);
+       handle->handle.kind = MMAP_KIND_FILE;
+       handle->handle.ref_count = 1;
+       handle->handle.capacity = *capacity;
+       handle->fd = fd;
+
+done:
+       g_free (c_path);
+       return (void*)handle;
+}
+
+static void*
+open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, int options, int *error)
+{
+       char *c_mapName;
+       MemoryHandle *handle;
+       if (*capacity <= 1) {
+               *error = CAPACITY_MUST_BE_POSITIVE;
+               return NULL;
+       }
+
+       if (!(mode == FILE_MODE_CREATE_NEW || mode == FILE_MODE_OPEN_OR_CREATE || mode == FILE_MODE_OPEN)) {
+               *error = INVALID_FILE_MODE;
+               return NULL;
+       }
+
+       c_mapName = mono_string_to_utf8 (mapName);
+
+       named_regions_lock ();
+       handle = (MemoryHandle*)g_hash_table_lookup (named_regions, c_mapName);
+       if (handle) {
+               if (mode == FILE_MODE_CREATE_NEW)
+                       *error = FILE_ALREADY_EXISTS;
+
+               handle->handle.ref_count++;
+               //XXX should we ftruncate if the file is smaller than capacity?
+       } else {
+               if (mode == FILE_MODE_OPEN)
+                       *error = FILE_NOT_FOUND;
+
+               *capacity = align_up_to_page_size (*capacity);
+
+               handle = g_new0 (MemoryHandle, 1);
+               handle->handle.kind = MMAP_KIND_MEMORY;
+               handle->handle.ref_count = 1;
+               handle->handle.capacity = *capacity;
+               handle->handle.name = g_strdup (c_mapName);
+
+               //FIXME compute RWX from access
+               handle->address = mono_valloc (NULL, (size_t)*capacity, MONO_MMAP_READ | MONO_MMAP_WRITE | MONO_MMAP_PRIVATE | MONO_MMAP_ANON);
+               handle->length = (size_t)*capacity;
+               g_hash_table_insert (named_regions, handle->handle.name, handle);
+       }
+
+       named_regions_unlock ();
+
+       g_free (c_mapName);
+       return handle;
+}
+
+
+void *
+mono_mmap_open_file (MonoString *path, int mode, MonoString *mapName, gint64 *capacity, int access, int options, int *error)
+{
+       g_assert (path || mapName);
+
+       if (!mapName)
+               return open_file_map (path, -1, mode, capacity, access, options, error);
+
+       if (path) {
+               FileHandle *file_handle;
+               char *c_mapName = mono_string_to_utf8 (mapName);
+
+               named_regions_lock ();
+               file_handle = (FileHandle*)g_hash_table_lookup (named_regions, c_mapName);
+               if (file_handle) {
+                       *error = FILE_ALREADY_EXISTS;
+                       file_handle = NULL;
+               } else {
+                       file_handle = open_file_map (path, -1, mode, capacity, access, options, error);
+                       if (file_handle) {
+                               file_handle->handle.name = g_strdup (c_mapName);
+                               g_hash_table_insert (named_regions, file_handle->handle.name, file_handle);
+                       }
+               }
+               named_regions_unlock ();
+
+               g_free (c_mapName);
+               return file_handle;
+       }
+
+       return open_memory_map (mapName, mode, capacity, access, options, error);
+}
+
+void *
+mono_mmap_open_handle (void *handle, MonoString *mapName, gint64 *capacity, int access, int options, int *error)
+{
+       FileHandle *file_handle;
+       char *c_mapName = mono_string_to_utf8 (mapName);
+
+       named_regions_lock ();
+       file_handle = (FileHandle*)g_hash_table_lookup (named_regions, c_mapName);
+       if (file_handle) {
+               *error = FILE_ALREADY_EXISTS;
+               file_handle = NULL;
+       } else {
+               //XXX we're exploiting wapi HANDLE == FD equivalence. THIS IS FRAGILE, create a _wapi_handle_to_fd call
+               file_handle = open_file_map (NULL, GPOINTER_TO_INT (handle), FILE_MODE_OPEN, capacity, access, options, error);
+               file_handle->handle.name = g_strdup (c_mapName);
+               g_hash_table_insert (named_regions, file_handle->handle.name, file_handle);
+       }
+       named_regions_unlock ();
+
+       g_free (c_mapName);
+       return file_handle;
+}
+
+void
+mono_mmap_close (void *mmap_handle)
+{
+       Handle *handle = mmap_handle;
+
+       named_regions_lock ();
+       --handle->ref_count;
+       if (handle->ref_count == 0) {
+               if (handle->name)
+                       g_hash_table_remove (named_regions, handle->name);
+               
+               g_free (handle->name);
+               if (handle->kind == MMAP_KIND_MEMORY)
+                       mono_vfree (((MemoryHandle*)handle)->address, ((MemoryHandle*)handle)->length);
+               else
+                       close (((FileHandle*)handle)->fd);
+               g_free (handle);
+       }
+       named_regions_unlock ();
+}
+
+void
+mono_mmap_configure_inheritability (void *mmap_handle, gboolean inheritability)
+{
+       FileHandle *h = mmap_handle;
+       int fd, flags;
+
+       if (h->handle.kind != MMAP_KIND_FILE)
+               return;
+
+       fd = h->fd;
+       flags = fcntl (fd, F_GETFD, 0);
+       if (inheritability)
+               flags &= ~FD_CLOEXEC;
+       else
+               flags |= FD_CLOEXEC;
+       fcntl (fd, F_SETFD, flags);     
+}
+
+void
+mono_mmap_flush (void *mmap_handle)
+{
+       MmapHandle *h = mmap_handle;
+
+       if (h)
+               msync (h->address, h->length, MS_SYNC);
+}
+
+int
+mono_mmap_map (void *handle, gint64 offset, gint64 *size, int access, void **mmap_handle, void **base_address)
+{
+       gint64 mmap_offset = 0;
+       Handle *h = handle;
+       MmapHandle res = { 0 };
+       if (h->kind == MMAP_KIND_FILE) {
+               FileHandle *fh = (FileHandle*)h;
+               size_t eff_size = *size;
+               struct stat buf = { 0 };
+               fstat (fh->fd, &buf); //FIXME error handling
+
+               if (eff_size == 0 || eff_size > buf.st_size)
+                       eff_size = buf.st_size;
+               *size = eff_size;
+
+               mmap_offset = align_down_to_page_size (offset);
+               eff_size += (offset - mmap_offset);
+               //FIXME translate some interesting errno values
+               res.address = mono_file_map ((size_t)eff_size, acess_to_mmap_flags (access), fh->fd, mmap_offset, &res.free_handle);
+               res.length = eff_size;
+               res.kind = MMAP_KIND_FILE;
+
+       } else {
+               MemoryHandle *mh = (MemoryHandle*)h;
+               size_t eff_size = *size;
+
+               if (!eff_size)
+                       eff_size = *size = mh->length;
+               mmap_offset = (size_t)mmap_offset;
+               res.address = (char*)mh->address + offset;
+               res.length = (size_t)size;
+               res.kind = MMAP_KIND_MEMORY;
+       }
+
+       if (res.address) {
+               *mmap_handle = g_memdup (&res, sizeof (MmapHandle));
+               *base_address = (char*)res.address + (offset - mmap_offset);
+               return 0;
+       }
+
+       *mmap_handle = NULL;
+       *base_address = NULL;
+       return COULD_NOT_MAP_MEMORY;
+}
+
+gboolean
+mono_mmap_unmap (void *mmap_handle)
+{
+       int res = 0;
+       MmapHandle *h = mmap_handle;
+
+       if (h->kind == MMAP_KIND_FILE)
+               res = mono_file_unmap (h->address, h->free_handle);
+
+       g_free (h);
+       return res == 0;
+}
+
+#endif
diff --git a/mono/metadata/file-mmap-windows.c b/mono/metadata/file-mmap-windows.c
new file mode 100644 (file)
index 0000000..78203ad
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * file-mmap-posix.c: File mmap internal calls
+ *
+ * Author:
+ *     Rodrigo Kumpera
+ *
+ * Copyright 2014 Xamarin Inc (http://www.xamarin.com)
+ */
+
+#include <config.h>
+
+#ifdef TARGET_WIN32
+
+#include <glib.h>
+#include <string.h>
+#include <errno.h>
+
+
+#include <mono/metadata/object.h>
+#include <mono/metadata/file-mmap.h>
+
+void *
+mono_mmap_open_file (MonoString *path, int mode, MonoString *mapName, gint64 *capacity, int access, int options, int *error)
+{
+       g_error ("No windows backend");
+       return NULL;
+}
+
+void *
+mono_mmap_open_handle (void *handle, MonoString *mapName, gint64 *capacity, int access, int options, int *error)
+{
+       g_error ("No windows backend");
+       return NULL;
+}
+
+void
+mono_mmap_close (void *mmap_handle)
+{
+       g_error ("No windows backend");
+}
+
+void
+mono_mmap_configure_inheritability (void *mmap_handle, gboolean inheritability)
+{
+       g_error ("No windows backend");
+}
+
+void
+mono_mmap_flush (void *mmap_handle)
+{
+       g_error ("No windows backend");
+}
+
+
+
+int
+mono_mmap_map (void *handle, gint64 offset, gint64 *size, int access, void **mmap_handle, void **base_address)
+{
+       g_error ("No windows backend");
+       return 0;
+}
+
+gboolean
+mono_mmap_unmap (void *mmap_handle)
+{
+       g_error ("No windows backend");
+       return TRUE;
+}
+
+#endif
diff --git a/mono/metadata/file-mmap.h b/mono/metadata/file-mmap.h
new file mode 100644 (file)
index 0000000..1d75016
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * file-mmap.h: Managed mmap wrappers.
+ *
+ * Authors:
+ *     Rodrigo Kumpera
+ *
+ * Copyright 2014 Xamarin Inc (http://www.xamarin.com)
+ */
+
+#ifndef _MONO_METADATA_FILE_MMAP_H_
+#define _MONO_METADATA_FILE_MMAP_H_
+
+#include <config.h>
+#include <glib.h>
+
+#include <mono/metadata/object-internals.h>
+#include <mono/io-layer/io-layer.h>
+#include <mono/utils/mono-compiler.h>
+
+extern void mono_mmap_close (void *mmap_handle) MONO_INTERNAL;
+
+extern void mono_mmap_configure_inheritability (void *mmap_handle, gboolean inheritability) MONO_INTERNAL;
+
+extern void mono_mmap_flush (void *mmap_handle) MONO_INTERNAL;
+
+extern void *mono_mmap_open_file (MonoString *string, int mode, MonoString *mapName, gint64 *capacity, int access, int options, int *error) MONO_INTERNAL;
+
+extern void *mono_mmap_open_handle (void *handle, MonoString *mapName, gint64 *capacity, int access, int options, int *error) MONO_INTERNAL;
+
+extern int mono_mmap_map (void *handle, gint64 offset, gint64 *size, int access, void **mmap_handle, void **base_address) MONO_INTERNAL;
+
+extern gboolean mono_mmap_unmap (void *base_address) MONO_INTERNAL;
+
+#endif /* _MONO_METADATA_FILE_MMAP_H_ */
index 01f843526964499d4de395a2f9118b5111b5dbbe..be2d0eecfddfd638f6fa8678086ce3952d25b779 100644 (file)
@@ -356,6 +356,19 @@ struct _MonoReferenceQueue {
        gboolean should_be_deleted;
 };
 
+enum {
+       MONO_GC_FINALIZER_EXTENSION_VERSION = 1,
+};
+
+typedef struct {
+       int version;
+       gboolean (*is_class_finalization_aware) (MonoClass *class);
+       void (*object_queued_for_finalization) (MonoObject *object);
+} MonoGCFinalizerCallbacks;
+
+void mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks);
+
+
 #ifdef HOST_WIN32
 BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved) MONO_INTERNAL;
 #endif
index 0582798fc799f07e0c96ece088a47b41424784cf..028319dcfe03ed4ae34eec16a9d3853b5cebebc7 100644 (file)
@@ -315,12 +315,14 @@ ICALL(INOW_1, "AddWatch", ves_icall_System_IO_InotifyWatcher_AddWatch)
 ICALL(INOW_2, "GetInotifyInstance", ves_icall_System_IO_InotifyWatcher_GetInotifyInstance)
 ICALL(INOW_3, "RemoveWatch", ves_icall_System_IO_InotifyWatcher_RemoveWatch)
 
-#if defined (TARGET_IOS) || defined (TARGET_ANDROID)
 ICALL_TYPE(MMAPIMPL, "System.IO.MemoryMappedFiles.MemoryMapImpl", MMAPIMPL_1)
-ICALL(MMAPIMPL_1, "mono_filesize_from_fd", mono_filesize_from_fd)
-ICALL(MMAPIMPL_2, "mono_filesize_from_path", mono_filesize_from_path)
-#endif
-
+ICALL(MMAPIMPL_1, "CloseMapping", mono_mmap_close)
+ICALL(MMAPIMPL_2, "ConfigureHandleInheritability", mono_mmap_configure_inheritability)
+ICALL(MMAPIMPL_3, "Flush", mono_mmap_flush)
+ICALL(MMAPIMPL_4, "MapInternal", mono_mmap_map)
+ICALL(MMAPIMPL_5, "OpenFileInternal", mono_mmap_open_file)
+ICALL(MMAPIMPL_6, "OpenHandleInternal", mono_mmap_open_handle)
+ICALL(MMAPIMPL_7, "Unmap", mono_mmap_unmap)
 
 ICALL_TYPE(MONOIO, "System.IO.MonoIO", MONOIO_1)
 ICALL(MONOIO_1, "Close(intptr,System.IO.MonoIOError&)", ves_icall_System_IO_MonoIO_Close)
index ee0e5cd8a36f388b444feb86168f2afa71d2e5f9..b320933a0a8641d63041c818c65bd2b9e070a6fc 100644 (file)
@@ -75,6 +75,7 @@
 #include <mono/metadata/mono-ptr-array.h>
 #include <mono/metadata/verify-internals.h>
 #include <mono/metadata/runtime.h>
+#include <mono/metadata/file-mmap.h>
 #include <mono/io-layer/io-layer.h>
 #include <mono/utils/strtod.h>
 #include <mono/utils/monobitset.h>
@@ -1265,6 +1266,8 @@ get_caller_no_reflection (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed
 static MonoReflectionType *
 type_from_name (const char *str, MonoBoolean ignoreCase)
 {
+       MonoMethod *m, *dest;
+
        MonoType *type = NULL;
        MonoAssembly *assembly = NULL;
        MonoTypeNameParse info;
@@ -1280,32 +1283,38 @@ type_from_name (const char *str, MonoBoolean ignoreCase)
                return NULL;
        }
 
-       if (info.assembly.name) {
-               assembly = mono_assembly_load (&info.assembly, NULL, NULL);
-       } else {
-               MonoMethod *m = mono_method_get_last_managed ();
-               MonoMethod *dest = m;
 
-               mono_stack_walk_no_il (get_caller_no_reflection, &dest);
-               if (!dest)
-                       dest = m;
+       /*
+        * We must compute the calling assembly as type loading must happen under a metadata context.
+        * For example. The main assembly is a.exe and Type.GetType is called from dir/b.dll. Without
+        * the metadata context (basedir currently) set to dir/b.dll we won't be able to load a dir/c.dll.
+        */
+       m = mono_method_get_last_managed ();
+       dest = m;
 
-               /*
-                * FIXME: mono_method_get_last_managed() sometimes returns NULL, thus
-                *        causing ves_icall_System_Reflection_Assembly_GetCallingAssembly()
-                *        to crash.  This only seems to happen in some strange remoting
-                *        scenarios and I was unable to figure out what's happening there.
-                *        Dec 10, 2005 - Martin.
-                */
+       mono_stack_walk_no_il (get_caller_no_reflection, &dest);
+       if (!dest)
+               dest = m;
 
-               if (dest) {
-                       assembly = dest->klass->image->assembly;
-                       type_resolve = TRUE;
-               } else {
-                       g_warning (G_STRLOC);
-               }
+       /*
+        * FIXME: mono_method_get_last_managed() sometimes returns NULL, thus
+        *        causing ves_icall_System_Reflection_Assembly_GetCallingAssembly()
+        *        to crash.  This only seems to happen in some strange remoting
+        *        scenarios and I was unable to figure out what's happening there.
+        *        Dec 10, 2005 - Martin.
+        */
+
+       if (dest) {
+               assembly = dest->klass->image->assembly;
+               type_resolve = TRUE;
+       } else {
+               g_warning (G_STRLOC);
        }
 
+       if (info.assembly.name)
+               assembly = mono_assembly_load (&info.assembly, assembly ? assembly->basedir : NULL, NULL);
+
+
        if (assembly) {
                /* When loading from the current assembly, AppDomain.TypeResolve will not be called yet */
                type = mono_reflection_get_type (assembly->image, &info, ignoreCase, &type_resolve);
@@ -6460,12 +6469,11 @@ ves_icall_System_Environment_GetEnvironmentVariableNames (void)
 ICALL_EXPORT void
 ves_icall_System_Environment_InternalSetEnvironmentVariable (MonoString *name, MonoString *value)
 {
-       MonoError error;
 #ifdef HOST_WIN32
-
        gunichar2 *utf16_name, *utf16_value;
 #else
        gchar *utf8_name, *utf8_value;
+       MonoError error;
 #endif
 
        MONO_ARCH_SAVE_REGS;
@@ -6723,7 +6731,7 @@ ICALL_EXPORT void
 ves_icall_System_Environment_BroadcastSettingChange (void)
 {
 #ifdef HOST_WIN32
-       SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, NULL, L"Environment", SMTO_ABORTIFHUNG, 2000, 0);
+       SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, (WPARAM)NULL, (LPARAM)L"Environment", SMTO_ABORTIFHUNG, 2000, 0);
 #endif
 }
 
index 8a8b6b8b512b3ade4dd00580152c020beae85bed..19aaa1a6b09988907be26fe8ea1215f08d058224 100644 (file)
@@ -5920,7 +5920,10 @@ emit_marshal_custom (EmitMarshalContext *m, int argnum, MonoType *t,
                g_assert (marshal_native_to_managed);
        }
 
-       mtype = mono_reflection_type_from_name (spec->data.custom_data.custom_name, m->image);
+       if (spec->data.custom_data.image)
+               mtype = mono_reflection_type_from_name (spec->data.custom_data.custom_name, spec->data.custom_data.image);
+       else
+               mtype = mono_reflection_type_from_name (spec->data.custom_data.custom_name, m->image);
        g_assert (mtype != NULL);
        mklass = mono_class_from_mono_type (mtype);
        g_assert (mklass != NULL);
index 618fd5b59d52a7487fe1b0798397971c06a119bf..12eb5c15e85eb39dccc6371c5ab57c56ffeecc1f 100644 (file)
@@ -719,7 +719,7 @@ gboolean
 mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, gboolean signature_only) MONO_INTERNAL;
 
 MonoMarshalSpec *
-mono_metadata_parse_marshal_spec_full (MonoImage *image, const char *ptr) MONO_INTERNAL;
+mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image, const char *ptr) MONO_INTERNAL;
 
 guint         mono_metadata_generic_inst_hash (gconstpointer data) MONO_INTERNAL;
 gboolean       mono_metadata_generic_inst_equal (gconstpointer ka, gconstpointer kb) MONO_INTERNAL;
@@ -762,5 +762,7 @@ MonoMethod* method_from_method_def_or_ref (MonoImage *m, guint32 tok, MonoGeneri
 
 MonoMethod *mono_get_method_constrained_with_method (MonoImage *image, MonoMethod *method, MonoClass *constrained_class, MonoGenericContext *context) MONO_INTERNAL;
 
+void mono_type_set_alignment (MonoTypeEnum type, int align) MONO_INTERNAL;
+
 #endif /* __MONO_METADATA_INTERNALS_H__ */
 
index 356dc2c24371b6a941f22ef84647bfc16630f6aa..5a3a09bc7a86ad07f748528a2258ede572d125fd 100644 (file)
@@ -4284,6 +4284,29 @@ mono_backtrace (int limit)
 
 #define abi__alignof__(type) G_STRUCT_OFFSET(struct { char c; type x; }, x)
 
+static int i8_align;
+
+/*
+ * mono_type_set_alignment:
+ *
+ *   Set the alignment used by runtime to layout fields etc. of type TYPE to ALIGN.
+ * This should only be used in AOT mode since the resulting layout will not match the
+ * host abi layout.
+ */
+void
+mono_type_set_alignment (MonoTypeEnum type, int align)
+{
+       /* Support only a few types whose alignment is abi dependent */
+       switch (type) {
+       case MONO_TYPE_I8:
+               i8_align = align;
+               break;
+       default:
+               g_assert_not_reached ();
+               break;
+       }
+}
+
 /*
  * mono_type_size:
  * @t: the type to return the size of
@@ -4328,7 +4351,10 @@ mono_type_size (MonoType *t, int *align)
                return 4;
        case MONO_TYPE_I8:
        case MONO_TYPE_U8:
-               *align = abi__alignof__(gint64);
+               if (i8_align)
+                       *align = i8_align;
+               else
+                       *align = abi__alignof__(gint64);
                return 8;               
        case MONO_TYPE_R8:
                *align = abi__alignof__(double);
@@ -4453,7 +4479,10 @@ mono_type_stack_size_internal (MonoType *t, int *align, gboolean allow_open)
                return sizeof (float);          
        case MONO_TYPE_I8:
        case MONO_TYPE_U8:
-               *align = abi__alignof__(gint64);
+               if (i8_align)
+                       *align = i8_align;
+               else
+                       *align = abi__alignof__(gint64);
                return sizeof (gint64);         
        case MONO_TYPE_R8:
                *align = abi__alignof__(double);
@@ -5012,7 +5041,7 @@ mono_metadata_field_info_full (MonoImage *meta, guint32 index, guint32 *offset,
                const char *p;
                
                if ((p = mono_metadata_get_marshal_info (meta, index, TRUE))) {
-                       *marshal_spec = mono_metadata_parse_marshal_spec_full (alloc_from_image ? meta : NULL, p);
+                       *marshal_spec = mono_metadata_parse_marshal_spec_full (alloc_from_image ? meta : NULL, meta, p);
                }
        }
 
@@ -5344,11 +5373,15 @@ mono_image_strndup (MonoImage *image, const char *data, guint len)
 MonoMarshalSpec *
 mono_metadata_parse_marshal_spec (MonoImage *image, const char *ptr)
 {
-       return mono_metadata_parse_marshal_spec_full (NULL, ptr);
+       return mono_metadata_parse_marshal_spec_full (NULL, image, ptr);
 }
 
+/*
+ * If IMAGE is non-null, memory will be allocated from its mempool, otherwise it will be allocated using malloc.
+ * PARENT_IMAGE is the image containing the marshal spec.
+ */
 MonoMarshalSpec *
-mono_metadata_parse_marshal_spec_full (MonoImage *image, const char *ptr)
+mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image, const char *ptr)
 {
        MonoMarshalSpec *res;
        int len;
@@ -5413,6 +5446,7 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, const char *ptr)
                /* read cookie string */
                len = mono_metadata_decode_value (ptr, &ptr);
                res->data.custom_data.cookie = mono_image_strndup (image, ptr, len);
+               res->data.custom_data.image = parent_image;
        }
 
        if (res->native == MONO_NATIVE_SAFEARRAY) {
index 4b880c7bab42bb5aa733d70d0358604471524b29..0a61a2dc10aca05696f8172783b03c6964c980bf 100644 (file)
@@ -190,6 +190,7 @@ typedef struct {
                struct {
                        char *custom_name;
                        char *cookie;
+                       MonoImage *image;
                } custom_data;
                struct {
                        MonoMarshalVariant elem_type;
index a9a86706f234a79c35762e85c190bd477cc81fc4..7434a69448beab806976b14cc789f8a6c3406e5a 100644 (file)
@@ -3342,7 +3342,7 @@ mono_field_static_get_value_for_thread (MonoInternalThread *thread, MonoVTable *
 void
 mono_field_static_get_value (MonoVTable *vt, MonoClassField *field, void *value)
 {
-       return mono_field_static_get_value_for_thread (mono_thread_internal_current (), vt, field, value);
+       mono_field_static_get_value_for_thread (mono_thread_internal_current (), vt, field, value);
 }
 
 /**
index 9cb2b18f5efb6dcc5d0897f421c056ea97deeb45..089867768b97f2b0c88d2b48fe63c8ba327f74ec 100644 (file)
@@ -7458,7 +7458,7 @@ _mono_reflection_get_type_from_info (MonoTypeNameParse *info, MonoImage *image,
                        assembly = image->assembly;
                if (!assembly) {
                        /* then we must load the assembly ourselve - see #60439 */
-                       assembly = mono_assembly_load (&info->assembly, NULL, NULL);
+                       assembly = mono_assembly_load (&info->assembly, image->assembly->basedir, NULL);
                        if (!assembly)
                                return NULL;
                }
index 6f2909769abb92dfe9aba4a1f5ed2f1433743b94..7ac72db6df04998a4216c84592db8bdb67048f66 100644 (file)
@@ -125,7 +125,7 @@ alloc_degraded (MonoVTable *vtable, size_t size, gboolean for_mature)
                                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "Warning: Repeated degraded allocation.  Consider increasing nursery-size.");
                        last_major_gc_warned = stat_major_gcs;
                }
-               InterlockedExchangeAdd (&degraded_mode, size);
+               SGEN_ATOMIC_ADD_P (degraded_mode, size);
                sgen_ensure_free_space (size);
        } else {
                if (sgen_need_major_collection (size))
@@ -283,7 +283,7 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size)
                        if (degraded_mode && degraded_mode < DEFAULT_NURSERY_SIZE)
                                return alloc_degraded (vtable, size, FALSE);
 
-                       available_in_tlab = TLAB_REAL_END - TLAB_NEXT;
+                       available_in_tlab = (int)(TLAB_REAL_END - TLAB_NEXT);//We'll never have tlabs > 2Gb
                        if (size > tlab_size || available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
                                /* Allocate directly from the nursery */
                                do {
@@ -396,7 +396,7 @@ mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size)
                new_next = (char*)p + size;
 
                real_end = TLAB_REAL_END;
-               available_in_tlab = real_end - (char*)p;
+               available_in_tlab = (int)(real_end - (char*)p);//We'll never have tlabs > 2Gb
 
                if (G_LIKELY (new_next < real_end)) {
                        TLAB_NEXT = new_next;
@@ -454,12 +454,12 @@ void*
 mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
 {
        void *res;
+       TLAB_ACCESS_INIT;
 
        if (!SGEN_CAN_ALIGN_UP (size))
                return NULL;
 
 #ifndef DISABLE_CRITICAL_REGION
-       TLAB_ACCESS_INIT;
 
        if (G_UNLIKELY (has_per_allocation_action)) {
                static int alloc_count;
@@ -498,17 +498,17 @@ void*
 mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length)
 {
        MonoArray *arr;
+       TLAB_ACCESS_INIT;
 
        if (!SGEN_CAN_ALIGN_UP (size))
                return NULL;
 
 #ifndef DISABLE_CRITICAL_REGION
-       TLAB_ACCESS_INIT;
        ENTER_CRITICAL_REGION;
        arr = mono_gc_try_alloc_obj_nolock (vtable, size);
        if (arr) {
                /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/
-               arr->max_length = max_length;
+               arr->max_length = (mono_array_size_t)max_length;
                EXIT_CRITICAL_REGION;
                return arr;
        }
@@ -523,7 +523,7 @@ mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length)
                return mono_gc_out_of_memory (size);
        }
 
-       arr->max_length = max_length;
+       arr->max_length = (mono_array_size_t)max_length;
 
        UNLOCK_GC;
 
@@ -535,17 +535,17 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint
 {
        MonoArray *arr;
        MonoArrayBounds *bounds;
+       TLAB_ACCESS_INIT;
 
        if (!SGEN_CAN_ALIGN_UP (size))
                return NULL;
 
 #ifndef DISABLE_CRITICAL_REGION
-       TLAB_ACCESS_INIT;
        ENTER_CRITICAL_REGION;
        arr = mono_gc_try_alloc_obj_nolock (vtable, size);
        if (arr) {
                /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/
-               arr->max_length = max_length;
+               arr->max_length = (mono_array_size_t)max_length;
 
                bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size);
                arr->bounds = bounds;
@@ -563,7 +563,7 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint
                return mono_gc_out_of_memory (size);
        }
 
-       arr->max_length = max_length;
+       arr->max_length = (mono_array_size_t)max_length;
 
        bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size);
        arr->bounds = bounds;
@@ -577,12 +577,12 @@ void*
 mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len)
 {
        MonoString *str;
+       TLAB_ACCESS_INIT;
 
        if (!SGEN_CAN_ALIGN_UP (size))
                return NULL;
 
 #ifndef DISABLE_CRITICAL_REGION
-       TLAB_ACCESS_INIT;
        ENTER_CRITICAL_REGION;
        str = mono_gc_try_alloc_obj_nolock (vtable, size);
        if (str) {
@@ -997,7 +997,7 @@ create_allocator (int atype)
 
        /*The tlab store must be visible before the the vtable store. This could be replaced with a DDS but doing it with IL would be tricky. */
        mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);
-       mono_mb_emit_op (mb, CEE_MONO_MEMORY_BARRIER, StoreStoreBarrier);
+       mono_mb_emit_op (mb, CEE_MONO_MEMORY_BARRIER, (gpointer)StoreStoreBarrier);
 
        /* *p = vtable; */
        mono_mb_emit_ldloc (mb, p_var);
@@ -1036,7 +1036,7 @@ create_allocator (int atype)
        We must make sure both vtable and max_length are globaly visible before returning to managed land.
        */
        mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);
-       mono_mb_emit_op (mb, CEE_MONO_MEMORY_BARRIER, StoreStoreBarrier);
+       mono_mb_emit_op (mb, CEE_MONO_MEMORY_BARRIER, (gpointer)StoreStoreBarrier);
 
        /* return p */
        mono_mb_emit_ldloc (mb, p_var);
index 51f72fe87a4d770b3145c17336787f3a55c3d135..131bdbee32a66948a702f12c5fac8ecf7b380762 100644 (file)
@@ -238,7 +238,7 @@ sgen_card_table_get_card_data (guint8 *data_dest, mword address, mword cards)
 #endif
        }
 
-       return mask;
+       return mask != 0;
 }
 
 void*
@@ -585,7 +585,7 @@ sgen_cardtable_scan_object (char *obj, mword block_obj_size, guint8 *cards, gboo
                mword obj_size = sgen_par_object_get_size (vt, (MonoObject*)obj);
                char *obj_end = obj + obj_size;
                size_t card_count;
-               int extra_idx = 0;
+               size_t extra_idx = 0;
 
                MonoArray *arr = (MonoArray*)obj;
                mword desc = (mword)klass->element_class->gc_descr;
@@ -624,8 +624,8 @@ LOOP_HEAD:
 
                card_data = find_next_card (card_data, card_data_end);
                for (; card_data < card_data_end; card_data = find_next_card (card_data + 1, card_data_end)) {
-                       int index;
-                       int idx = (card_data - card_base) + extra_idx;
+                       size_t index;
+                       size_t idx = (card_data - card_base) + extra_idx;
                        char *start = (char*)(obj_start + idx * CARD_SIZE_IN_BYTES);
                        char *card_end = start + CARD_SIZE_IN_BYTES;
                        char *first_elem, *elem;
index e084b5ffee18b1f26e6a1b76f10abb3cb8a57a1f..616ca6befc3750e2302ce8d96d83d9de31b072b4 100644 (file)
@@ -160,7 +160,7 @@ static gboolean missing_remsets;
        if (*(ptr) && sgen_ptr_in_nursery ((char*)*(ptr))) { \
                if (!sgen_get_remset ()->find_address ((char*)(ptr)) && !sgen_cement_lookup (*(ptr))) { \
                        SGEN_LOG (0, "Oldspace->newspace reference %p at offset %td in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), ((MonoObject*)(obj))->vtable->klass->name_space, ((MonoObject*)(obj))->vtable->klass->name); \
-                       binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (char*)(ptr) - (char*)(obj), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
+                       binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (int) ((char*)(ptr) - (char*)(obj)), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
                        if (!object_is_pinned (*(ptr)))                                                         \
                                missing_remsets = TRUE;                                                                 \
                }                                                                                                                               \
@@ -220,7 +220,7 @@ is_major_or_los_object_marked (char *obj)
        if (*(ptr) && !sgen_ptr_in_nursery ((char*)*(ptr)) && !is_major_or_los_object_marked ((char*)*(ptr))) { \
                if (!sgen_get_remset ()->find_address_with_cards (start, cards, (char*)(ptr))) { \
                        SGEN_LOG (0, "major->major reference %p at offset %td in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), ((MonoObject*)(obj))->vtable->klass->name_space, ((MonoObject*)(obj))->vtable->klass->name); \
-                       binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (char*)(ptr) - (char*)(obj), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
+                       binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (int) ((char*)(ptr) - (char*)(obj)), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
                        missing_remsets = TRUE;                         \
                }                                                                                                                               \
        }                                                                                                                                       \
@@ -669,7 +669,7 @@ scan_roots_for_specific_ref (MonoObject *key, int root_type)
                        return;
                case ROOT_DESC_COMPLEX: {
                        gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
-                       int bwords = (*bitmap_data) - 1;
+                       int bwords = (int) ((*bitmap_data) - 1);
                        void **start_run = start_root;
                        bitmap_data++;
                        while (bwords-- > 0) {
@@ -761,7 +761,7 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
                        break;
                case ROOT_DESC_COMPLEX: {
                        gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
-                       int bwords = (*bitmap_data) - 1;
+                       int bwords = (int)((*bitmap_data) - 1);
                        void **start_run = start_root;
                        bitmap_data++;
                        while (bwords-- > 0) {
@@ -797,7 +797,7 @@ is_xdomain_ref_allowed (gpointer *ptr, char *obj, MonoDomain *domain)
 {
        MonoObject *o = (MonoObject*)(obj);
        MonoObject *ref = (MonoObject*)*(ptr);
-       int offset = (char*)(ptr) - (char*)o;
+       size_t offset = (char*)(ptr) - (char*)o;
 
        if (o->vtable->klass == mono_defaults.thread_class && offset == G_STRUCT_OFFSET (MonoThread, internal_thread))
                return TRUE;
@@ -846,7 +846,7 @@ check_reference_for_xdomain (gpointer *ptr, char *obj, MonoDomain *domain)
 {
        MonoObject *o = (MonoObject*)(obj);
        MonoObject *ref = (MonoObject*)*(ptr);
-       int offset = (char*)(ptr) - (char*)o;
+       size_t offset = (char*)(ptr) - (char*)o;
        MonoClass *class;
        MonoClassField *field;
        char *str;
@@ -927,6 +927,7 @@ compare_xrefs (const void *a_ptr, const void *b_ptr)
        return 0;
 }
 
+/*
 static void
 dump_processor_state (SgenBridgeProcessor *p)
 {
@@ -951,6 +952,7 @@ dump_processor_state (SgenBridgeProcessor *p)
 
        printf ("-------\n");
 }
+*/
 
 gboolean
 sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcessor *b)
index 1e3bc152e7932f2574fafd13c17fe7b577513c75..c578a91cfb2b1516e3f2076c1b1a4f545498e62e 100644 (file)
@@ -87,7 +87,7 @@ alloc_complex_descriptor (gsize *bitmap, int numbits)
                                return i;
                        }
                }
-               i += complex_descriptors [i];
+               i += (int)complex_descriptors [i];
        }
        if (complex_descriptors_next + nwords > complex_descriptors_size) {
                int new_size = complex_descriptors_size * 2 + nwords;
@@ -266,7 +266,7 @@ mono_gc_get_bitmap_for_descr (void *descr, int *numbits)
 
        case DESC_TYPE_COMPLEX: {
                gsize *bitmap_data = sgen_get_complex_descriptor (d);
-               int bwords = (*bitmap_data) - 1;
+               int bwords = (int)(*bitmap_data) - 1;//Max scalar object size is 1Mb, which means up to 32k descriptor words
                int i;
 
                bitmap = g_new0 (gsize, bwords);
index f07ad4a6ba00b214189b2b51e470daea9ad21ac7..366c7667778a06284f8f27ac2c0692fda29b6347 100644 (file)
@@ -235,7 +235,7 @@ sgen_gc_descr_has_references (mword desc)
                /* there are pointers */        \
                void **_objptr = (void**)(obj); \
                gsize *bitmap_data = sgen_get_complex_descriptor ((desc)); \
-               int bwords = (*bitmap_data) - 1;        \
+               gsize bwords = (*bitmap_data) - 1;      \
                void **start_run = _objptr;     \
                bitmap_data++;  \
                if (0) {        \
@@ -261,8 +261,8 @@ sgen_gc_descr_has_references (mword desc)
 #define OBJ_COMPLEX_ARR_FOREACH_PTR(vt,obj)    do {    \
                /* there are pointers */        \
                gsize *mbitmap_data = sgen_get_complex_descriptor ((vt)->desc); \
-               int mbwords = (*mbitmap_data++) - 1;    \
-               int el_size = mono_array_element_size (vt->klass);      \
+               gsize mbwords = (*mbitmap_data++) - 1;  \
+               gsize el_size = mono_array_element_size (vt->klass);    \
                char *e_start = (char*)(obj) +  G_STRUCT_OFFSET (MonoArray, vector);    \
                char *e_end = e_start + el_size * mono_array_length_fast ((MonoArray*)(obj));   \
                if (0)                                                  \
@@ -270,7 +270,7 @@ sgen_gc_descr_has_references (mword desc)
                while (e_start < e_end) {       \
                        void **_objptr = (void**)e_start;       \
                        gsize *bitmap_data = mbitmap_data;      \
-                       unsigned int bwords = mbwords;  \
+                       gsize bwords = mbwords; \
                        while (bwords-- > 0) {  \
                                gsize _bmap = *bitmap_data++;   \
                                void **start_run = _objptr;     \
index bb350a9e91ffbde1a81bc6a46ab1d8c2f6de801c..3793c9435be4b084f443ac9633bbce498cc61c5f 100644 (file)
@@ -41,7 +41,7 @@ int num_ready_finalizers = 0;
 static int no_finalize = 0;
 
 #define DISLINK_OBJECT(l)      (REVEAL_POINTER (*(void**)(l)))
-#define DISLINK_TRACK(l)       ((~(gulong)(*(void**)(l))) & 1)
+#define DISLINK_TRACK(l)       ((~(size_t)(*(void**)(l))) & 1)
 
 /*
  * The finalizable hash has the object as the key, the 
index 5900dc731a37aea1c46daa43875e27c817437440..7ab1cb6c25b9821a2020b1c03a885728bd53dd36 100644 (file)
@@ -353,6 +353,8 @@ static long long time_major_fragment_creation = 0;
 int gc_debug_level = 0;
 FILE* gc_debug_file;
 
+static MonoGCFinalizerCallbacks fin_callbacks;
+
 /*
 void
 mono_gc_flush_info (void)
@@ -407,7 +409,7 @@ gboolean sgen_try_free_some_memory;
 #define SCAN_START_SIZE        SGEN_SCAN_START_SIZE
 
 static mword pagesize = 4096;
-int degraded_mode = 0;
+size_t degraded_mode = 0;
 
 static mword bytes_pinned_from_failed_allocation = 0;
 
@@ -1018,10 +1020,10 @@ pin_objects_from_addresses (GCMemSection *section, void **start, void **end, voi
 void
 sgen_pin_objects_in_section (GCMemSection *section, ScanCopyContext ctx)
 {
-       int num_entries = section->pin_queue_num_entries;
+       size_t num_entries = section->pin_queue_num_entries;
        if (num_entries) {
                void **start = section->pin_queue_start;
-               int reduced_to;
+               size_t reduced_to;
                reduced_to = pin_objects_from_addresses (section, start, start + num_entries,
                                section->data, section->next_data, ctx);
                section->pin_queue_num_entries = reduced_to;
@@ -1095,15 +1097,15 @@ sgen_parallel_pin_or_update (void **ptr, void *obj, MonoVTable *vt, SgenGrayQueu
  * Done using a by-the book heap sort. Which has decent and stable performance, is pretty cache efficient.
  */
 void
-sgen_sort_addresses (void **array, int size)
+sgen_sort_addresses (void **array, size_t size)
 {
-       int i;
+       size_t i;
        void *tmp;
 
        for (i = 1; i < size; ++i) {
-               int child = i;
+               size_t child = i;
                while (child > 0) {
-                       int parent = (child - 1) / 2;
+                       size_t parent = (child - 1) / 2;
 
                        if (array [parent] >= array [child])
                                break;
@@ -1117,7 +1119,7 @@ sgen_sort_addresses (void **array, int size)
        }
 
        for (i = size - 1; i > 0; --i) {
-               int end, root;
+               size_t end, root;
                tmp = array [i];
                array [i] = array [0];
                array [0] = tmp;
@@ -1126,7 +1128,7 @@ sgen_sort_addresses (void **array, int size)
                root = 0;
 
                while (root * 2 + 1 <= end) {
-                       int child = root * 2 + 1;
+                       size_t child = root * 2 + 1;
 
                        if (child < end && array [child] < array [child + 1])
                                ++child;
@@ -1288,7 +1290,7 @@ precisely_scan_objects_from (void** start_root, void** end_root, char* n_start,
                return;
        case ROOT_DESC_COMPLEX: {
                gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
-               int bwords = (*bitmap_data) - 1;
+               gsize bwords = (*bitmap_data) - 1;
                void **start_run = start_root;
                bitmap_data++;
                while (bwords-- > 0) {
@@ -1476,7 +1478,7 @@ precisely_report_roots_from (GCRootReport *report, void** start_root, void** end
                return;
        case ROOT_DESC_COMPLEX: {
                gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
-               int bwords = (*bitmap_data) - 1;
+               gsize bwords = (*bitmap_data) - 1;
                void **start_run = start_root;
                bitmap_data++;
                while (bwords-- > 0) {
@@ -1719,7 +1721,7 @@ sgen_check_section_scan_starts (GCMemSection *section)
        size_t i;
        for (i = 0; i < section->num_scan_start; ++i) {
                if (section->scan_starts [i]) {
-                       guint size = safe_object_get_size ((MonoObject*) section->scan_starts [i]);
+                       mword size = safe_object_get_size ((MonoObject*) section->scan_starts [i]);
                        g_assert (size >= sizeof (MonoObject) && size <= MAX_SMALL_OBJ_SIZE);
                }
        }
@@ -1821,7 +1823,7 @@ dump_object (MonoObject *obj, gboolean dump_location)
        g_assert (j < sizeof (class_name));
        class_name [j] = 0;
 
-       fprintf (heap_dump_file, "<object class=\"%s.%s\" size=\"%d\"",
+       fprintf (heap_dump_file, "<object class=\"%s.%s\" size=\"%zd\"",
                        class->name_space, class_name,
                        safe_object_get_size (obj));
        if (dump_location) {
@@ -2286,8 +2288,8 @@ collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
 
        TV_GETTIME (atv);
        time_minor_pinning += TV_ELAPSED (btv, atv);
-       SGEN_LOG (2, "Finding pinned pointers: %d in %d usecs", sgen_get_pinned_count (), TV_ELAPSED (btv, atv));
-       SGEN_LOG (4, "Start scan with %d pinned objects", sgen_get_pinned_count ());
+       SGEN_LOG (2, "Finding pinned pointers: %zd in %d usecs", sgen_get_pinned_count (), TV_ELAPSED (btv, atv));
+       SGEN_LOG (4, "Start scan with %zd pinned objects", sgen_get_pinned_count ());
 
        MONO_GC_CHECKPOINT_3 (GENERATION_NURSERY);
 
@@ -2477,7 +2479,7 @@ scan_nursery_objects (ScanCopyContext ctx)
 }
 
 static void
-major_copy_or_mark_from_roots (int *old_next_pin_slot, gboolean finish_up_concurrent_mark, gboolean scan_mod_union)
+major_copy_or_mark_from_roots (size_t *old_next_pin_slot, gboolean finish_up_concurrent_mark, gboolean scan_mod_union)
 {
        LOSObject *bigobj;
        TV_DECLARE (atv);
@@ -2593,7 +2595,7 @@ major_copy_or_mark_from_roots (int *old_next_pin_slot, gboolean finish_up_concur
        /* identify possible pointers to the insize of large objects */
        SGEN_LOG (6, "Pinning from large objects");
        for (bigobj = los_object_list; bigobj; bigobj = bigobj->next) {
-               int dummy;
+               size_t dummy;
                if (sgen_find_optimized_pin_queue_area (bigobj->data, (char*)bigobj->data + sgen_los_object_size (bigobj), &dummy)) {
                        binary_protocol_pin (bigobj->data, (gpointer)LOAD_VTABLE (bigobj->data), safe_object_get_size (((MonoObject*)(bigobj->data))));
 
@@ -2660,8 +2662,8 @@ major_copy_or_mark_from_roots (int *old_next_pin_slot, gboolean finish_up_concur
 
        TV_GETTIME (btv);
        time_major_pinning += TV_ELAPSED (atv, btv);
-       SGEN_LOG (2, "Finding pinned pointers: %d in %d usecs", sgen_get_pinned_count (), TV_ELAPSED (atv, btv));
-       SGEN_LOG (4, "Start scan with %d pinned objects", sgen_get_pinned_count ());
+       SGEN_LOG (2, "Finding pinned pointers: %zd in %d usecs", sgen_get_pinned_count (), TV_ELAPSED (atv, btv));
+       SGEN_LOG (4, "Start scan with %zd pinned objects", sgen_get_pinned_count ());
 
        major_collector.init_to_space ();
 
@@ -2750,7 +2752,7 @@ major_copy_or_mark_from_roots (int *old_next_pin_slot, gboolean finish_up_concur
 }
 
 static void
-major_start_collection (gboolean concurrent, int *old_next_pin_slot)
+major_start_collection (gboolean concurrent, size_t *old_next_pin_slot)
 {
        MONO_GC_BEGIN (GENERATION_OLD);
        binary_protocol_collection_begin (stat_major_gcs, GENERATION_OLD);
@@ -2816,7 +2818,7 @@ join_workers (void)
 }
 
 static void
-major_finish_collection (const char *reason, int old_next_pin_slot, gboolean scan_mod_union)
+major_finish_collection (const char *reason, size_t old_next_pin_slot, gboolean scan_mod_union)
 {
        LOSObject *bigobj, *prevbo;
        TV_DECLARE (atv);
@@ -2977,7 +2979,7 @@ major_do_collection (const char *reason)
 {
        TV_DECLARE (all_atv);
        TV_DECLARE (all_btv);
-       int old_next_pin_slot;
+       size_t old_next_pin_slot;
 
        if (disable_major_collections)
                return FALSE;
@@ -3224,7 +3226,7 @@ sgen_perform_collection (size_t requested_size, int generation_to_collect, const
        /* this also sets the proper pointers for the next allocation */
        if (generation_to_collect == GENERATION_NURSERY && !sgen_can_alloc_size (requested_size)) {
                /* TypeBuilder and MonoMethod are killing mcs with fragmentation */
-               SGEN_LOG (1, "nursery collection didn't find enough room for %zd alloc (%d pinned)", requested_size, sgen_get_pinned_count ());
+               SGEN_LOG (1, "nursery collection didn't find enough room for %zd alloc (%zd pinned)", requested_size, sgen_get_pinned_count ());
                sgen_dump_pin_queue ();
                degraded_mode = 1;
        }
@@ -3352,6 +3354,13 @@ has_critical_finalizer (MonoObject *obj)
        return mono_class_has_parent_fast (class, mono_defaults.critical_finalizer_object);
 }
 
+static gboolean
+is_finalization_aware (MonoObject *obj)
+{
+       MonoVTable *vt = ((MonoVTable*)LOAD_VTABLE (obj));
+       return (vt->gc_bits & SGEN_GC_BIT_FINALIZER_AWARE) == SGEN_GC_BIT_FINALIZER_AWARE;
+}
+
 void
 sgen_queue_finalization_entry (MonoObject *obj)
 {
@@ -3366,6 +3375,9 @@ sgen_queue_finalization_entry (MonoObject *obj)
                fin_ready_list = entry;
        }
 
+       if (fin_callbacks.object_queued_for_finalization && is_finalization_aware (obj))
+               fin_callbacks.object_queued_for_finalization (obj);
+
 #ifdef ENABLE_DTRACE
        if (G_UNLIKELY (MONO_GC_FINALIZE_ENQUEUE_ENABLED ())) {
                int gen = sgen_ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD;
@@ -3734,7 +3746,7 @@ scan_thread_data (void *start_nursery, void *end_nursery, gboolean precise, Gray
                        SGEN_LOG (3, "Skipping non-running thread %p, range: %p-%p, size: %td (state %d)", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start, mono_thread_info_run_state (info));
                        continue;
                }
-               SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %td, pinned=%d", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start, sgen_get_pinned_count ());
+               SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %td, pinned=%zd", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start, sgen_get_pinned_count ());
                if (gc_callbacks.thread_mark_func && !conservative_stack_mark) {
                        UserCopyOrMarkData data = { NULL, queue };
                        set_user_copy_or_mark_data (&data);
@@ -3851,7 +3863,8 @@ sgen_thread_unregister (SgenThreadInfo *p)
        binary_protocol_thread_unregister ((gpointer)tid);
        SGEN_LOG (3, "unregister thread %p (%p)", p, (gpointer)tid);
 
-       mono_threads_add_joinable_thread ((gpointer)tid);
+       if (p->info.runtime_thread)
+               mono_threads_add_joinable_thread ((gpointer)tid);
 
        if (gc_callbacks.thread_detach_func) {
                gc_callbacks.thread_detach_func (p->runtime_data);
@@ -3923,6 +3936,7 @@ mono_gc_pthread_exit (void *retval)
 {
        mono_thread_info_detach ();
        pthread_exit (retval);
+       g_assert_not_reached ();
 }
 
 #endif /* USE_PTHREAD_INTERCEPT */
@@ -4750,13 +4764,13 @@ mono_gc_base_init (void)
 
                                        if (val < SGEN_MAX_NURSERY_WASTE) {
                                                sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.",
-                                                               "`nursery-size` must be at least %d bytes.\n", SGEN_MAX_NURSERY_WASTE);
+                                                               "`nursery-size` must be at least %d bytes.", SGEN_MAX_NURSERY_WASTE);
                                                continue;
                                        }
 
                                        sgen_nursery_size = val;
                                        sgen_nursery_bits = 0;
-                                       while (1 << (++ sgen_nursery_bits) != sgen_nursery_size)
+                                       while (ONE_P << (++ sgen_nursery_bits) != sgen_nursery_size)
                                                ;
 #else
                                        sgen_nursery_size = val;
@@ -5058,7 +5072,7 @@ emit_nursery_check (MonoMethodBuilder *mb, int *nursery_check_return_labels)
        mono_mb_emit_ldarg (mb, 0);
        mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
        mono_mb_emit_byte (mb, CEE_SHR_UN);
-       mono_mb_emit_icon (mb, (mword)sgen_get_nursery_start () >> DEFAULT_NURSERY_BITS);
+       mono_mb_emit_ptr (mb, (gpointer)((mword)sgen_get_nursery_start () >> DEFAULT_NURSERY_BITS));
        nursery_check_return_labels [0] = mono_mb_emit_branch (mb, CEE_BEQ);
 
        if (!major_collector.is_concurrent) {
@@ -5067,7 +5081,7 @@ emit_nursery_check (MonoMethodBuilder *mb, int *nursery_check_return_labels)
                mono_mb_emit_byte (mb, CEE_LDIND_I);
                mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
                mono_mb_emit_byte (mb, CEE_SHR_UN);
-               mono_mb_emit_icon (mb, (mword)sgen_get_nursery_start () >> DEFAULT_NURSERY_BITS);
+               mono_mb_emit_ptr (mb, (gpointer)((mword)sgen_get_nursery_start () >> DEFAULT_NURSERY_BITS));
                nursery_check_return_labels [1] = mono_mb_emit_branch (mb, CEE_BNE_UN);
        }
 #else
@@ -5320,17 +5334,24 @@ sgen_get_remset (void)
 guint
 mono_gc_get_vtable_bits (MonoClass *class)
 {
+       guint res = 0;
        /* FIXME move this to the bridge code */
-       if (!sgen_need_bridge_processing ())
-               return 0;
-       switch (sgen_bridge_class_kind (class)) {
-       case GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS:
-       case GC_BRIDGE_OPAQUE_BRIDGE_CLASS:
-               return SGEN_GC_BIT_BRIDGE_OBJECT;
-       case GC_BRIDGE_OPAQUE_CLASS:
-               return SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT;
+       if (sgen_need_bridge_processing ()) {
+               switch (sgen_bridge_class_kind (class)) {
+               case GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS:
+               case GC_BRIDGE_OPAQUE_BRIDGE_CLASS:
+                       res = SGEN_GC_BIT_BRIDGE_OBJECT;
+                       break;
+               case GC_BRIDGE_OPAQUE_CLASS:
+                       res = SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT;
+                       break;
+               }
        }
-       return 0;
+       if (fin_callbacks.is_class_finalization_aware) {
+               if (fin_callbacks.is_class_finalization_aware (class))
+                       res |= SGEN_GC_BIT_FINALIZER_AWARE;
+       }
+       return res;
 }
 
 void
@@ -5366,4 +5387,13 @@ sgen_timestamp (void)
        return SGEN_TV_ELAPSED (sgen_init_timestamp, timestamp);
 }
 
+void
+mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks)
+{
+       if (callbacks->version != MONO_GC_FINALIZER_EXTENSION_VERSION)
+               g_error ("Invalid finalizer callback version. Expected %d but got %d\n", MONO_GC_FINALIZER_EXTENSION_VERSION, callbacks->version);
+
+       fin_callbacks = *callbacks;
+}
+
 #endif /* HAVE_SGEN_GC */
index 7008cec2f7475c84ba284b327249a739a113d631..5f77d2b638c14265c93325aea90d15543d85949e 100644 (file)
@@ -143,7 +143,7 @@ struct _GCMemSection {
        char **scan_starts;
        /* in major collections indexes in the pin_queue for objects that pin this section */
        void **pin_queue_start;
-       int pin_queue_num_entries;
+       size_t pin_queue_num_entries;
        size_t num_scan_start;
 };
 
@@ -239,13 +239,19 @@ extern int num_ready_finalizers;
 #define SGEN_CAN_ALIGN_UP(s)           ((s) <= SIZE_MAX - (SGEN_ALLOC_ALIGN - 1))
 #define SGEN_ALIGN_UP(s)               (((s)+(SGEN_ALLOC_ALIGN-1)) & ~(SGEN_ALLOC_ALIGN-1))
 
+#if SIZEOF_VOID_P == 4
+#define ONE_P 1
+#else
+#define ONE_P 1ll
+#endif
+
 /*
  * The link pointer is hidden by negating each bit.  We use the lowest
  * bit of the link (before negation) to store whether it needs
  * resurrection tracking.
  */
-#define HIDE_POINTER(p,t)      ((gpointer)(~((gulong)(p)|((t)?1:0))))
-#define REVEAL_POINTER(p)      ((gpointer)((~(gulong)(p))&~3L))
+#define HIDE_POINTER(p,t)      ((gpointer)(~((size_t)(p)|((t)?1:0))))
+#define REVEAL_POINTER(p)      ((gpointer)((~(size_t)(p))&~3L))
 
 #ifdef SGEN_ALIGN_NURSERY
 #define SGEN_PTR_IN_NURSERY(p,bits,start,end)  (((mword)(p) & ~((1 << (bits)) - 1)) == (mword)(start))
@@ -367,6 +373,7 @@ List of what each bit on of the vtable gc bits means.
 enum {
        SGEN_GC_BIT_BRIDGE_OBJECT = 1,
        SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT = 2,
+       SGEN_GC_BIT_FINALIZER_AWARE = 4,
 };
 
 /* the runtime can register areas of memory as roots: we keep two lists of roots,
@@ -490,7 +497,7 @@ void sgen_free_internal (void *addr, int type) MONO_INTERNAL;
 void* sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_failure) MONO_INTERNAL;
 void sgen_free_internal_dynamic (void *addr, size_t size, int type) MONO_INTERNAL;
 
-void** sgen_find_optimized_pin_queue_area (void *start, void *end, int *num) MONO_INTERNAL;
+void** sgen_find_optimized_pin_queue_area (void *start, void *end, size_t *num) MONO_INTERNAL;
 void sgen_find_section_pin_queue_start_end (GCMemSection *section) MONO_INTERNAL;
 void sgen_pin_objects_in_section (GCMemSection *section, ScanCopyContext ctx) MONO_INTERNAL;
 
@@ -498,7 +505,7 @@ void sgen_pin_stats_register_object (char *obj, size_t size);
 void sgen_pin_stats_register_global_remset (char *obj);
 void sgen_pin_stats_print_class_stats (void);
 
-void sgen_sort_addresses (void **array, int size) MONO_INTERNAL;
+void sgen_sort_addresses (void **array, size_t size) MONO_INTERNAL;
 void sgen_add_to_global_remset (gpointer ptr, gpointer obj) MONO_INTERNAL;
 
 int sgen_get_current_collection_generation (void) MONO_INTERNAL;
@@ -559,14 +566,14 @@ Test 1 (compiling corlib):
 #define SGEN_TO_SPACE_GRANULE_IN_BYTES (1 << SGEN_TO_SPACE_GRANULE_BITS)
 
 extern char *sgen_space_bitmap MONO_INTERNAL;
-extern int sgen_space_bitmap_size MONO_INTERNAL;
+extern size_t sgen_space_bitmap_size MONO_INTERNAL;
 
 static inline gboolean
 sgen_nursery_is_to_space (char *object)
 {
-       int idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       int byte = idx / 8;
-       int bit = idx & 0x7;
+       size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       size_t byte = idx / 8;
+       size_t bit = idx & 0x7;
 
        SGEN_ASSERT (4, sgen_ptr_in_nursery (object), "object %p is not in nursery [%p - %p]", object, sgen_get_nursery_start (), sgen_get_nursery_end ());
        SGEN_ASSERT (4, byte < sgen_space_bitmap_size, "byte index %d out of range", byte, sgen_space_bitmap_size);
@@ -604,7 +611,7 @@ typedef struct {
        SgenObjectOperations serial_ops;
        SgenObjectOperations parallel_ops;
 
-       void (*prepare_to_space) (char *to_space_bitmap, int space_bitmap_size);
+       void (*prepare_to_space) (char *to_space_bitmap, size_t space_bitmap_size);
        void (*clear_fragments) (void);
        SgenFragment* (*build_fragments_get_exclude_head) (void);
        void (*build_fragments_release_exclude_head) (void);
@@ -661,8 +668,8 @@ struct _SgenMajorCollector {
        SgenObjectOperations major_ops;
        SgenObjectOperations major_concurrent_ops;
 
-       void* (*alloc_object) (MonoVTable *vtable, int size, gboolean has_references);
-       void* (*par_alloc_object) (MonoVTable *vtable, int size, gboolean has_references);
+       void* (*alloc_object) (MonoVTable *vtable, size_t size, gboolean has_references);
+       void* (*par_alloc_object) (MonoVTable *vtable, size_t size, gboolean has_references);
        void (*free_pinned_object) (char *obj, size_t size);
        void (*iterate_objects) (IterateObjectsFlags flags, IterateObjectCallbackFunc callback, void *data);
        void (*free_non_pinned_object) (char *obj, size_t size);
@@ -685,7 +692,7 @@ struct _SgenMajorCollector {
        gboolean (*ptr_is_in_non_pinned_space) (char *ptr, char **start);
        gboolean (*obj_is_from_pinned_alloc) (char *obj);
        void (*report_pinned_memory_usage) (void);
-       int (*get_num_major_sections) (void);
+       size_t (*get_num_major_sections) (void);
        gboolean (*handle_gc_param) (const char *opt);
        void (*print_gc_param_usage) (void);
        gboolean (*is_worker_thread) (MonoNativeThreadId thread);
@@ -730,7 +737,7 @@ typedef struct {
 
 SgenRemeberedSet *sgen_get_remset (void) MONO_INTERNAL;
 
-static guint /*__attribute__((noinline)) not sure if this hint is a good idea*/
+static mword /*__attribute__((noinline)) not sure if this hint is a good idea*/
 slow_object_get_size (MonoVTable *vtable, MonoObject* o)
 {
        MonoClass *klass = vtable->klass;
@@ -761,7 +768,7 @@ slow_object_get_size (MonoVTable *vtable, MonoObject* o)
  * vtable field, is not intact.  This is necessary for the parallel
  * collector.
  */
-static inline guint
+static inline mword
 sgen_par_object_get_size (MonoVTable *vtable, MonoObject* o)
 {
        mword descr = (mword)vtable->gc_descr;
@@ -788,7 +795,7 @@ sgen_par_object_get_size (MonoVTable *vtable, MonoObject* o)
        return slow_object_get_size (vtable, o);
 }
 
-static inline guint
+static inline mword
 sgen_safe_object_get_size (MonoObject *obj)
 {
        char *forwarded;
@@ -952,7 +959,7 @@ gboolean sgen_los_object_is_pinned (char *obj) MONO_INTERNAL;
 void sgen_clear_nursery_fragments (void) MONO_INTERNAL;
 void sgen_nursery_allocator_prepare_for_pinning (void) MONO_INTERNAL;
 void sgen_nursery_allocator_set_nursery_bounds (char *nursery_start, char *nursery_end) MONO_INTERNAL;
-mword sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, int num_entries, SgenGrayQueue *unpin_queue) MONO_INTERNAL;
+mword sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, size_t num_entries, SgenGrayQueue *unpin_queue) MONO_INTERNAL;
 void sgen_init_nursery_allocator (void) MONO_INTERNAL;
 void sgen_nursery_allocator_init_heavy_stats (void) MONO_INTERNAL;
 void sgen_alloc_init_heavy_stats (void) MONO_INTERNAL;
@@ -1034,7 +1041,7 @@ extern int stat_major_gcs;
 extern guint32 collect_before_allocs;
 extern guint32 verify_before_allocs;
 extern gboolean has_per_allocation_action;
-extern int degraded_mode;
+extern size_t degraded_mode;
 extern int default_nursery_size;
 extern guint32 tlab_size;
 extern NurseryClearPolicy nursery_clear_policy;
@@ -1049,7 +1056,7 @@ extern int do_pin_stats;
 static inline void
 sgen_set_nursery_scan_start (char *p)
 {
-       int idx = (p - (char*)nursery_section->data) / SGEN_SCAN_START_SIZE;
+       size_t idx = (p - (char*)nursery_section->data) / SGEN_SCAN_START_SIZE;
        char *old = nursery_section->scan_starts [idx];
        if (!old || old > p)
                nursery_section->scan_starts [idx] = p;
@@ -1097,10 +1104,8 @@ sgen_dummy_use (gpointer v) {
 #if defined(__GNUC__)
        __asm__ volatile ("" : "=r"(v) : "r"(v));
 #elif defined(_MSC_VER)
-       __asm {
-               mov eax, v;
-               and eax, eax;
-       };
+       static volatile gpointer ptr;
+       ptr = v;
 #else
 #error "Implement sgen_dummy_use for your compiler"
 #endif
index c04da2545f5d69610fc4cc3195105c1cab3b9667..1e38006cac7e198d08b2b89bed5530f9ce236099 100644 (file)
@@ -67,7 +67,7 @@ struct _LOSFreeChunks {
 typedef struct _LOSSection LOSSection;
 struct _LOSSection {
        LOSSection *next;
-       int num_free_chunks;
+       size_t num_free_chunks;
        unsigned char *free_chunk_map;
 };
 
@@ -143,7 +143,7 @@ los_consistency_check (void)
 static void
 add_free_chunk (LOSFreeChunks *free_chunks, size_t size)
 {
-       int num_chunks = size >> LOS_CHUNK_BITS;
+       size_t num_chunks = size >> LOS_CHUNK_BITS;
 
        free_chunks->size = size;
 
@@ -158,7 +158,8 @@ get_from_size_list (LOSFreeChunks **list, size_t size)
 {
        LOSFreeChunks *free_chunks = NULL;
        LOSSection *section;
-       int num_chunks, i, start_index;
+       size_t i, num_chunks, start_index;
+
 
        g_assert ((size & (LOS_CHUNK_SIZE - 1)) == 0);
 
@@ -198,7 +199,7 @@ get_los_section_memory (size_t size)
 {
        LOSSection *section;
        LOSFreeChunks *free_chunks;
-       int num_chunks;
+       size_t num_chunks;
 
        size += LOS_CHUNK_SIZE - 1;
        size &= ~(LOS_CHUNK_SIZE - 1);
@@ -212,7 +213,7 @@ get_los_section_memory (size_t size)
        if (num_chunks >= LOS_NUM_FAST_SIZES) {
                free_chunks = get_from_size_list (&los_fast_free_lists [0], size);
        } else {
-               int i;
+               size_t i;
                for (i = num_chunks; i < LOS_NUM_FAST_SIZES; ++i) {
                        free_chunks = get_from_size_list (&los_fast_free_lists [i], size);
                        if (free_chunks)
@@ -257,7 +258,7 @@ static void
 free_los_section_memory (LOSObject *obj, size_t size)
 {
        LOSSection *section = LOS_SECTION_FOR_OBJ (obj);
-       int num_chunks, i, start_index;
+       size_t num_chunks, i, start_index;
 
        size += LOS_CHUNK_SIZE - 1;
        size &= ~(LOS_CHUNK_SIZE - 1);
index d409df5872006bf170475f5ee9b875a83e76e981..fda177a07d4c2b267a697f2b45b37f8112100692 100755 (executable)
@@ -83,7 +83,7 @@ typedef struct _MSBlockInfo MSBlockInfo;
 struct _MSBlockInfo {
        int obj_size;
        int obj_size_index;
-       int pin_queue_num_entries;
+       size_t pin_queue_num_entries;
        unsigned int pinned : 1;
        unsigned int has_references : 1;
        unsigned int has_pinned : 1;    /* means cannot evacuate */
@@ -130,10 +130,12 @@ typedef struct {
 #define MS_BLOCK_FOR_OBJ(o)            (((MSBlockHeader*)MS_BLOCK_DATA_FOR_OBJ ((o)))->info)
 #endif
 
-#define MS_BLOCK_OBJ_INDEX(o,b)        (((char*)(o) - ((b)->block + MS_BLOCK_SKIP)) / (b)->obj_size)
+/* object index will always be small */
+#define MS_BLOCK_OBJ_INDEX(o,b)        ((int)(((char*)(o) - ((b)->block + MS_BLOCK_SKIP)) / (b)->obj_size))
 
+//casting to int is fine since blocks are 32k
 #define MS_CALC_MARK_BIT(w,b,o)        do {                            \
-               int i = ((char*)(o) - MS_BLOCK_DATA_FOR_OBJ ((o))) >> SGEN_ALLOC_ALIGN_BITS; \
+               int i = ((int)((char*)(o) - MS_BLOCK_DATA_FOR_OBJ ((o)))) >> SGEN_ALLOC_ALIGN_BITS; \
                if (sizeof (mword) == 4) {                              \
                        (w) = i >> 5;                                   \
                        (b) = i & 31;                                   \
@@ -143,11 +145,11 @@ typedef struct {
                }                                                       \
        } while (0)
 
-#define MS_MARK_BIT(bl,w,b)    ((bl)->mark_words [(w)] & (1L << (b)))
-#define MS_SET_MARK_BIT(bl,w,b)        ((bl)->mark_words [(w)] |= (1L << (b)))
+#define MS_MARK_BIT(bl,w,b)    ((bl)->mark_words [(w)] & (ONE_P << (b)))
+#define MS_SET_MARK_BIT(bl,w,b)        ((bl)->mark_words [(w)] |= (ONE_P << (b)))
 #define MS_PAR_SET_MARK_BIT(was_marked,bl,w,b) do {                    \
                mword __old = (bl)->mark_words [(w)];                   \
-               mword __bitmask = 1L << (b);                            \
+               mword __bitmask = ONE_P << (b);                         \
                if (__old & __bitmask) {                                \
                        was_marked = TRUE;                              \
                        break;                                          \
@@ -187,9 +189,9 @@ static LOCK_DECLARE (ms_block_list_mutex);
 #endif
 
 static gboolean *evacuate_block_obj_sizes;
-static float evacuation_threshold = 0.666;
+static float evacuation_threshold = 0.666f;
 #ifdef SGEN_HAVE_CONCURRENT_MARK
-static float concurrent_evacuation_threshold = 0.666;
+static float concurrent_evacuation_threshold = 0.666f;
 static gboolean want_evacuation = FALSE;
 #endif
 
@@ -209,13 +211,13 @@ static MSBlockInfo *empty_blocks = NULL;
 #else
 /* non-allocated block free-list */
 static void *empty_blocks = NULL;
-static int num_empty_blocks = 0;
+static size_t num_empty_blocks = 0;
 #endif
 
 #define FOREACH_BLOCK(bl)      for ((bl) = all_blocks; (bl); (bl) = (bl)->next) {
 #define END_FOREACH_BLOCK      }
 
-static int num_major_sections = 0;
+static size_t num_major_sections = 0;
 /* one free block list for each block object size */
 static MSBlockInfo **free_block_lists [MS_BLOCK_TYPE_MAX];
 
@@ -250,7 +252,7 @@ static void
 sweep_block (MSBlockInfo *block, gboolean during_major_collection);
 
 static int
-ms_find_block_obj_size_index (int size)
+ms_find_block_obj_size_index (size_t size)
 {
        int i;
        SGEN_ASSERT (9, size <= SGEN_MAX_SMALL_OBJ_SIZE, "size %d is bigger than max small object size %d", size, SGEN_MAX_SMALL_OBJ_SIZE);
@@ -397,7 +399,7 @@ ms_get_empty_block (void)
                        p += MS_BLOCK_SIZE;
                }
 
-               SGEN_ATOMIC_ADD (num_empty_blocks, alloc_num);
+               SGEN_ATOMIC_ADD_P (num_empty_blocks, alloc_num);
 
                stat_major_blocks_alloced += alloc_num;
 #if SIZEOF_VOID_P != 8
@@ -414,7 +416,7 @@ ms_get_empty_block (void)
                next = *(void**)block;
        } while (SGEN_CAS_PTR (&empty_blocks, next, empty) != empty);
 
-       SGEN_ATOMIC_ADD (num_empty_blocks, -1);
+       SGEN_ATOMIC_ADD_P (num_empty_blocks, -1);
 
        *(void**)block = NULL;
 
@@ -436,7 +438,7 @@ ms_free_block (void *block)
                *(void**)block = empty;
        } while (SGEN_CAS_PTR (&empty_blocks, block, empty) != empty);
 
-       SGEN_ATOMIC_ADD (num_empty_blocks, 1);
+       SGEN_ATOMIC_ADD_P (num_empty_blocks, 1);
 }
 #endif
 
@@ -476,7 +478,7 @@ check_empty_blocks (void)
 {
 #ifndef FIXED_HEAP
        void *p;
-       int i = 0;
+       size_t i = 0;
        for (p = empty_blocks; p; p = *(void**)p)
                ++i;
        g_assert (i == num_empty_blocks);
@@ -728,14 +730,14 @@ alloc_obj_par (MonoVTable *vtable, int size, gboolean pinned, gboolean has_refer
 }
 
 static void*
-major_par_alloc_object (MonoVTable *vtable, int size, gboolean has_references)
+major_par_alloc_object (MonoVTable *vtable, size_t size, gboolean has_references)
 {
        return alloc_obj_par (vtable, size, FALSE, has_references);
 }
 #endif
 
 static void*
-alloc_obj (MonoVTable *vtable, int size, gboolean pinned, gboolean has_references)
+alloc_obj (MonoVTable *vtable, size_t size, gboolean pinned, gboolean has_references)
 {
        int size_index = MS_BLOCK_OBJ_SIZE_INDEX (size);
        MSBlockInfo **free_blocks = FREE_BLOCKS (pinned, has_references);
@@ -759,7 +761,7 @@ alloc_obj (MonoVTable *vtable, int size, gboolean pinned, gboolean has_reference
 }
 
 static void*
-major_alloc_object (MonoVTable *vtable, int size, gboolean has_references)
+major_alloc_object (MonoVTable *vtable, size_t size, gboolean has_references)
 {
        return alloc_obj (vtable, size, FALSE, has_references);
 }
@@ -831,7 +833,7 @@ static void*
 major_alloc_degraded (MonoVTable *vtable, size_t size)
 {
        void *obj;
-       int old_num_sections;
+       size_t old_num_sections;
 
        old_num_sections = num_major_sections;
 
@@ -1812,7 +1814,7 @@ ms_calculate_block_obj_sizes (double factor, int *arr)
        int last_size = 0;
 
        do {
-               int target_count = ceil (MS_BLOCK_FREE / target_size);
+               int target_count = (int)ceil (MS_BLOCK_FREE / target_size);
                int size = MIN ((MS_BLOCK_FREE / target_count) & ~(SGEN_ALLOC_ALIGN - 1), SGEN_MAX_SMALL_OBJ_SIZE);
 
                if (size != last_size) {
@@ -1829,7 +1831,7 @@ ms_calculate_block_obj_sizes (double factor, int *arr)
 }
 
 /* only valid during minor collections */
-static int old_num_major_sections;
+static mword old_num_major_sections;
 
 static void
 major_start_nursery_collection (void)
@@ -1904,7 +1906,7 @@ static void
 major_have_computer_minor_collection_allowance (void)
 {
 #ifndef FIXED_HEAP
-       int section_reserve = sgen_get_minor_collection_allowance () / MS_BLOCK_SIZE;
+       size_t section_reserve = sgen_get_minor_collection_allowance () / MS_BLOCK_SIZE;
 
        g_assert (have_swept);
 
@@ -2105,7 +2107,7 @@ major_get_used_size (void)
        return size;
 }
 
-static int
+static size_t
 get_num_major_sections (void)
 {
        return num_major_sections;
@@ -2132,7 +2134,7 @@ major_handle_gc_param (const char *opt)
                        fprintf (stderr, "evacuation-threshold must be an integer in the range 0-100.\n");
                        exit (1);
                }
-               evacuation_threshold = (float)percentage / 100.0;
+               evacuation_threshold = (float)percentage / 100.0f;
                return TRUE;
        } else if (!strcmp (opt, "lazy-sweep")) {
                lazy_sweep = TRUE;
@@ -2283,7 +2285,7 @@ major_scan_card_table (gboolean mod_union, SgenGrayQueue *queue)
                        base = sgen_card_table_align_pointer (obj);
 
                        while (obj < end) {
-                               int card_offset;
+                               size_t card_offset;
 
                                if (!block->swept)
                                        sweep_block (block, FALSE);
@@ -2337,8 +2339,8 @@ major_scan_card_table (gboolean mod_union, SgenGrayQueue *queue)
                        card_data_end = card_data + CARDS_PER_BLOCK;
 
                        for (card_data = initial_skip_card (card_data); card_data < card_data_end; ++card_data) { //card_data = skip_card (card_data + 1, card_data_end)) {
-                               int index;
-                               int idx = card_data - card_base;
+                               size_t index;
+                               size_t idx = card_data - card_base;
                                char *start = (char*)(block_start + idx * CARD_SIZE_IN_BYTES);
                                char *end = start + CARD_SIZE_IN_BYTES;
                                char *first_obj, *obj;
index 2081de4fc736e9221bd63035330c4354e2a27326..448ebef3f05ff0df0ebabe70767c76c197de9a30 100644 (file)
@@ -57,14 +57,14 @@ static gboolean debug_print_allowance = FALSE;
 /* use this to tune when to do a major/minor collection */
 static mword memory_pressure = 0;
 static mword minor_collection_allowance;
-static int minor_collection_sections_alloced = 0;
+static mword minor_collection_sections_alloced = 0;
 
-static int last_major_num_sections = 0;
-static int last_los_memory_usage = 0;
+static mword last_major_num_sections = 0;
+static mword last_los_memory_usage = 0;
 
 static gboolean need_calculate_minor_collection_allowance;
 
-static int last_collection_old_num_major_sections;
+static mword last_collection_old_num_major_sections;
 static mword last_collection_los_memory_usage = 0;
 static mword last_collection_old_los_memory_usage;
 static mword last_collection_los_memory_alloced;
@@ -85,7 +85,7 @@ double_to_mword_with_saturation (double value)
 static void
 sgen_memgov_try_calculate_minor_collection_allowance (gboolean overwrite)
 {
-       int num_major_sections, num_major_sections_saved;
+       size_t num_major_sections, num_major_sections_saved;
        mword los_memory_saved, new_major, new_heap_size, save_target, allowance_target;
 
        if (overwrite)
@@ -210,7 +210,7 @@ static void
 log_timming (GGTimingInfo *info)
 {
        //unsigned long stw_time, unsigned long bridge_time, gboolean is_overflow
-       int num_major_sections = major_collector.get_num_major_sections ();
+       mword num_major_sections = major_collector.get_num_major_sections ();
        char full_timing_buff [1024];
        full_timing_buff [0] = '\0';
 
@@ -248,7 +248,7 @@ sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count)
 }
 
 void
-sgen_register_major_sections_alloced (int num_sections)
+sgen_register_major_sections_alloced (size_t num_sections)
 {
        minor_collection_sections_alloced += num_sections;
 }
@@ -342,7 +342,7 @@ sgen_free_os_memory (void *addr, size_t size, SgenAllocFlags flags)
        g_assert (!(flags & ~SGEN_ALLOC_HEAP));
 
        mono_vfree (addr, size);
-       SGEN_ATOMIC_ADD_P (total_alloc, -size);
+       SGEN_ATOMIC_ADD_P (total_alloc, -(gssize)size);
        if (flags & SGEN_ALLOC_HEAP)
                MONO_GC_HEAP_FREE ((mword)addr, size);
 }
@@ -369,7 +369,7 @@ sgen_memgov_available_free_space (void)
 void
 sgen_memgov_release_space (mword size, int space)
 {
-       SGEN_ATOMIC_ADD_P (allocated_heap, -size);
+       SGEN_ATOMIC_ADD_P (allocated_heap, -(gssize)size);
 }
 
 gboolean
index 497ecb05765c715798ff213d4745f0398c3e19cb..fffe906f5bfedf4ed97d0ad4e6916fb77fd05304 100644 (file)
@@ -39,7 +39,7 @@ void sgen_memgov_major_collection_end (void) MONO_INTERNAL;
 void sgen_memgov_collection_start (int generation) MONO_INTERNAL;
 void sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count) MONO_INTERNAL;
 
-void sgen_register_major_sections_alloced (int num_sections) MONO_INTERNAL;
+void sgen_register_major_sections_alloced (size_t num_sections) MONO_INTERNAL;
 mword sgen_get_minor_collection_allowance (void) MONO_INTERNAL;
 gboolean sgen_need_major_collection (mword space_needed) MONO_INTERNAL;
 
index 437f61a4d084a343d2c854ee2b4a2a8058fa9829..ad486c0c47fbc256c713d18788d37abd68c648e7 100644 (file)
@@ -262,11 +262,13 @@ dyn_array_int_size (DynIntArray *da)
        return da->array.size;
 }
 
+#ifdef NEW_XREFS
 static void
 dyn_array_int_empty (DynIntArray *da)
 {
        dyn_array_empty (&da->array);
 }
+#endif
 
 static void
 dyn_array_int_add (DynIntArray *da, int x)
@@ -281,17 +283,13 @@ dyn_array_int_get (DynIntArray *da, int x)
        return ((int*)da->array.data)[x];
 }
 
+#ifdef NEW_XREFS
 static void
 dyn_array_int_set (DynIntArray *da, int idx, int val)
 {
        ((int*)da->array.data)[idx] = val;
 }
-
-static void
-dyn_array_int_ensure_capacity (DynIntArray *da, int capacity)
-{
-       dyn_array_ensure_capacity (&da->array, capacity, sizeof (int));
-}
+#endif
 
 static void
 dyn_array_int_ensure_independent (DynIntArray *da)
@@ -428,6 +426,7 @@ dyn_array_scc_get_ptr (DynSCCArray *da, int x)
 
 static DynIntArray merge_array;
 
+#ifdef NEW_XREFS
 static gboolean
 dyn_array_int_contains (DynIntArray *da, int x)
 {
@@ -437,12 +436,14 @@ dyn_array_int_contains (DynIntArray *da, int x)
                        return TRUE;
        return FALSE;
 }
+#endif
 
 static void
 enable_accounting (void)
 {
+       SgenHashTable table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_HASH_TABLE, INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntryWithAccounting), mono_aligned_addr_hash, NULL);
        bridge_accounting_enabled = TRUE;
-       hash_table = (SgenHashTable)SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_HASH_TABLE, INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntryWithAccounting), mono_aligned_addr_hash, NULL);
+       hash_table = table;
 }
 
 static MonoGCBridgeObjectKind
@@ -880,8 +881,8 @@ dump_graph (void)
 
        MonoObject *obj;
        HashEntry *entry;
-       int prefix_len = strlen (dump_prefix);
-       char filename [prefix_len + 64];
+       size_t prefix_len = strlen (dump_prefix);
+       char *filename = alloca(prefix_len + 64);
        FILE *file;
        int edge_id = 0;
 
index 51b5bc6f8f5bdcf777210cf2f19882ff7b525d02..4ac1aa0c21160e36f2ae76b9ca3c1d1dfb2645e7 100644 (file)
@@ -108,7 +108,7 @@ int sgen_nursery_bits = 22;
 #endif
 
 char *sgen_space_bitmap MONO_INTERNAL;
-int sgen_space_bitmap_size MONO_INTERNAL;
+size_t sgen_space_bitmap_size MONO_INTERNAL;
 
 #ifdef HEAVY_STATISTICS
 
@@ -414,7 +414,7 @@ par_alloc_from_fragment (SgenFragmentAllocator *allocator, SgenFragment *frag, s
                                /*frag->next read must happen before the first CAS*/
                                mono_memory_write_barrier ();
 
-                               /*Fail if the next done is removed concurrently and its CAS wins */
+                               /*Fail if the next node is removed concurrently and its CAS wins */
                                if (InterlockedCompareExchangePointer ((volatile gpointer*)&frag->next, mask (next, 1), next) != next) {
                                        continue;
                                }
@@ -424,7 +424,7 @@ par_alloc_from_fragment (SgenFragmentAllocator *allocator, SgenFragment *frag, s
                        mono_memory_write_barrier ();
 
                        /* Fail if the previous node was deleted and its CAS wins */
-                       if (InterlockedCompareExchangePointer ((volatile gpointer*)prev_ptr, next, frag) != frag) {
+                       if (InterlockedCompareExchangePointer ((volatile gpointer*)prev_ptr, unmask (next), frag) != frag) {
                                prev_ptr = find_previous_pointer_fragment (allocator, frag);
                                continue;
                        }
@@ -471,7 +471,7 @@ restart:
        for (frag = unmask (allocator->alloc_head); unmask (frag); frag = unmask (frag->next)) {
                HEAVY_STAT (InterlockedIncrement (&stat_alloc_iterations));
 
-               if (size <= (frag->fragment_end - frag->fragment_next)) {
+               if (size <= (size_t)(frag->fragment_end - frag->fragment_next)) {
                        void *p = par_alloc_from_fragment (allocator, frag, size);
                        if (!p) {
                                HEAVY_STAT (InterlockedIncrement (&stat_alloc_retries));
@@ -579,7 +579,7 @@ restart:
 #endif
 
        for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
-               int frag_size = frag->fragment_end - frag->fragment_next;
+               size_t frag_size = frag->fragment_end - frag->fragment_next;
 
                HEAVY_STAT (InterlockedIncrement (&stat_alloc_range_iterations));
 
@@ -608,7 +608,7 @@ restart:
 
        if (min_frag) {
                void *p;
-               int frag_size;
+               size_t frag_size;
 
                frag_size = min_frag->fragment_end - min_frag->fragment_next;
                if (frag_size < minimum_size)
@@ -685,7 +685,7 @@ sgen_clear_range (char *start, char *end)
        /* Mark this as not a real object */
        o->obj.synchronisation = GINT_TO_POINTER (-1);
        o->bounds = NULL;
-       o->max_length = size - sizeof (MonoArray);
+       o->max_length = (mono_array_size_t)(size - sizeof (MonoArray));
        sgen_set_nursery_scan_start (start);
        g_assert (start + sgen_safe_object_get_size ((MonoObject*)o) == end);
 }
@@ -745,11 +745,11 @@ fragment_list_reverse (SgenFragmentAllocator *allocator)
 }
 
 mword
-sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, int num_entries, SgenGrayQueue *unpin_queue)
+sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, size_t num_entries, SgenGrayQueue *unpin_queue)
 {
        char *frag_start, *frag_end;
        size_t frag_size;
-       int i = 0;
+       size_t i = 0;
        SgenFragment *frags_ranges;
 
 #ifdef NALLOC_DEBUG
@@ -827,9 +827,9 @@ sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start, int n
        sgen_minor_collector.build_fragments_finish (&mutator_allocator);
 
        if (!unmask (mutator_allocator.alloc_head)) {
-               SGEN_LOG (1, "Nursery fully pinned (%d)", num_entries);
+               SGEN_LOG (1, "Nursery fully pinned (%zd)", num_entries);
                for (i = 0; i < num_entries; ++i) {
-                       SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %d", start [i], sgen_safe_name (start [i]), sgen_safe_object_get_size (start [i]));
+                       SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", start [i], sgen_safe_name (start [i]), sgen_safe_object_get_size (start [i]));
                }
        }
        return fragment_total;
@@ -860,7 +860,7 @@ sgen_can_alloc_size (size_t size)
        size = SGEN_ALIGN_UP (size);
 
        for (frag = unmask (mutator_allocator.alloc_head); frag; frag = unmask (frag->next)) {
-               if ((frag->fragment_end - frag->fragment_next) >= size)
+               if ((size_t)(frag->fragment_end - frag->fragment_next) >= size)
                        return TRUE;
        }
        return FALSE;
@@ -938,7 +938,12 @@ sgen_nursery_allocator_set_nursery_bounds (char *start, char *end)
        sgen_nursery_start = start;
        sgen_nursery_end = end;
 
-       sgen_space_bitmap_size = (end - start) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8);
+       /*
+        * This will not divide evenly for tiny nurseries (<4kb), so we make sure to be on
+        * the right side of things and round up.  We could just do a MIN(1,x) instead,
+        * since the nursery size must be a power of 2.
+        */
+       sgen_space_bitmap_size = (end - start + SGEN_TO_SPACE_GRANULE_IN_BYTES * 8 - 1) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8);
        sgen_space_bitmap = g_malloc0 (sgen_space_bitmap_size);
 
        /* Setup the single first large fragment */
index de2933f77957379a3b7ee6a64ea4d100737218ca..42a588164df379f3827988052145f1590e7ceee2 100644 (file)
@@ -396,8 +396,9 @@ dyn_array_int_merge_one (DynIntArray *array, int value)
 static void
 enable_accounting (void)
 {
+       SgenHashTable table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_HASH_TABLE, INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntryWithAccounting), mono_aligned_addr_hash, NULL);
        bridge_accounting_enabled = TRUE;
-       hash_table = (SgenHashTable)SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_HASH_TABLE, INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntryWithAccounting), mono_aligned_addr_hash, NULL);
+       hash_table = table;
 }
 
 static MonoGCBridgeObjectKind
index d0a38ef426eb94b8b90c82bcedd4490e3fc35ce2..85ee6e9f40016398d1d57fc7bc676abfe99e64e3 100644 (file)
@@ -27,9 +27,9 @@
 #include "metadata/sgen-protocol.h"
 
 static void** pin_queue;
-static int pin_queue_size = 0;
-static int next_pin_slot = 0;
-static int last_num_pinned = 0;
+static size_t pin_queue_size = 0;
+static size_t next_pin_slot = 0;
+static size_t last_num_pinned = 0;
 
 #define PIN_HASH_SIZE 1024
 static void *pin_hash_filter [PIN_HASH_SIZE];
@@ -50,13 +50,13 @@ sgen_finish_pinning (void)
 static void
 realloc_pin_queue (void)
 {
-       int new_size = pin_queue_size? pin_queue_size + pin_queue_size/2: 1024;
+       size_t new_size = pin_queue_size? pin_queue_size + pin_queue_size/2: 1024;
        void **new_pin = sgen_alloc_internal_dynamic (sizeof (void*) * new_size, INTERNAL_MEM_PIN_QUEUE, TRUE);
        memcpy (new_pin, pin_queue, sizeof (void*) * next_pin_slot);
        sgen_free_internal_dynamic (pin_queue, sizeof (void*) * pin_queue_size, INTERNAL_MEM_PIN_QUEUE);
        pin_queue = new_pin;
        pin_queue_size = new_size;
-       SGEN_LOG (4, "Reallocated pin queue to size: %d", new_size);
+       SGEN_LOG (4, "Reallocated pin queue to size: %zd", new_size);
 }
 
 void
@@ -75,12 +75,12 @@ sgen_pin_stage_ptr (void *ptr)
        pin_queue [next_pin_slot++] = ptr;
 }
 
-static int
+static size_t
 optimized_pin_queue_search (void *addr)
 {
-       int first = 0, last = next_pin_slot;
+       size_t first = 0, last = next_pin_slot;
        while (first < last) {
-               int middle = first + ((last - first) >> 1);
+               size_t middle = first + ((last - first) >> 1);
                if (addr <= pin_queue [middle])
                        last = middle;
                else
@@ -91,9 +91,9 @@ optimized_pin_queue_search (void *addr)
 }
 
 void**
-sgen_find_optimized_pin_queue_area (void *start, void *end, int *num)
+sgen_find_optimized_pin_queue_area (void *start, void *end, size_t *num)
 {
-       int first, last;
+       size_t first, last;
        first = optimized_pin_queue_search (start);
        last = optimized_pin_queue_search (end);
        *num = last - first;
@@ -107,7 +107,7 @@ sgen_find_section_pin_queue_start_end (GCMemSection *section)
 {
        SGEN_LOG (6, "Pinning from section %p (%p-%p)", section, section->data, section->end_data);
        section->pin_queue_start = sgen_find_optimized_pin_queue_area (section->data, section->end_data, &section->pin_queue_num_entries);
-       SGEN_LOG (6, "Found %d pinning addresses in section %p", section->pin_queue_num_entries, section);
+       SGEN_LOG (6, "Found %zd pinning addresses in section %p", section->pin_queue_num_entries, section);
 }
 
 /*This will setup the given section for the while pin queue. */
@@ -125,7 +125,7 @@ sgen_pinning_trim_queue_to_section (GCMemSection *section)
 }
 
 void
-sgen_pin_queue_clear_discarded_entries (GCMemSection *section, int max_pin_slot)
+sgen_pin_queue_clear_discarded_entries (GCMemSection *section, size_t max_pin_slot)
 {
        void **start = section->pin_queue_start + section->pin_queue_num_entries;
        void **end = pin_queue + max_pin_slot;
@@ -144,12 +144,12 @@ sgen_pin_queue_clear_discarded_entries (GCMemSection *section, int max_pin_slot)
 
 /* reduce the info in the pin queue, removing duplicate pointers and sorting them */
 void
-sgen_optimize_pin_queue (int start_slot)
+sgen_optimize_pin_queue (size_t start_slot)
 {
        void **start, **cur, **end;
        /* sort and uniq pin_queue: we just sort and we let the rest discard multiple values */
        /* it may be better to keep ranges of pinned memory instead of individually pinning objects */
-       SGEN_LOG (5, "Sorting pin queue, size: %d", next_pin_slot);
+       SGEN_LOG (5, "Sorting pin queue, size: %zd", next_pin_slot);
        if ((next_pin_slot - start_slot) > 1)
                sgen_sort_addresses (pin_queue + start_slot, next_pin_slot - start_slot);
        start = cur = pin_queue + start_slot;
@@ -161,10 +161,10 @@ sgen_optimize_pin_queue (int start_slot)
                start++;
        };
        next_pin_slot = start - pin_queue;
-       SGEN_LOG (5, "Pin queue reduced to size: %d", next_pin_slot);
+       SGEN_LOG (5, "Pin queue reduced to size: %zd", next_pin_slot);
 }
 
-int
+size_t
 sgen_get_pinned_count (void)
 {
        return next_pin_slot;
@@ -176,7 +176,7 @@ sgen_dump_pin_queue (void)
        int i;
 
        for (i = 0; i < last_num_pinned; ++i) {
-               SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %d", pin_queue [i], sgen_safe_name (pin_queue [i]), sgen_safe_object_get_size (pin_queue [i]));
+               SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", pin_queue [i], sgen_safe_name (pin_queue [i]), sgen_safe_object_get_size (pin_queue [i]));
        }       
 }
 
@@ -311,7 +311,7 @@ sgen_cement_lookup_or_register (char *obj)
                                        vt->klass->name_space, vt->klass->name);
                }
                binary_protocol_cement (obj, (gpointer)SGEN_LOAD_VTABLE (obj),
-                               sgen_safe_object_get_size ((MonoObject*)obj));
+                               (int)sgen_safe_object_get_size ((MonoObject*)obj));
        }
 
        return FALSE;
index f141cd683994109966f48bf7729ae9da434c4af2..ef41df24d2f688fb7688c7f8e202faf2a7305673 100644 (file)
@@ -28,11 +28,11 @@ enum {
 };
 
 void sgen_pin_stage_ptr (void *ptr) MONO_INTERNAL;
-void sgen_optimize_pin_queue (int start_slot) MONO_INTERNAL;
+void sgen_optimize_pin_queue (size_t start_slot) MONO_INTERNAL;
 void sgen_init_pinning (void) MONO_INTERNAL;
 void sgen_finish_pinning (void) MONO_INTERNAL;
-void sgen_pin_queue_clear_discarded_entries (GCMemSection *section, int max_pin_slot) MONO_INTERNAL;
-int sgen_get_pinned_count (void) MONO_INTERNAL;
+void sgen_pin_queue_clear_discarded_entries (GCMemSection *section, size_t max_pin_slot) MONO_INTERNAL;
+size_t sgen_get_pinned_count (void) MONO_INTERNAL;
 void sgen_pinning_setup_section (GCMemSection *section) MONO_INTERNAL;
 void sgen_pinning_trim_queue_to_section (GCMemSection *section) MONO_INTERNAL;
 
index 3a0c57e02249f2b40713e80d35ffb9388c357bec..f2f7066c3015cd39600027fbf558087d69fc7636 100644 (file)
@@ -58,7 +58,7 @@ build_fragments_finish (SgenFragmentAllocator *allocator)
 }
 
 static void
-prepare_to_space (char *to_space_bitmap, int space_bitmap_size)
+prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
 {
 }
 
index fc741cfc05b65a2a8b200c5eea1c8c9733187348..1f62d14b703ffde9313db161f868f9f80adba1d1 100644 (file)
@@ -139,7 +139,7 @@ static float alloc_ratio = 60.f/100.f;
 
 
 static char *region_age;
-static int region_age_size;
+static size_t region_age_size;
 static AgeAllocationBuffer age_alloc_buffers [MAX_AGE];
 
 /* The collector allocs from here. */
@@ -150,14 +150,14 @@ static LOCK_DECLARE (par_alloc_buffer_refill_mutex);
 static inline int
 get_object_age (char *object)
 {
-       int idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
        return region_age [idx];
 }
 
 static inline void
 set_object_age (char *object, int age)
 {
-       int idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
        region_age [idx] = age;
 }
 
@@ -165,7 +165,7 @@ static void
 set_age_in_range (char *start, char *end, int age)
 {
        char *region_start;
-       int region_idx, length;
+       size_t region_idx, length;
        region_idx = (start - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
        region_start = &region_age [region_idx];
        length = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS;
@@ -175,8 +175,8 @@ set_age_in_range (char *start, char *end, int age)
 static inline void
 mark_bit (char *space_bitmap, char *pos)
 {
-       int idx = (pos - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       int byte = idx / 8;
+       size_t idx = (pos - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       size_t byte = idx / 8;
        int bit = idx & 0x7;
 
        g_assert (byte < sgen_space_bitmap_size);
@@ -420,7 +420,7 @@ build_fragments_finish (SgenFragmentAllocator *allocator)
 }
 
 static void
-prepare_to_space (char *to_space_bitmap, int space_bitmap_size)
+prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
 {
        SgenFragment **previous, *frag;
 
index fec1d697ca27c4e3eaf92fef781b2356351a0bae..59013f70124aa832120f3c0a2216964bea45e1f4 100644 (file)
@@ -67,14 +67,6 @@ typedef struct {
 
 /* private */
 
-static void
-dyn_array_init (DynArray *da)
-{
-       da->size = 0;
-       da->capacity = 0;
-       da->data = NULL;
-}
-
 static void
 dyn_array_uninit (DynArray *da, int elem_size)
 {
@@ -121,12 +113,6 @@ dyn_array_add (DynArray *da, int elem_size)
 
 /* ptr */
 
-static void
-dyn_array_ptr_init (DynPtrArray *da)
-{
-       dyn_array_init (&da->array);
-}
-
 static void
 dyn_array_ptr_uninit (DynPtrArray *da)
 {
@@ -390,10 +376,10 @@ retry:
 static void
 free_color_buckets (void)
 {
-       color_data_count = 0;
-
        ColorBucket *cur, *tmp;
 
+       color_data_count = 0;
+
        for (cur = root_color_bucket; cur; cur = tmp) {
                ColorData *cd;
                for (cd = &cur->data [0]; cd < cur->next_data; ++cd) {
@@ -461,6 +447,7 @@ bridge_object_forward (MonoObject *obj)
        return fwd ? fwd : obj;
 }
 
+#ifdef DUMP_GRAPH
 static const char*
 safe_name_bridge (MonoObject *obj)
 {
@@ -476,7 +463,7 @@ find_or_create_data (MonoObject *obj)
                entry = create_data (obj);
        return entry;
 }
-
+#endif
 
 //----------
 typedef struct {
@@ -502,7 +489,7 @@ static HashEntry merge_cache [COLOR_CACHE_SIZE][ELEMENTS_PER_BUCKET];
 static int
 mix_hash (size_t hash)
 {
-       return ((hash * 215497) >> 16) ^ (hash * 1823231) + hash;
+       return (int)(((hash * 215497) >> 16) ^ ((hash * 1823231) + hash));
 }
 
 static void
@@ -908,6 +895,7 @@ cleanup (void)
        num_colors_with_bridges = 0;
 }
 
+#ifdef DUMP_GRAPH
 static void
 dump_color_table (const char *why, gboolean do_index)
 {
@@ -938,6 +926,7 @@ dump_color_table (const char *why, gboolean do_index)
        }
 
 }
+#endif
 
 static gint64
 step_timer (gint64 *timer)
@@ -1036,16 +1025,6 @@ reset_xrefs (ColorData *color)
        }
 }
 
-static mono_bool
-is_bridge_object_alive (MonoObject *obj, void *data)
-{
-       SgenHashTable *table = data;
-       unsigned char *value = sgen_hash_table_lookup (table, obj);
-       if (!value)
-               return TRUE;
-       return *value;
-}
-
 static void
 processing_build_callback_data (int generation)
 {
index 9eb952f18ced93bb79222b391f007d62676ccf45..a2fc6e4517f1ecb6cef787babf0ad9e4baea3239 100755 (executable)
@@ -721,6 +721,12 @@ create_thread (MonoThread *thread, MonoInternalThread *internal, StartInfo *star
        MonoNativeThreadId tid;
        guint32 create_flags;
 
+       /*
+        * Join joinable threads to prevent running out of threads since the finalizer
+        * thread might be blocked/backlogged.
+        */
+       mono_threads_join_threads ();
+
        mono_threads_lock ();
        if (shutting_down) {
                g_free (start_info);
@@ -1339,7 +1345,7 @@ mono_wait_uninterrupted (MonoInternalThread *thread, gboolean multiple, guint32
                        continue;
 
                /* Re-calculate ms according to the time passed */
-               diff_ms = (mono_100ns_ticks () - start) / 10000;
+               diff_ms = (gint32)((mono_100ns_ticks () - start) / 10000);
                if (diff_ms >= ms) {
                        ret = WAIT_TIMEOUT;
                        break;
@@ -1363,7 +1369,8 @@ gboolean ves_icall_System_Threading_WaitHandle_WaitAll_internal(MonoArray *mono_
        /* Do this WaitSleepJoin check before creating objects */
        mono_thread_current_check_pending_interrupt ();
 
-       numhandles = mono_array_length(mono_handles);
+       /* We fail in managed if the array has more than 64 elements */
+       numhandles = (guint32)mono_array_length(mono_handles);
        handles = g_new0(HANDLE, numhandles);
 
        for(i = 0; i < numhandles; i++) {       
@@ -1398,7 +1405,7 @@ gboolean ves_icall_System_Threading_WaitHandle_WaitAll_internal(MonoArray *mono_
 gint32 ves_icall_System_Threading_WaitHandle_WaitAny_internal(MonoArray *mono_handles, gint32 ms, gboolean exitContext)
 {
        HANDLE handles [MAXIMUM_WAIT_OBJECTS];
-       guint32 numhandles;
+       uintptr_t numhandles;
        guint32 ret;
        guint32 i;
        MonoObject *waitHandle;
@@ -1991,7 +1998,7 @@ static void signal_thread_state_change (MonoInternalThread *thread)
        }
 
 #ifdef HOST_WIN32
-       QueueUserAPC ((PAPCFUNC)interruption_request_apc, thread->handle, NULL);
+       QueueUserAPC ((PAPCFUNC)interruption_request_apc, thread->handle, (ULONG_PTR)NULL);
 #else
        /* 
         * This will cause waits to be broken.
@@ -3740,6 +3747,12 @@ search_tls_slot_in_freelist (StaticDataInfo *static_data, guint32 size, guint32
        return NULL;
 }
 
+#if SIZEOF_VOID_P == 4
+#define ONE_P 1
+#else
+#define ONE_P 1ll
+#endif
+
 static void
 update_tls_reference_bitmap (guint32 offset, uintptr_t *bitmap, int numbits)
 {
@@ -3753,8 +3766,8 @@ update_tls_reference_bitmap (guint32 offset, uintptr_t *bitmap, int numbits)
        offset /= sizeof (gpointer);
        /* offset is now the bitmap offset */
        for (i = 0; i < numbits; ++i) {
-               if (bitmap [i / sizeof (uintptr_t)] & (1L << (i & (sizeof (uintptr_t) * 8 -1))))
-                       rb [(offset + i) / (sizeof (uintptr_t) * 8)] |= (1L << ((offset + i) & (sizeof (uintptr_t) * 8 -1)));
+               if (bitmap [i / sizeof (uintptr_t)] & (ONE_P << (i & (sizeof (uintptr_t) * 8 -1))))
+                       rb [(offset + i) / (sizeof (uintptr_t) * 8)] |= (ONE_P << ((offset + i) & (sizeof (uintptr_t) * 8 -1)));
        }
 }
 
@@ -4167,7 +4180,7 @@ mono_thread_request_interruption (gboolean running_managed)
                   or similar */
                /* Our implementation of this function ignores the func argument */
 #ifdef HOST_WIN32
-               QueueUserAPC ((PAPCFUNC)dummy_apc, thread->handle, NULL);
+               QueueUserAPC ((PAPCFUNC)dummy_apc, thread->handle, (ULONG_PTR)NULL);
 #else
                wapi_self_interrupt ();
 #endif
@@ -4555,7 +4568,6 @@ abort_thread_internal (MonoInternalThread *thread, gboolean can_raise_exception,
                        mono_thread_info_setup_async_call (info, self_interrupt_thread, NULL);
                mono_thread_info_finish_suspend_and_resume (info);
        } else {
-               gpointer interrupt_handle;
                /* 
                 * This will cause waits to be broken.
                 * It will also prevent the thread from entering a wait, so if the thread returns
@@ -4564,6 +4576,7 @@ abort_thread_internal (MonoInternalThread *thread, gboolean can_raise_exception,
                 * make it return.
                 */
 #ifndef HOST_WIN32
+               gpointer interrupt_handle;
                interrupt_handle = wapi_prepare_interrupt_thread (thread->handle);
 #endif
                mono_thread_info_finish_suspend_and_resume (info);
@@ -4622,7 +4635,9 @@ suspend_thread_internal (MonoInternalThread *thread, gboolean interrupt)
                if (running_managed && !protected_wrapper) {
                        transition_to_suspended (thread, info);
                } else {
+#ifndef HOST_WIN32
                        gpointer interrupt_handle;
+#endif
 
                        if (InterlockedCompareExchange (&thread->interruption_requested, 1, 0) == 0)
                                InterlockedIncrement (&thread_interruption_requested);
index 3c29b116e4c5522eb4a9176455a8c10ee2d8a9c2..b23a830dbcba02f8f2613f96c052ac10499044f9 100644 (file)
@@ -306,8 +306,8 @@ enum {
 
 #ifdef ENABLE_VERIFIER_STATS
 
-#define MEM_ALLOC(amt) do { allocated_memory += (amt); working_set += (amt); } while (0)
-#define MEM_FREE(amt) do { working_set -= (amt); } while (0)
+#define _MEM_ALLOC(amt) do { allocated_memory += (amt); working_set += (amt); } while (0)
+#define _MEM_FREE(amt) do { working_set -= (amt); } while (0)
 
 static int allocated_memory;
 static int working_set;
@@ -338,8 +338,8 @@ init_verifier_stats (void)
 
 #else
 
-#define MEM_ALLOC(amt) do {} while (0)
-#define MEM_FREE(amt) do { } while (0)
+#define _MEM_ALLOC(amt) do {} while (0)
+#define _MEM_FREE(amt) do { } while (0)
 
 #define finish_collect_stats()
 #define init_verifier_stats()
@@ -378,7 +378,7 @@ static MonoType *
 mono_type_create_fnptr_from_mono_method (VerifyContext *ctx, MonoMethod *method)
 {
        MonoType *res = g_new0 (MonoType, 1);
-       MEM_ALLOC (sizeof (MonoType));
+       _MEM_ALLOC (sizeof (MonoType));
 
        //FIXME use mono_method_get_signature_full
        res->data.method = mono_method_signature (method);
@@ -1500,13 +1500,13 @@ ensure_stack_size (ILCodeDesc *stack, int required)
        g_assert (new_size >= required);
 
        tmp = g_new0 (ILStackDesc, new_size);
-       MEM_ALLOC (sizeof (ILStackDesc) * new_size);
+       _MEM_ALLOC (sizeof (ILStackDesc) * new_size);
 
        if (stack->stack) {
                if (stack->size)
                        memcpy (tmp, stack->stack, stack->size * sizeof (ILStackDesc));
                g_free (stack->stack);
-               MEM_FREE (sizeof (ILStackDesc) * stack->max_size);
+               _MEM_FREE (sizeof (ILStackDesc) * stack->max_size);
        }
 
        stack->stack = tmp;
@@ -3219,9 +3219,10 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
                if (constrained && virtual) {
                        if (!stack_slot_is_managed_pointer (value))
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Object is not a managed pointer for a constrained call at 0x%04x", ctx->ip_offset));
-                       if (!mono_metadata_type_equal_full (mono_type_get_type_byval (value->type), ctx->constrained_type, TRUE))
+                       if (!mono_metadata_type_equal_full (mono_type_get_type_byval (value->type), mono_type_get_underlying_type (ctx->constrained_type), TRUE))
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Object not compatible with constrained type at 0x%04x", ctx->ip_offset));
                        copy.stype |= BOXED_MASK;
+                       copy.type = ctx->constrained_type;
                } else {
                        if (stack_slot_is_managed_pointer (value) && !mono_class_from_mono_type (value->type)->valuetype)
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot call a reference type using a managed pointer to the this arg at 0x%04x", ctx->ip_offset));
@@ -4850,19 +4851,19 @@ mono_method_verify (MonoMethod *method, int level)
 
        ctx.code = g_new (ILCodeDesc, ctx.header->code_size);
        ctx.code_size = ctx.header->code_size;
-       MEM_ALLOC (sizeof (ILCodeDesc) * ctx.header->code_size);
+       _MEM_ALLOC (sizeof (ILCodeDesc) * ctx.header->code_size);
 
        memset(ctx.code, 0, sizeof (ILCodeDesc) * ctx.header->code_size);
 
        ctx.num_locals = ctx.header->num_locals;
        ctx.locals = g_memdup (ctx.header->locals, sizeof (MonoType*) * ctx.header->num_locals);
-       MEM_ALLOC (sizeof (MonoType*) * ctx.header->num_locals);
+       _MEM_ALLOC (sizeof (MonoType*) * ctx.header->num_locals);
 
        if (ctx.num_locals > 0 && !ctx.header->init_locals)
                CODE_NOT_VERIFIABLE (&ctx, g_strdup_printf ("Method with locals variable but without init locals set"));
 
        ctx.params = g_new (MonoType*, ctx.max_args);
-       MEM_ALLOC (sizeof (MonoType*) * ctx.max_args);
+       _MEM_ALLOC (sizeof (MonoType*) * ctx.max_args);
 
        if (ctx.signature->hasthis)
                ctx.params [0] = method->klass->valuetype ? &method->klass->this_arg : &method->klass->byval_arg;
@@ -5002,7 +5003,7 @@ mono_method_verify (MonoMethod *method, int level)
 
        while (ip < end && ctx.valid) {
                int op_size;
-               ip_offset = ip - code_start;
+               ip_offset = (guint) (ip - code_start);
                {
                        const unsigned char *ip_copy = ip;
                        int op;
@@ -5033,7 +5034,7 @@ mono_method_verify (MonoMethod *method, int level)
                        }
                }
 
-               ctx.ip_offset = ip_offset = ip - code_start;
+               ctx.ip_offset = ip_offset =  (guint) (ip - code_start);
 
                /*We need to check against fallthrou in and out of protected blocks.
                 * For fallout we check the once a protected block ends, if the start flag is not set.
index 59569b46563ffd6d0a1b832feb1a0c35a6d557cc..660d9da1e047dc3b061ee8766037e0b85f83c1b1 100644 (file)
@@ -7259,9 +7259,9 @@ emit_code (MonoAotCompile *acfg)
                        fprintf (acfg->fp, "    .no_dead_strip %s\n", symbol);
 
                for (i = 0; i < acfg->nmethods; ++i) {
+#ifdef MONO_ARCH_AOT_SUPPORTED
                        int call_size;
 
-#ifdef MONO_ARCH_AOT_SUPPORTED
                        if (acfg->cfgs [i])
                                arch_emit_direct_call (acfg, acfg->cfgs [i]->asm_symbol, FALSE, acfg->thumb_mixed && acfg->cfgs [i]->compile_llvm, NULL, &call_size);
                        else
@@ -7318,7 +7318,9 @@ emit_code (MonoAotCompile *acfg)
                method = cfg->orig_method;
 
                if (acfg->aot_opts.full_aot && cfg->orig_method->klass->valuetype) {
+#ifdef MONO_ARCH_AOT_SUPPORTED
                        int call_size;
+#endif
 
                        index = get_method_index (acfg, method);
                        sprintf (symbol, "ut_%d", index);
index 7ba90850d7ab0f8e6174274e103bf0a83f466dbd..af436f531a1d212a960242567f205d4c5f6efe57 100644 (file)
@@ -3353,10 +3353,10 @@ load_method (MonoDomain *domain, MonoAotModule *amodule, MonoImage *image, MonoM
                                method = mono_get_method (image, token, NULL);
                        if (method) {
                                char *name = mono_method_full_name (method, TRUE);
-                               printf ("LAST AOT METHOD: %s.\n", name);
+                               g_print ("LAST AOT METHOD: %s.\n", name);
                                g_free (name);
                        } else {
-                               printf ("LAST AOT METHOD: %p %d\n", code, method_index);
+                               g_print ("LAST AOT METHOD: %p %d\n", code, method_index);
                        }
                }
        }
index 41cb62405cb82a0137e5573c04d5d677786123a4..bc3a617e181a09d58ec189dd14a64492dcf8b157 100644 (file)
@@ -129,12 +129,12 @@ class Tests
                return pass_bytes (0, 1, 2, 3, 4, 5, 6);
        }
 
-       static int pass_sbytes (sbyte a, sbyte b, sbyte c, sbyte d, sbyte e, sbyte f, sbyte g) {
-               return (int)(a + b + c + d + e + f + g);
+       static int pass_sbytes (sbyte a, sbyte b, sbyte c, sbyte d, sbyte e, sbyte f, sbyte g, sbyte h1, sbyte h2, sbyte h3, sbyte h4) {
+               return (int)(a + b + c + d + e + f + g + h1 + h2 + h3 + h4);
        }
 
-       public static int test_21_sparc_sbyte_argument_passing () {
-               return pass_sbytes (0, 1, 2, 3, 4, 5, 6);
+       public static int test_55_sparc_sbyte_argument_passing () {
+               return pass_sbytes (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        }
 
        static int pass_shorts (short a, short b, short c, short d, short e, short f, short g) {
index f21320cabdeb72f61bf3f32bf977f6d57e5c1fc4..e8f83655fc85ed4841e679f7692f4014c141bed7 100644 (file)
@@ -313,4 +313,4 @@ vcall2_membase: src1:b len:16 clob:c
 
 jump_table: dest:i len:8
 
-atomic_cas_i4: src1:b src2:i src3:i dest:i len:30
+atomic_cas_i4: src1:b src2:i src3:i dest:i len:38
index 4bf27a306eeb686ea491db234ee474803a2a92cc..889af55b4a20c48c9abb60afd2f6aa6219706c08 100644 (file)
@@ -383,5 +383,5 @@ jump_table: dest:i len:20
 atomic_add_new_i4: src1:b src2:i dest:i len:20
 atomic_add_new_i8: src1:b src2:i dest:i len:20
 
-atomic_cas_i4: src1:b src2:i src3:i dest:i len:30
-atomic_cas_i8: src1:b src2:i src3:i dest:i len:30
+atomic_cas_i4: src1:b src2:i src3:i dest:i len:38
+atomic_cas_i8: src1:b src2:i src3:i dest:i len:38
index be6a3509d1d1f13c5e8a88a455ecdc80d2f8717e..4bcfa33bafb2cd66d333fb7905f849918e1045c6 100644 (file)
@@ -118,11 +118,11 @@ float_conv_to_i2: dest:i src1:f len:50
 float_conv_to_i4: dest:i src1:f len:50
 float_conv_to_i8: dest:l src1:f len:50
 float_conv_to_i: dest:i src1:f len:52
-float_conv_to_r4: dest:f src1:f len:4
-float_conv_to_u1: dest:i src1:f len:66
-float_conv_to_u2: dest:i src1:f len:66
-float_conv_to_u4: dest:i src1:f len:66
-float_conv_to_u8: dest:i src1:f len:66
+float_conv_to_r4: dest:f src1:f len:8
+float_conv_to_u1: dest:i src1:f len:72
+float_conv_to_u2: dest:i src1:f len:72
+float_conv_to_u4: dest:i src1:f len:72
+float_conv_to_u8: dest:i src1:f len:72
 float_conv_to_u: dest:i src1:f len:36
 float_div: dest:f src1:f src2:f len:6
 float_div_un: dest:f src1:f src2:f len:6
@@ -135,27 +135,25 @@ float_sub: dest:f src1:f src2:f len:6
 fmove: dest:f src1:f len:4
 i8const: dest:i len:20
 icompare: src1:i src2:i len:4
-icompare_imm: src1:i len:14
+icompare_imm: src1:i len:18
 iconst: dest:i len:40
-
-
 jmp: len:46
 label: len:0
 lcall: dest:o len:22 clob:c
 lcall_membase: dest:o src1:b len:12 clob:c
 lcall_reg: dest:o src1:i len:8 clob:c
 lcompare: src1:i src2:i len:4
-load_membase: dest:i src1:b len:26
+load_membase: dest:i src1:b len:30
 loadi1_membase: dest:i src1:b len:40
-loadi2_membase: dest:i src1:b len:26
-loadi4_membase: dest:i src1:b len:26
-loadi8_membase: dest:i src1:b len:26
+loadi2_membase: dest:i src1:b len:30
+loadi4_membase: dest:i src1:b len:30
+loadi8_membase: dest:i src1:b len:30
 loadr4_membase: dest:f src1:b len:28
 loadr8_membase: dest:f src1:b len:28
-loadu1_membase: dest:i src1:b len:26
-loadu2_membase: dest:i src1:b len:26
+loadu1_membase: dest:i src1:b len:30
+loadu2_membase: dest:i src1:b len:30
 loadu4_mem: dest:i len:8
-loadu4_membase: dest:i src1:b len:26
+loadu4_membase: dest:i src1:b len:30
 localloc: dest:i src1:i len:106
 memory_barrier: len: 10
 move: dest:i src1:i len:4
@@ -177,7 +175,7 @@ s390_move: len:48 dest:b src1:b
 s390_setf4ret: dest:f src1:f len:4
 sbb: dest:i src1:i src2:i len:6
 sbb_imm: dest:i src1:i len:14
-seq_point: len:36
+seq_point: len:54
 sext_i4: dest:i src1:i len:4
 zext_i4: dest:i src1:i len:4
 shl_imm: dest:i src1:i len:10
index b239ed0e765f40303b93c9b69231189fde888ee1..cc14b0dc15242e27aa0660633372f0ee2aed7479 100644 (file)
@@ -149,7 +149,7 @@ call_membase: dest:a src1:b len:16 nacl:18 clob:c
 iconst: dest:i len:5
 r4const: dest:f len:15
 r8const: dest:f len:16
-store_membase_imm: dest:b len:10
+store_membase_imm: dest:b len:11
 store_membase_reg: dest:b src1:i len:7
 storei1_membase_imm: dest:b len:10
 storei1_membase_reg: dest:b src1:y len:7
index 0c809062b867bb0d739c3a2c329f70bc6a7e53a8..d9032db69a637e93dac7f3e27af43a8318df4b5d 100644 (file)
@@ -47,6 +47,7 @@
 #ifdef HOST_WIN32
 #ifdef _MSC_VER
 #include <winsock2.h>
+#include <process.h>
 #endif
 #include <ws2tcpip.h>
 #ifdef __GNUC__
@@ -356,7 +357,8 @@ typedef enum {
        MOD_KIND_STEP = 10,
        MOD_KIND_ASSEMBLY_ONLY = 11,
        MOD_KIND_SOURCE_FILE_ONLY = 12,
-       MOD_KIND_TYPE_NAME_ONLY = 13
+       MOD_KIND_TYPE_NAME_ONLY = 13,
+       MOD_KIND_NONE = 14
 } ModifierKind;
 
 typedef enum {
@@ -677,6 +679,7 @@ static gboolean embedding;
 static FILE *log_file;
 
 /* Assemblies whose assembly load event has no been sent yet */
+/* Protected by the dbg lock */
 static GPtrArray *pending_assembly_loads;
 
 /* Whenever the debugger thread has exited */
@@ -718,6 +721,10 @@ static gboolean buffer_replies;
 static ReplyPacket reply_packets [128];
 int nreply_packets;
 
+#define dbg_lock() EnterCriticalSection (&debug_mutex)
+#define dbg_unlock() LeaveCriticalSection (&debug_mutex)
+static CRITICAL_SECTION debug_mutex;
+
 static void transport_init (void);
 static void transport_connect (const char *address);
 static gboolean transport_handshake (void);
@@ -952,6 +959,8 @@ mono_debugger_agent_parse_options (char *options)
 void
 mono_debugger_agent_init (void)
 {
+       InitializeCriticalSection (&debug_mutex);
+
        if (!agent_config.enabled)
                return;
 
@@ -1893,6 +1902,9 @@ typedef struct {
 
 /* Maps objid -> ObjRef */
 static GHashTable *objrefs;
+static GHashTable *obj_to_objref;
+/* Protected by the dbg lock */
+static MonoGHashTable *suspended_objs;
 
 static void
 free_objref (gpointer value)
@@ -1908,6 +1920,9 @@ static void
 objrefs_init (void)
 {
        objrefs = g_hash_table_new_full (NULL, NULL, NULL, free_objref);
+       obj_to_objref = g_hash_table_new (NULL, NULL);
+       suspended_objs = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_KEY_GC);
+       MONO_GC_REGISTER_ROOT_FIXED (suspended_objs);
 }
 
 static void
@@ -1917,9 +1932,6 @@ objrefs_cleanup (void)
        objrefs = NULL;
 }
 
-static GHashTable *obj_to_objref;
-static MonoGHashTable *suspended_objs;
-
 /*
  * Return an ObjRef for OBJ.
  */
@@ -1933,20 +1945,16 @@ get_objref (MonoObject *obj)
        if (obj == NULL)
                return 0;
 
-       mono_loader_lock ();
-
-       if (!obj_to_objref) {
-               obj_to_objref = g_hash_table_new (NULL, NULL);
-               suspended_objs = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_KEY_GC);
-               MONO_GC_REGISTER_ROOT_FIXED (suspended_objs);
-       }
-
        if (suspend_count) {
                /*
                 * Have to keep object refs created during suspensions alive for the duration of the suspension, so GCs during invokes don't collect them.
                 */
+               dbg_lock ();
                mono_g_hash_table_insert (suspended_objs, obj, NULL);
+               dbg_unlock ();
        }
+
+       mono_loader_lock ();
        
        /* FIXME: The tables can grow indefinitely */
 
@@ -2002,9 +2010,9 @@ true_pred (gpointer key, gpointer value, gpointer user_data)
 static void
 clear_suspended_objs (void)
 {
-       mono_loader_lock ();
+       dbg_lock ();
        mono_g_hash_table_foreach_remove (suspended_objs, true_pred, NULL);
-       mono_loader_unlock ();
+       dbg_unlock ();
 }
 
 static inline int
@@ -2120,6 +2128,7 @@ typedef struct {
 } AgentDomainInfo;
 
 /* Maps id -> Id */
+/* Protected by the dbg lock */
 static GPtrArray *ids [ID_NUM];
 
 static void
@@ -2187,6 +2196,7 @@ mono_debugger_agent_free_domain_info (MonoDomain *domain)
        domain_jit_info (domain)->agent_info = NULL;
 
        /* Clear ids referencing structures in the domain */
+       dbg_lock ();
        for (i = 0; i < ID_NUM; ++i) {
                if (ids [i]) {
                        for (j = 0; j < ids [i]->len; ++j) {
@@ -2196,6 +2206,7 @@ mono_debugger_agent_free_domain_info (MonoDomain *domain)
                        }
                }
        }
+       dbg_unlock ();
 
        mono_loader_lock ();
        g_hash_table_remove (domains, domain);
@@ -2248,6 +2259,8 @@ get_id (MonoDomain *domain, IdType type, gpointer val)
                return id->id;
        }
 
+       dbg_lock ();
+
        id = g_new0 (Id, 1);
        /* Reserve id 0 */
        id->id = ids [type]->len + 1;
@@ -2255,10 +2268,11 @@ get_id (MonoDomain *domain, IdType type, gpointer val)
        id->data.val = val;
 
        g_hash_table_insert (info->val_to_id [type], val, id);
+       g_ptr_array_add (ids [type], id);
 
-       mono_domain_unlock (domain);
+       dbg_unlock ();
 
-       g_ptr_array_add (ids [type], id);
+       mono_domain_unlock (domain);
 
        mono_loader_unlock ();
 
@@ -2280,11 +2294,11 @@ decode_ptr_id (guint8 *buf, guint8 **endbuf, guint8 *limit, IdType type, MonoDom
                return NULL;
 
        // FIXME: error handling
-       mono_loader_lock ();
+       dbg_lock ();
        g_assert (id > 0 && id <= ids [type]->len);
 
        res = g_ptr_array_index (ids [type], GPOINTER_TO_INT (id - 1));
-       mono_loader_unlock ();
+       dbg_unlock ();
 
        if (res->domain == NULL) {
                DEBUG (0, fprintf (log_file, "ERR_UNLOADED, id=%d, type=%d.\n", id, type));
@@ -2696,7 +2710,9 @@ notify_thread (gpointer key, gpointer value, gpointer user_data)
        MonoInternalThread *thread = key;
        DebuggerTlsData *tls = value;
        gsize tid = thread->tid;
+#ifndef HOST_WIN32
        int res;
+#endif
 
        if (GetCurrentThreadId () == tid || tls->terminated)
                return;
@@ -2723,7 +2739,7 @@ notify_thread (gpointer key, gpointer value, gpointer user_data)
 
        /* This is _not_ equivalent to ves_icall_System_Threading_Thread_Abort () */
 #ifdef HOST_WIN32
-       QueueUserAPC (notify_thread_apc, thread->handle, NULL);
+       QueueUserAPC (notify_thread_apc, thread->handle, (ULONG_PTR)NULL);
 #else
        if (mono_thread_info_new_interrupt_enabled ()) {
                MonoThreadInfo *info;
@@ -2945,7 +2961,9 @@ invalidate_frames (DebuggerTlsData *tls)
 static void
 suspend_current (void)
 {
+#ifndef HOST_WIN32
        int err;
+#endif
        DebuggerTlsData *tls;
 
        g_assert (debugger_thread_id != GetCurrentThreadId ());
@@ -4056,9 +4074,9 @@ static void
 assembly_load (MonoProfiler *prof, MonoAssembly *assembly, int result)
 {
        /* Sent later in jit_end () */
-       mono_loader_lock ();
+       dbg_lock ();
        g_ptr_array_add (pending_assembly_loads, assembly);
-       mono_loader_unlock ();
+       dbg_unlock ();
 }
 
 static void
@@ -4179,12 +4197,12 @@ jit_end (MonoProfiler *prof, MonoMethod *method, MonoJitInfo *jinfo, int result)
                MonoAssembly *assembly = NULL;
 
                // FIXME: Maybe store this in TLS so the thread of the event is correct ?
-               mono_loader_lock ();
+               dbg_lock ();
                if (pending_assembly_loads->len > 0) {
                        assembly = g_ptr_array_index (pending_assembly_loads, 0);
                        g_ptr_array_remove_index (pending_assembly_loads, 0);
                }
-               mono_loader_unlock ();
+               dbg_unlock ();
 
                if (assembly) {
                        process_profiler_event (EVENT_KIND_ASSEMBLY_LOAD, assembly);
@@ -4312,9 +4330,12 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
 
        g_ptr_array_add (bp->children, inst);
 
+       mono_loader_unlock ();
+
+       dbg_lock ();
        count = GPOINTER_TO_INT (g_hash_table_lookup (bp_locs, inst->ip));
        g_hash_table_insert (bp_locs, inst->ip, GINT_TO_POINTER (count + 1));
-       mono_loader_unlock ();
+       dbg_unlock ();
 
        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));
@@ -4326,7 +4347,7 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
 #endif
        }
 
-       DEBUG(1, fprintf (log_file, "[dbg] Inserted breakpoint at %s:0x%x.\n", mono_method_full_name (jinfo_get_method (ji), TRUE), (int)sp->il_offset));       
+       DEBUG(1, fprintf (log_file, "[dbg] Inserted breakpoint at %s:0x%x [%p](%d).\n", mono_method_full_name (jinfo_get_method (ji), TRUE), (int)sp->il_offset, inst->ip, count));
 }
 
 static void
@@ -4337,15 +4358,16 @@ remove_breakpoint (BreakpointInstance *inst)
        MonoJitInfo *ji = inst->ji;
        guint8 *ip = inst->ip;
 
-       mono_loader_lock ();
+       dbg_lock ();
        count = GPOINTER_TO_INT (g_hash_table_lookup (bp_locs, ip));
        g_hash_table_insert (bp_locs, ip, GINT_TO_POINTER (count - 1));
-       mono_loader_unlock ();
+       dbg_unlock ();
 
        g_assert (count > 0);
 
        if (count == 1 && inst->native_offset != SEQ_POINT_NATIVE_OFFSET_DEAD_CODE) {
                mono_arch_clear_breakpoint (ji, ip);
+               DEBUG(1, fprintf (log_file, "[dbg] Clear breakpoint at %s [%p].\n", mono_method_full_name (jinfo_get_method (ji), TRUE), ip));
        }
 #else
        NOT_IMPLEMENTED;
@@ -5412,6 +5434,25 @@ ss_destroy (SingleStepReq *req)
        ss_req = NULL;
 }
 
+static void
+ss_clear_for_assembly (SingleStepReq *req, MonoAssembly *assembly)
+{
+       GSList *l;
+       gboolean found = TRUE;
+
+       while (found) {
+               found = FALSE;
+               for (l = ss_req->bps; l; l = l->next) {
+                       if (breakpoint_matches_assembly (l->data, assembly)) {
+                               clear_breakpoint (l->data);
+                               ss_req->bps = g_slist_delete_link (ss_req->bps, l);
+                               found = TRUE;
+                               break;
+                       }
+               }
+       }
+}
+
 /*
  * Called from metadata by the icall for System.Diagnostics.Debugger:Log ().
  */
@@ -6311,28 +6352,47 @@ clear_event_request (int req_id, int etype)
        mono_loader_unlock ();
 }
 
-static gboolean
-event_req_matches_assembly (EventRequest *req, MonoAssembly *assembly)
+static void
+clear_assembly_from_modifier (EventRequest *req, Modifier *m, MonoAssembly *assembly)
 {
-       if (req->event_kind == EVENT_KIND_BREAKPOINT)
-               return breakpoint_matches_assembly (req->info, assembly);
-       else {
-               int i, j;
+       int i;
 
-               for (i = 0; i < req->nmodifiers; ++i) {
-                       Modifier *m = &req->modifiers [i];
+       if (m->kind == MOD_KIND_EXCEPTION_ONLY && m->data.exc_class && m->data.exc_class->image->assembly == assembly)
+               m->kind = MOD_KIND_NONE;
+       if (m->kind == MOD_KIND_ASSEMBLY_ONLY && m->data.assemblies) {
+               int count = 0, match_count = 0, pos;
+               MonoAssembly **newassemblies;
 
-                       if (m->kind == MOD_KIND_EXCEPTION_ONLY && m->data.exc_class && m->data.exc_class->image->assembly == assembly)
-                               return TRUE;
-                       if (m->kind == MOD_KIND_ASSEMBLY_ONLY && m->data.assemblies) {
-                               for (j = 0; m->data.assemblies [j]; ++j)
-                                       if (m->data.assemblies [j] == assembly)
-                                               return TRUE;
-                       }
+               for (i = 0; m->data.assemblies [i]; ++i) {
+                       count ++;
+                       if (m->data.assemblies [i] == assembly)
+                               match_count ++;
+               }
+
+               if (match_count) {
+                       newassemblies = g_new0 (MonoAssembly*, count - match_count);
+
+                       pos = 0;
+                       for (i = 0; i < count; ++i)
+                               if (m->data.assemblies [i] != assembly)
+                                       newassemblies [pos ++] = m->data.assemblies [i];
+                       g_assert (pos == count - match_count);
+                       g_free (m->data.assemblies);
+                       m->data.assemblies = newassemblies;
                }
        }
+}
 
-       return FALSE;
+static void
+clear_assembly_from_modifiers (EventRequest *req, MonoAssembly *assembly)
+{
+       int i;
+
+       for (i = 0; i < req->nmodifiers; ++i) {
+               Modifier *m = &req->modifiers [i];
+
+               clear_assembly_from_modifier (req, m, assembly);
+       }
 }
 
 /*
@@ -6353,11 +6413,16 @@ clear_event_requests_for_assembly (MonoAssembly *assembly)
                for (i = 0; i < event_requests->len; ++i) {
                        EventRequest *req = g_ptr_array_index (event_requests, i);
 
-                       if (event_req_matches_assembly (req, assembly)) {
+                       clear_assembly_from_modifiers (req, assembly);
+
+                       if (req->event_kind == EVENT_KIND_BREAKPOINT && breakpoint_matches_assembly (req->info, assembly)) {
                                clear_event_request (req->id, req->event_kind);
                                found = TRUE;
                                break;
                        }
+
+                       if (req->event_kind == EVENT_KIND_STEP)
+                               ss_clear_for_assembly (req->info, assembly);
                }
        }
        mono_loader_unlock ();
index 5855b81ca9792f6248b26d9b0d1c8a0053f2b1c4..daca0dcf38dc720cf79d1187d368ce8a6befb9e1 100644 (file)
@@ -1308,7 +1308,6 @@ static const char info[] =
 #ifdef HOST_WIN32
 BOOL APIENTRY DllMain (HMODULE module_handle, DWORD reason, LPVOID reserved)
 {
-       int dummy;
        if (!mono_gc_dllmain (module_handle, reason, reserved))
                return FALSE;
 
index b81a7dca3a3fa8eced768d1e8f6c1e7b5504d004..a5cf110568098e3ad5612dad79880186dd8cbb7c 100644 (file)
@@ -19,6 +19,7 @@
 #include <glib.h>
 #include <signal.h>
 #include <string.h>
+
 #ifdef HAVE_UCONTEXT_H
 #include <ucontext.h>
 #endif
@@ -47,7 +48,6 @@ static MonoW32ExceptionHandler segv_handler;
 
 LPTOP_LEVEL_EXCEPTION_FILTER mono_old_win_toplevel_exception_filter;
 void *mono_win_vectored_exception_handle;
-extern gboolean mono_win_chained_exception_needs_run;
 
 #define W32_SEH_HANDLE_EX(_ex) \
        if (_ex##_handler) _ex##_handler(0, ep, sctx)
@@ -75,8 +75,13 @@ static LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep)
        CONTEXT* ctx;
        MonoContext* sctx;
        LONG res;
+       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
 
-       mono_win_chained_exception_needs_run = FALSE;
+       /* If the thread is not managed by the runtime return early */
+       if (!jit_tls)
+               return EXCEPTION_CONTINUE_SEARCH;
+
+       jit_tls->mono_win_chained_exception_needs_run = FALSE;
        res = EXCEPTION_CONTINUE_EXECUTION;
 
        er = ep->ExceptionRecord;
@@ -114,10 +119,11 @@ static LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep)
                W32_SEH_HANDLE_EX(fpe);
                break;
        default:
+               jit_tls->mono_win_chained_exception_needs_run = TRUE;
                break;
        }
 
-       if (mono_win_chained_exception_needs_run) {
+       if (jit_tls->mono_win_chained_exception_needs_run) {
                /* Don't copy context back if we chained exception
                * as the handler may have modfied the EXCEPTION_POINTERS
                * directly. We don't pass sigcontext to chained handlers.
@@ -876,11 +882,11 @@ prepare_for_guard_pages (MonoContext *mctx)
 }
 
 static void
-altstack_handle_and_restore (void *sigctx, gpointer obj, gboolean stack_ovf)
+altstack_handle_and_restore (MonoContext *ctx, gpointer obj, gboolean stack_ovf)
 {
        MonoContext mctx;
 
-       mono_arch_sigctx_to_monoctx (sigctx, &mctx);
+       mctx = *ctx;
 
        mono_handle_exception (&mctx, obj);
        if (stack_ovf)
@@ -893,11 +899,10 @@ mono_arch_handle_altstack_exception (void *sigctx, gpointer fault_addr, gboolean
 {
 #if defined(MONO_ARCH_USE_SIGACTION)
        MonoException *exc = NULL;
-       ucontext_t *ctx = (ucontext_t*)sigctx;
        MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (gpointer)UCONTEXT_REG_RIP (sigctx), NULL);
        gpointer *sp;
        int frame_size;
-       ucontext_t *copied_ctx;
+       MonoContext *copied_ctx;
 
        if (stack_ovf)
                exc = mono_domain_get ()->stack_overflow_ex;
@@ -912,27 +917,15 @@ mono_arch_handle_altstack_exception (void *sigctx, gpointer fault_addr, gboolean
         *   return ip
         * 128 is the size of the red zone
         */
-       frame_size = sizeof (ucontext_t) + sizeof (gpointer) * 4 + 128;
-#ifdef __APPLE__
-       frame_size += sizeof (*ctx->uc_mcontext);
-#endif
+       frame_size = sizeof (MonoContext) + sizeof (gpointer) * 4 + 128;
        frame_size += 15;
        frame_size &= ~15;
        sp = (gpointer)(UCONTEXT_REG_RSP (sigctx) & ~15);
        sp = (gpointer)((char*)sp - frame_size);
-       copied_ctx = (ucontext_t*)(sp + 4);
+       copied_ctx = (MonoContext*)(sp + 4);
        /* the arguments must be aligned */
        sp [-1] = (gpointer)UCONTEXT_REG_RIP (sigctx);
-       /* may need to adjust pointers in the new struct copy, depending on the OS */
-       memcpy (copied_ctx, ctx, sizeof (ucontext_t));
-#ifdef __APPLE__
-       {
-               guint8 * copied_mcontext = (guint8*)copied_ctx + sizeof (ucontext_t);
-               /* uc_mcontext is a pointer, so make a copy which is stored after the ctx */
-               memcpy (copied_mcontext, ctx->uc_mcontext, sizeof (*ctx->uc_mcontext));
-               copied_ctx->uc_mcontext = (void*)copied_mcontext;
-       }
-#endif
+       mono_sigctx_to_monoctx (sigctx, copied_ctx);
        /* at the return form the signal handler execution starts in altstack_handle_and_restore() */
        UCONTEXT_REG_RIP (sigctx) = (unsigned long)altstack_handle_and_restore;
        UCONTEXT_REG_RSP (sigctx) = (unsigned long)(sp - 1);
index aa10aaad593921b4ef331e96cd14143bbde88914..6b5c061a780b2f4a07791b8e77645edc0443f199 100644 (file)
@@ -47,7 +47,6 @@ static MonoW32ExceptionHandler segv_handler;
 
 LPTOP_LEVEL_EXCEPTION_FILTER mono_old_win_toplevel_exception_filter;
 gpointer mono_win_vectored_exception_handle;
-extern gboolean mono_win_chained_exception_needs_run;
 extern int (*gUnhandledExceptionHandler)(EXCEPTION_POINTERS*);
 
 #ifndef PROCESS_CALLBACK_FILTER_ENABLED
@@ -196,8 +195,13 @@ LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep)
        CONTEXT* ctx;
        struct sigcontext* sctx;
        LONG res;
+       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+
+       /* If the thread is not managed by the runtime return early */
+       if (!jit_tls)
+               return EXCEPTION_CONTINUE_SEARCH;
 
-       mono_win_chained_exception_needs_run = FALSE;
+       jit_tls->mono_win_chained_exception_needs_run = FALSE;
        res = EXCEPTION_CONTINUE_EXECUTION;
 
        er = ep->ExceptionRecord;
@@ -234,10 +238,11 @@ LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep)
                W32_SEH_HANDLE_EX(fpe);
                break;
        default:
+               jit_tls->mono_win_chained_exception_needs_run = TRUE;
                break;
        }
 
-       if (mono_win_chained_exception_needs_run) {
+       if (jit_tls->mono_win_chained_exception_needs_run) {
                /* Don't copy context back if we chained exception
                * as the handler may have modfied the EXCEPTION_POINTERS
                * directly. We don't pass sigcontext to chained handlers.
@@ -849,6 +854,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
                                *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~3);
                }
 
+#ifndef MONO_X86_NO_PUSHES
                /* Pop arguments off the stack */
                if (ji->has_arch_eh_info) {
                        int stack_size;
@@ -868,6 +874,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 #endif
                        }
                }
+#endif
 
                return TRUE;
        } else if (*lmf) {
index 84c6f39c060ee71bee15b5c0b0c38af2d0d75b05..784179c64412c86fa7cdb933f081655e69ec94fc 100644 (file)
@@ -19,7 +19,7 @@ mono_main_with_options (int argc, char *argv [])
                GPtrArray *array = g_ptr_array_new ();
                GString *buffer = g_string_new ("");
                const char *p;
-               int i;
+               unsigned i;
                gboolean in_quotes = FALSE;
                char quote_char = '\0';
 
index 4a9c33d29539581bfa3fe405320247a4801af2aa..e667acb1664d222b395ec77452d428da21591e29 100644 (file)
@@ -4526,11 +4526,6 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        /* Set method field */
        method_ins = emit_get_rgctx_method (cfg, context_used, method, MONO_RGCTX_INFO_METHOD);
        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, method), method_ins->dreg);
-       if (cfg->gen_write_barriers) {
-               dreg = alloc_preg (cfg);
-               EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, method));
-               emit_write_barrier (cfg, ptr, method_ins);
-       }
        /* 
         * To avoid looking up the compiled code belonging to the target method
         * in mono_delegate_trampoline (), we allocate a per-domain memory slot to
@@ -7787,6 +7782,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        EMIT_NEW_ARGLOAD (cfg, call->args [i], i);
 
                                mono_arch_emit_call (cfg, call);
+                               cfg->param_area = MAX(cfg->param_area, call->stack_usage);
                                MONO_ADD_INS (bblock, (MonoInst*)call);
                        } else {
                                for (i = 0; i < num_args; ++i)
index e6ebc8dea7e851849a18dcdc7462c3c076ef96b6..71ed6a53d2e027aa13dd3aa6463da58bc51e93b1 100644 (file)
@@ -811,11 +811,19 @@ mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 void
 mono_arch_cpu_init (void)
 {
-#if defined(__APPLE__)
+#ifdef TARGET_IOS
        i8_align = 4;
 #else
        i8_align = __alignof__ (gint64);
 #endif
+
+#ifdef MONO_CROSS_COMPILE
+       /* Need to set the alignment of i8 since it can different on the target */
+#ifdef TARGET_ANDROID
+       /* linux gnueabi */
+       mono_type_set_alignment (MONO_TYPE_I8, 8);
+#endif
+#endif
 }
 
 static gpointer
@@ -4206,7 +4214,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                ARM_CMP_REG_IMM (code, tmpreg, 0, 0);
                                buf [2] = code;
                                ARM_B_COND (code, ARMCOND_NE, 0);
-                               arm_patch (buf [2], buf [1]);
+                               arm_patch (buf [2], buf [0]);
                                arm_patch (buf [1], code);
                                break;
                        case OP_ATOMIC_ADD_NEW_I4:
index cba8a33a7442ad1adfd34e8a9221d25fcc4803d5..131d43300166f748532ccb0c60dd987131906671 100644 (file)
  * reproduceable results for benchmarks */
 #define MONO_ARCH_CODE_ALIGNMENT 32
 
+/* Argument marshallings for calls between gsharedvt and normal code */
+typedef enum {
+       GSHAREDVT_ARG_NONE = 0,
+       GSHAREDVT_ARG_BYVAL_TO_BYREF = 1,
+       GSHAREDVT_ARG_BYREF_TO_BYVAL = 2,
+       GSHAREDVT_ARG_BYREF_TO_BYVAL_I1 = 3,
+       GSHAREDVT_ARG_BYREF_TO_BYVAL_I2 = 4,
+       GSHAREDVT_ARG_BYREF_TO_BYVAL_U1 = 5,
+       GSHAREDVT_ARG_BYREF_TO_BYVAL_U2 = 6
+} GSharedVtArgMarshal;
+
 /* Return value marshalling for calls between gsharedvt and normal code */
 typedef enum {
        GSHAREDVT_RET_NONE = 0,
index 6e5bf2f8586b331670c76f02325d0cb7585f3d95..66eb8fcdcf2f0c78f58f12ca2fd5bfeae4091fd7 100644 (file)
@@ -1452,6 +1452,8 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
                                                if (k != j)
                                                        sreg_masks [k] &= ~ (regmask (dest_sreg));
                                        }
+                                       /* See below */
+                                       dreg_mask &= ~ (regmask (dest_sreg));
                                } else {
                                        val = rs->vassign [sreg];
                                        if (val == -1) {
@@ -1471,7 +1473,7 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
                                                                sreg_masks [k] &= ~ (regmask (dest_sreg));
                                                }
                                                /* 
-                                                * Prevent the dreg from being allocate to dest_sreg 
+                                                * Prevent the dreg from being allocated to dest_sreg
                                                 * too, since it could force sreg1 to be allocated to 
                                                 * the same reg on x86.
                                                 */
index 221082759f7bcbe51b0ef034a0b922aa3e06654b..17762008fbe5dfc214b481a218d6e168a194404b 100644 (file)
@@ -2352,7 +2352,10 @@ mono_print_thread_dump_internal (void *sigctx, MonoContext *start_ctx)
        MonoContext ctx;
 #endif
        GString* text = g_string_new (0);
-       char *name, *wapi_desc;
+       char *name;
+#ifndef HOST_WIN32
+       char *wapi_desc;
+#endif
        GError *error = NULL;
 
        if (thread->name) {
index 5589d99eabb0e1f78f2ded0de3c90e7d7e1b0b27..1566cb0d8741a3473f18e0329270b1c4bb7c6bd4 100644 (file)
@@ -598,7 +598,9 @@ thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
 
        if (tls->tid != GetCurrentThreadId ()) {
                /* Happens on osx because threads are not suspended using signals */
+#ifndef TARGET_WIN32
                gboolean res;
+#endif
 
                g_assert (tls->info);
 #ifdef TARGET_WIN32
@@ -1869,7 +1871,11 @@ sp_offset_to_fp_offset (MonoCompile *cfg, int sp_offset)
 #elif defined(TARGET_X86)
        /* The offset is computed from the sp at the start of the call sequence */
        g_assert (cfg->frame_reg == X86_EBP);
+#ifdef MONO_X86_NO_PUSHES
+       return (- cfg->arch.sp_fp_offset + sp_offset);
+#else
        return (- cfg->arch.sp_fp_offset - sp_offset);  
+#endif
 #else
        NOT_IMPLEMENTED;
        return -1;
@@ -2056,7 +2062,11 @@ compute_frame_size (MonoCompile *cfg)
 #ifdef TARGET_AMD64
        min_offset = MIN (min_offset, -cfg->arch.sp_fp_offset);
 #elif defined(TARGET_X86)
+#ifdef MONO_X86_NO_PUSHES
+       min_offset = MIN (min_offset, -cfg->arch.sp_fp_offset);
+#else
        min_offset = MIN (min_offset, - (cfg->arch.sp_fp_offset + cfg->arch.param_area_size));
+#endif
 #elif defined(TARGET_ARM)
        // FIXME:
 #elif defined(TARGET_s390X)
index 9da527eaf357d7af1eb77a526a6c215151a72e23..f0dcc73e9b1a5e576b28e7d4d14315f612fed830 100644 (file)
@@ -313,6 +313,8 @@ type_to_simd_type (int type)
 static LLVMTypeRef
 type_to_llvm_type (EmitContext *ctx, MonoType *t)
 {
+       t = mini_replace_type (t);
+
        if (t->byref)
                return LLVMPointerType (LLVMInt8Type (), 0);
        switch (t->type) {
@@ -1069,11 +1071,13 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
        int i, j, pindex, vret_arg_pindex = 0;
        int *pindexes;
        gboolean vretaddr = FALSE;
+       MonoType *rtype;
 
        if (sinfo)
                memset (sinfo, 0, sizeof (LLVMSigInfo));
 
-       ret_type = type_to_llvm_type (ctx, sig->ret);
+       rtype = mini_replace_type (sig->ret);
+       ret_type = type_to_llvm_type (ctx, rtype);
        CHECK_FAILURE (ctx);
 
        if (cinfo && cinfo->ret.storage == LLVMArgVtypeInReg) {
@@ -1086,7 +1090,7 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
                } else {
                        g_assert_not_reached ();
                }
-       } else if (cinfo && mini_type_is_vtype (ctx->cfg, sig->ret)) {
+       } else if (cinfo && mini_type_is_vtype (ctx->cfg, rtype)) {
                g_assert (cinfo->ret.storage == LLVMArgVtypeRetAddr);
                vretaddr = TRUE;
                ret_type = LLVMVoidType ();
index 69a1d3d78aa16d9558fff6e6d915d9a95f816ec0..d2a7aec7cd7373b9ca668f044e158a33502e63ea 100644 (file)
@@ -4388,6 +4388,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_ATOMIC_ADD_NEW_I8: {
                        guint8 *loop = code, *branch;
                        g_assert (ins->inst_offset == 0);
+                       ppc_sync (code);
                        if (ins->opcode == OP_ATOMIC_ADD_NEW_I4)
                                ppc_lwarx (code, ppc_r0, 0, ins->inst_basereg);
                        else
@@ -4400,6 +4401,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        branch = code;
                        ppc_bc (code, PPC_BR_FALSE, PPC_BR_EQ, 0);
                        ppc_patch (branch, loop);
+                       ppc_sync (code);
                        ppc_mr (code, ins->dreg, ppc_r0);
                        break;
                }
@@ -4426,6 +4428,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        guint8 *start, *not_equal, *lost_reservation;
 
                        start = code;
+                       ppc_sync (code);
                        if (ins->opcode == OP_ATOMIC_CAS_I4)
                                ppc_lwarx (code, ppc_r0, 0, location);
 #ifdef __mono_ppc64__
@@ -4448,6 +4451,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ppc_patch (lost_reservation, start);
 
                        ppc_patch (not_equal, code);
+                       ppc_sync (code);
                        ppc_mr (code, ins->dreg, ppc_r0);
                        break;
                }
index 5374adc8b029f1c637417f777d1560339a3186e2..fbc6278a34239e379a26c97c0751bcfa055b63ed 100644 (file)
@@ -59,7 +59,7 @@ if (ins->inst_target_bb->native_offset) {                                     \
 #define EMIT_COND_SYSTEM_EXCEPTION(cond,exc_name)                      \
         do {                                                           \
                mono_add_patch_info (cfg, code - cfg->native_code,      \
-                                   MONO_PATCH_INFO_EXC, exc_name);     \
+                                    MONO_PATCH_INFO_EXC, exc_name);    \
                s390_jcl (code, cond, 0);                               \
        } while (0); 
 
@@ -232,7 +232,7 @@ if (ins->inst_target_bb->native_offset) {                                   \
 #define S390_TRACE_STACK_SIZE (5*sizeof(gpointer)+4*sizeof(gdouble))
 
 #define BREAKPOINT_SIZE                sizeof(breakpoint_t)
-#define S390X_NOP_SIZE         sizeof(I_Format)
+#define S390X_NOP_SIZE         sizeof(RR_Format)
 
 #define MAX(a, b) ((a) > (b) ? (a) : (b))
 
@@ -257,6 +257,8 @@ if (ins->inst_target_bb->native_offset) {                                   \
 
 #include "mini.h"
 #include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
 
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/debug-helpers.h>
@@ -267,6 +269,7 @@ if (ins->inst_target_bb->native_offset) {                                   \
 
 #include "mini-s390x.h"
 #include "cpu-s390x.h"
+#include "support-s390x.h"
 #include "jit-icalls.h"
 #include "ir-emit.h"
 #include "trace.h"
@@ -381,7 +384,7 @@ static __inline__ void emit_unwind_regs(MonoCompile *, guint8 *, int, int, long)
 
 int mono_exc_esp_offset = 0;
 
-static int indent_level = 0;
+__thread int indent_level = 0;
 
 static gint appdomain_tls_offset = -1,
            lmf_tls_offset = -1,
@@ -393,14 +396,6 @@ gboolean lmf_addr_key_inited = FALSE;
 
 facilityList_t facs;
 
-#if 0
-
-extern __thread MonoDomain *tls_appdomain;
-extern __thread MonoThread *tls_current_object;
-extern __thread gpointer   mono_lmf_addr;
-               
-#endif
-
 /*
  * The code generated for sequence points reads from this location, 
  * which is made read-only when single stepping is enabled.
@@ -414,6 +409,8 @@ static gpointer bp_trigger_page;
 
 breakpoint_t breakpointCode;
 
+static CRITICAL_SECTION mini_arch_mutex;
+
 /*====================== End of Global Variables ===================*/
 
 /*------------------------------------------------------------------*/
@@ -626,7 +623,7 @@ indent (int diff) {
        if (diff < 0)
                indent_level += diff;
        v = indent_level;
-       printf("[%3d] ",v);
+       printf("%p [%3d] ",pthread_self(),v);
        while (v-- > 0) {
                printf (". ");
        }
@@ -1262,20 +1259,7 @@ mono_arch_init (void)
 {
        guint8 *code;
 
-#if 0
-       /*
-        * When we do an architectural level set at z9 or better 
-        * we can use the STFLE instruction to show us
-        * what hardware facilities are available
-        */
-       int lFacility = sizeof(facs) % 8;
-
-       memset((char *) &facs, 0, sizeof(facs));
-
-       __asm__ ("      lgfr    0,%1\n"
-                "      stfle   %0\n"
-                : "=m" (facs) : "r" (lFacility) : "0", "cc");
-#endif
+       InitializeCriticalSection (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ);
        bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ);
@@ -1302,6 +1286,11 @@ mono_arch_init (void)
 void
 mono_arch_cleanup (void)
 {
+       if (ss_trigger_page)
+               mono_vfree (ss_trigger_page, mono_pagesize ());
+       if (bp_trigger_page)
+               mono_vfree (bp_trigger_page, mono_pagesize ());
+       DeleteCriticalSection (&mini_arch_mutex);
 }
 
 /*========================= End of Function ========================*/
@@ -2608,54 +2597,23 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        if (cfg->method->save_lmf)
                parmOffset -= sizeof(MonoLMF);
        fpOffset   = parmOffset + (5*sizeof(gpointer));
-       if ((!mono_hwcap_s390x_has_ld) && (fpOffset > 4096)) {
-               s390_lgr (code, s390_r12, STK_BASE);
-               baseReg = s390_r12;
-               while (fpOffset > 4096) {
-                       s390_aghi (code, baseReg, 4096);
-                       fpOffset   -= 4096;
-                       parmOffset -= 4096;
-               }
-       } else {
-               baseReg = STK_BASE;
-       }       
+       baseReg = STK_BASE;
 
        s390_stmg (code, s390_r2, s390_r6, STK_BASE, parmOffset);
-       if (mono_hwcap_s390x_has_ld) {
-               s390_stdy (code, s390_f0, 0, STK_BASE, fpOffset);
-               s390_stdy (code, s390_f2, 0, STK_BASE, fpOffset+sizeof(gdouble));
-               s390_stdy (code, s390_f4, 0, STK_BASE, fpOffset+2*sizeof(gdouble));
-               s390_stdy (code, s390_f6, 0, STK_BASE, fpOffset+3*sizeof(gdouble));
-       } else {
-               s390_std  (code, s390_f0, 0, baseReg, fpOffset);
-               s390_std  (code, s390_f2, 0, baseReg, fpOffset+sizeof(gdouble));
-               s390_std  (code, s390_f4, 0, baseReg, fpOffset+2*sizeof(gdouble));
-               s390_std  (code, s390_f6, 0, baseReg, fpOffset+3*sizeof(gdouble));
-       }
-       s390_basr (code, s390_r13, 0);
-       s390_j    (code, 10);
-       s390_llong(code, cfg->method);
-       s390_llong(code, func);
-       s390_lg   (code, s390_r2, 0, s390_r13, 4);
-       if (mono_hwcap_s390x_has_ld)
-               s390_lay  (code, s390_r3, 0, STK_BASE, parmOffset);
-       else
-               s390_la   (code, s390_r3, 0, baseReg, parmOffset);
+       s390_stdy (code, s390_f0, 0, STK_BASE, fpOffset);
+       s390_stdy (code, s390_f2, 0, STK_BASE, fpOffset+sizeof(gdouble));
+       s390_stdy (code, s390_f4, 0, STK_BASE, fpOffset+2*sizeof(gdouble));
+       s390_stdy (code, s390_f6, 0, STK_BASE, fpOffset+3*sizeof(gdouble));
+       S390_SET  (code, s390_r1, func);
+       S390_SET  (code, s390_r2, cfg->method);
+       s390_lay  (code, s390_r3, 0, STK_BASE, parmOffset);
        s390_lgr  (code, s390_r4, STK_BASE);
        s390_aghi (code, s390_r4, cfg->stack_usage);
-       s390_lg   (code, s390_r1, 0, s390_r13, 12);
        s390_basr (code, s390_r14, s390_r1);
-       if (mono_hwcap_s390x_has_ld) {
-               s390_ldy  (code, s390_f6, 0, STK_BASE, fpOffset+3*sizeof(gdouble));
-               s390_ldy  (code, s390_f4, 0, STK_BASE, fpOffset+2*sizeof(gdouble));
-               s390_ldy  (code, s390_f2, 0, STK_BASE, fpOffset+sizeof(gdouble));
-               s390_ldy  (code, s390_f0, 0, STK_BASE, fpOffset);
-       } else {
-               s390_ld   (code, s390_f6, 0, baseReg, fpOffset+3*sizeof(gdouble));
-               s390_ld   (code, s390_f4, 0, baseReg, fpOffset+2*sizeof(gdouble));
-               s390_ld   (code, s390_f2, 0, baseReg, fpOffset+sizeof(gdouble));
-               s390_ld   (code, s390_f0, 0, baseReg, fpOffset);
-       }
+       s390_ldy  (code, s390_f6, 0, STK_BASE, fpOffset+3*sizeof(gdouble));
+       s390_ldy  (code, s390_f4, 0, STK_BASE, fpOffset+2*sizeof(gdouble));
+       s390_ldy  (code, s390_f2, 0, STK_BASE, fpOffset+sizeof(gdouble));
+       s390_ldy  (code, s390_f0, 0, STK_BASE, fpOffset);
        s390_lmg  (code, s390_r2, s390_r6, STK_BASE, parmOffset);
 
        return code;
@@ -2756,12 +2714,8 @@ handle_enum:
                break;
        }
 
-       s390_basr (code, s390_r13, 0);
-       s390_j    (code, 10);
-       s390_llong(code, cfg->method);
-       s390_llong(code, func);
-       s390_lg   (code, s390_r2, 0, s390_r13, 4);
-       s390_lg   (code, s390_r1, 0, s390_r13, 12);
+       S390_SET  (code, s390_r1, func);
+       S390_SET  (code, s390_r2, cfg->method);
        s390_basr (code, s390_r14, s390_r1);
 
        switch (save_mode) {
@@ -2890,14 +2844,14 @@ emit_float_to_int (MonoCompile *cfg, guchar *code, int dreg, int sreg, int size,
                }
        } else {
                short *o[1];
-               s390_basr   (code, s390_r13, 0);
-               s390_j      (code, 10);
-               s390_llong  (code, 0x41e0000000000000llu);
-               s390_llong  (code, 0x41f0000000000000llu);
+               S390_SET    (code, s390_r13, 0x41e0000000000000llu);
+               s390_ldgr   (code, s390_f14, s390_r13);
                s390_ldr    (code, s390_f15, sreg);
-               s390_cdb    (code, s390_f15, 0, s390_r13, 4);
+               s390_cdbr   (code, s390_f15, s390_f14);
                s390_jl     (code, 0); CODEPTR (code, o[0]);
-               s390_sdb    (code, s390_f15, 0, s390_r13, 12);
+               S390_SET    (code, s390_r13, 0x41f0000000000000llu);
+               s390_ldgr   (code, s390_f14, s390_r13);
+               s390_sdbr   (code, s390_f15, s390_f14);
                s390_cfdbr  (code, dreg, 7, s390_f15);
                s390_j      (code, 4);
                PTRSLOT (code, o[0]);
@@ -3017,28 +2971,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                }
                        break;
                case OP_STOREI4_MEMBASE_IMM: {
-                       if (s390_is_imm16(ins->inst_imm)) {
-                               s390_lghi (code, s390_r0, ins->inst_imm);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_lg   (code, s390_r0, 0, s390_r13, 4);
-                       }
+                       s390_lgfi (code, s390_r0, ins->inst_imm);
                        S390_LONG (code, sty, st, s390_r0, 0, 
                                   ins->inst_destbasereg, ins->inst_offset);
                }
                        break;
                case OP_STORE_MEMBASE_IMM:
                case OP_STOREI8_MEMBASE_IMM: {
-                       if (s390_is_imm16(ins->inst_imm)) {
-                               s390_lghi (code, s390_r0, ins->inst_imm);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_lg   (code, s390_r0, 0, s390_r13, 4);
-                       }
+                       S390_SET (code, s390_r0, ins->inst_imm);
                        S390_LONG (code, stg, stg, s390_r0, 0, 
                                   ins->inst_destbasereg, ins->inst_offset);
                }
@@ -3104,90 +3044,35 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                }
                        break;
                case OP_LCONV_TO_I1: {
-#if 0
                        s390_lgbr (code, ins->dreg, ins->sreg1);
-#else
-                       s390_sllg (code, ins->dreg, ins->sreg1, 0, 56);
-                       s390_srag (code, ins->dreg, ins->dreg, 0, 56);
-#endif
                }
                        break;
                case OP_LCONV_TO_I2: {
-#if 0
                        s390_lghr (code, ins->dreg, ins->sreg1);
-#else
-                       s390_sllg (code, ins->dreg, ins->sreg1, 0, 48);
-                       s390_srag (code, ins->dreg, ins->dreg, 0, 48);
-#endif
                }
                        break;
                case OP_LCONV_TO_U1: {
-#if 0
-                       s390_llghr (code, ins->dreg, ins->sreg1);
-#else
-                       if (ins->dreg != ins->sreg1)
-                               s390_lgr  (code, ins->dreg, ins->sreg1);
-                       s390_lghi  (code, s390_r0, 0xff);
-                       s390_ngr   (code, ins->dreg, s390_r0);
-#endif
+                       s390_llgcr (code, ins->dreg, ins->sreg1);
                }
                        break;
                case OP_LCONV_TO_U2: {
-#if 0
                        s390_llghr (code, ins->dreg, ins->sreg1);
-#else
-                       if (ins->dreg != ins->sreg1)
-                               s390_lgr  (code, ins->dreg, ins->sreg1);
-                       s390_lghi  (code, s390_r0, -1);
-                       s390_srlg  (code, s390_r0, s390_r0, 0, 48);
-                       s390_ngr   (code, ins->dreg, s390_r0);
-#endif
                }
                        break;
                case OP_ICONV_TO_I1: {
-#if 0
-                       s390_lbr  (code, ins->dreg, ins->sreg1);
-#else
-                       if (ins->dreg != ins->sreg1)
-                               s390_lr  (code, ins->dreg, ins->sreg1);
-                       s390_sll (code, ins->dreg, 0, 24);
-                       s390_sra (code, ins->dreg, 0, 24);
-                       
-#endif
+                       s390_lgbr  (code, ins->dreg, ins->sreg1);
                }
                        break;
                case OP_ICONV_TO_I2: {
-#if 0
-                       s390_lhr  (code, ins->dreg, ins->sreg1);
-#else
-                       if (ins->dreg != ins->sreg1)
-                               s390_lr  (code, ins->dreg, ins->sreg1);
-                       s390_sll (code, ins->dreg, 0, 16);
-                       s390_sra (code, ins->dreg, 0, 16);
-#endif
+                       s390_lghr  (code, ins->dreg, ins->sreg1);
                }
                        break;
                case OP_ICONV_TO_U1: {
-#if 0
-                       s390_llcr (code, ins->dreg, ins->sreg1);
-#else
-                       if (ins->dreg != ins->sreg1)
-                               s390_lr  (code, ins->dreg, ins->sreg1);
-                       s390_lhi  (code, s390_r0, 0xff);
-                       s390_nr   (code, ins->dreg, s390_r0);
-#endif
+                       s390_llgcr (code, ins->dreg, ins->sreg1);
                }
                        break;
                case OP_ICONV_TO_U2: {
-#if 0
-                       s390_llhr (code, ins->dreg, ins->sreg1);
-#else
-                       if (ins->dreg != ins->sreg1)
-                               s390_lr  (code, ins->dreg, ins->sreg1);
-                       s390_lhi  (code, s390_r0, -1);
-                       s390_srl  (code, s390_r0, 0, 16);
-                       s390_nr   (code, ins->dreg, s390_r0);
-#endif
+                       s390_llghr (code, ins->dreg, ins->sreg1);
                }
                        break;
                case OP_COMPARE: 
@@ -3207,50 +3092,25 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_COMPARE_IMM:
                case OP_LCOMPARE_IMM: {
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi (code, s390_r0, ins->inst_imm);
-                               if (is_unsigned (ins->next))
-                                       s390_clgr (code, ins->sreg1, s390_r0);
-                               else
-                                       s390_cgr  (code, ins->sreg1, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               if (is_unsigned (ins->next))
-                                       s390_clg  (code, ins->sreg1, 0, s390_r13, 4);
-                               else
-                                       s390_cg   (code, ins->sreg1, 0, s390_r13, 4);
-                       }
+                       S390_SET (code, s390_r0, ins->inst_imm);
+                       if (is_unsigned (ins->next))
+                               s390_clgr (code, ins->sreg1, s390_r0);
+                       else
+                               s390_cgr  (code, ins->sreg1, s390_r0);
                }
                        break;
                case OP_ICOMPARE_IMM: {
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi (code, s390_r0, ins->inst_imm);
-                               if (is_unsigned (ins->next))
-                                       s390_clr  (code, ins->sreg1, s390_r0);
-                               else
-                                       s390_cr   (code, ins->sreg1, s390_r0);
-                       }
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               if (is_unsigned (ins->next))
-                                       s390_cl  (code, ins->sreg1, 0, s390_r13, 4);
-                               else
-                                       s390_c   (code, ins->sreg1, 0, s390_r13, 4);
-                       }
+                       S390_SET (code, s390_r0, ins->inst_imm);
+                       if (is_unsigned (ins->next))
+                               s390_clr  (code, ins->sreg1, s390_r0);
+                       else
+                               s390_cr   (code, ins->sreg1, s390_r0);
                }
                        break;
                case OP_BREAK: {
-                       s390_basr  (code, s390_r13, 0);
-                       s390_j     (code, 6);
                        mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_ABS, 
                                             mono_break);
-                       s390_llong (code, mono_break);
-                       s390_lg    (code, s390_r14, 0, s390_r13, 4);
-                        s390_basr  (code, s390_r14, s390_r14);
+                       S390_CALL_TEMPLATE (code, s390_r14);
                }
                        break;
                case OP_ADDCC: {
@@ -3274,11 +3134,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                        if (s390_is_imm16 (ins->inst_imm)) {
                                s390_aghi (code, ins->dreg, ins->inst_imm);
+                       } else if (s390_is_imm32 (ins->inst_imm)) {
+                               s390_agfi (code, ins->dreg, ins->inst_imm);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_ag   (code, ins->dreg, 0, s390_r13, 4);
+                               S390_SET  (code, s390_r0, ins->inst_imm);
+                               s390_agr  (code, ins->dreg, s390_r0);
                        }
                }
                        break;
@@ -3298,11 +3158,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                s390_lghi  (code, s390_r0, ins->inst_imm);
                                s390_alcgr (code, ins->dreg, s390_r0);
                        } else {
-                               s390_basr  (code, s390_r13, 0);
-                               s390_j     (code, 6);
-                               s390_llong (code, ins->inst_imm);
-                               s390_lg    (code, s390_r13, 0, s390_r13, 4);
-                               s390_alcgr (code, ins->dreg, s390_r13);
+                               S390_SET   (code, s390_r0, ins->inst_imm);
+                               s390_alcgr (code, ins->dreg, s390_r0);
                        }
                }
                        break;
@@ -3359,13 +3216,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                s390_lgr   (code, ins->dreg, ins->sreg1);
                        }
                        if (s390_is_imm16 (-ins->inst_imm)) {
-                               s390_lghi  (code, s390_r0, ins->inst_imm);
-                               s390_slgr  (code, ins->dreg, s390_r0);
+                               s390_aghi  (code, ins->dreg, -ins->inst_imm);
+                       } else if (s390_is_imm32 (-ins->inst_imm)) {
+                               s390_slgfi  (code, ins->dreg, ins->inst_imm);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_slg  (code, ins->dreg, 0, s390_r13, 4);
+                               S390_SET  (code, s390_r0, ins->inst_imm);
+                               s390_slgr (code, ins->dreg, s390_r0);
                        }
                }
                        break;
@@ -3374,13 +3230,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                s390_lgr   (code, ins->dreg, ins->sreg1);
                        }
                        if (s390_is_imm16 (-ins->inst_imm)) {
-                               s390_lghi  (code, s390_r0, ins->inst_imm);
-                               s390_slgr  (code, ins->dreg, s390_r0);
+                               s390_aghi  (code, ins->dreg, -ins->inst_imm);
+                       } else if (s390_is_imm32 (-ins->inst_imm)) {
+                               s390_slgfi (code, ins->dreg, ins->inst_imm);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_slg  (code, ins->dreg, 0, s390_r13, 4);
+                               S390_SET  (code, s390_r0, ins->inst_imm);
+                               s390_slgr (code, ins->dreg, s390_r0);
                        }
                }
                        break;
@@ -3392,10 +3247,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                s390_lghi  (code, s390_r0, ins->inst_imm);
                                s390_slbgr (code, ins->dreg, s390_r0);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_slbg (code, ins->dreg, 0, s390_r13, 4);
+                               S390_SET  (code, s390_r0, ins->inst_imm);
+                               s390_slbgr(code, ins->dreg, s390_r0);
                        }
                }
                        break;
@@ -3435,15 +3288,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (ins->dreg != ins->sreg1) {
                                s390_lgr  (code, ins->dreg, ins->sreg1);
                        }
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi  (code, s390_r0, ins->inst_imm);
-                               s390_ngr  (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_ng   (code, ins->dreg, 0, s390_r13, 4);
-                       }
+                       S390_SET_MASK (code, s390_r0, ins->inst_imm);
+                       s390_ngr (code, ins->dreg, s390_r0);
                }
                        break;
                case OP_LDIV: {
@@ -3491,15 +3337,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (ins->dreg != ins->sreg1) {
                                s390_lgr  (code, ins->dreg, ins->sreg1);
                        }
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi (code, s390_r0, ins->inst_imm);
-                               s390_ogr  (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_og   (code, ins->dreg, 0, s390_r13, 4);
-                       }
+                       S390_SET_MASK(code, s390_r0, ins->inst_imm);
+                       s390_ogr (code, ins->dreg, s390_r0);
                }
                        break;
                case OP_LXOR: {
@@ -3521,15 +3360,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (ins->dreg != ins->sreg1) {
                                s390_lgr  (code, ins->dreg, ins->sreg1);
                        }
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi  (code, s390_r0, ins->inst_imm);
-                               s390_xgr  (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_xg   (code, ins->dreg, 0, s390_r13, 4);
-                       }
+                       S390_SET_MASK (code, s390_r0, ins->inst_imm);
+                       s390_xgr (code, ins->dreg, s390_r0);
                }
                        break;
                case OP_LSHL: {
@@ -3595,11 +3427,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                        if (s390_is_imm16 (ins->inst_imm)) {
                                s390_lghi (code, s390_r13, ins->inst_imm);
+                       } else if (s390_is_imm32 (ins->inst_imm)) {
+                               s390_lgfi (code, s390_r13, ins->inst_imm);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_lg   (code, s390_r13, 0, s390_r13, 4);
+                               S390_SET (code, s390_r13, ins->inst_imm);
                        }
                        s390_msgr (code, ins->dreg, s390_r13);
                }
@@ -3654,12 +3485,9 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                s390_lgfr (code, ins->dreg, ins->sreg1);
                        }
                        if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_aghi(code, ins->dreg, ins->inst_imm);
+                               s390_aghi (code, ins->dreg, ins->inst_imm);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_agf  (code, ins->dreg, 0, s390_r13, 4);
+                               s390_afi  (code, ins->dreg, ins->inst_imm);
                        }
                }
                        break;
@@ -3671,11 +3499,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                s390_lghi  (code, s390_r0, ins->inst_imm);
                                s390_alcgr (code, ins->dreg, s390_r0);
                        } else {
-                               s390_basr  (code, s390_r13, 0);
-                               s390_j     (code, 4);
-                               s390_word  (code, ins->inst_imm);
-                               s390_lgf   (code, s390_r13, 0, s390_r13, 4);
-                               s390_alcgr (code, ins->dreg, s390_r13);
+                               S390_SET   (code, s390_r0, ins->inst_imm);
+                               s390_alcgr (code, ins->dreg, s390_r0);
                        }
                }
                        break;
@@ -3715,18 +3540,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (s390_is_imm16 (-ins->inst_imm)) {
                                s390_aghi (code, ins->dreg, -ins->inst_imm);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_sgf  (code, ins->dreg, 0, s390_r13, 4);
+                               s390_agfi (code, ins->dreg, -ins->inst_imm);
                        }
                }
                        break;
                case OP_ISBB_IMM: {
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 4);
-                       s390_word (code, ins->inst_imm);
-                       s390_slgf (code, ins->dreg, 0, s390_r13, 4);
+                       S390_SET (code, s390_r0, ins->inst_imm);
+                       s390_slgfr (code, ins->dreg, s390_r0);
                }
                        break;
                case OP_ISUB_OVF:
@@ -3768,15 +3588,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (ins->dreg != ins->sreg1) {
                                s390_lgfr (code, ins->dreg, ins->sreg1);
                        }
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi (code, s390_r0, ins->inst_imm);
-                               s390_ngr  (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_ng   (code, ins->dreg, 0, s390_r13, 4);
-                       }
+                       S390_SET_MASK (code, s390_r0, ins->inst_imm);
+                       s390_ngr  (code, ins->dreg, s390_r0);
                }
                        break;
                case OP_IDIV: {
@@ -3796,14 +3609,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_IDIV_IMM: {
                        if (s390_is_imm16 (ins->inst_imm)) {
                                s390_lghi (code, s390_r13, ins->inst_imm);
-                               s390_lgfr (code, s390_r0, ins->sreg1);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_lgfr (code, s390_r0, ins->sreg1);
-                               s390_lgf  (code, s390_r13, 0, s390_r13, 4);
+                               s390_lgfi (code, s390_r13, ins->inst_imm);
                        }
+                       s390_lgfr (code, s390_r0, ins->sreg1);
                        s390_srda (code, s390_r0, 0, 32);
                        s390_dr   (code, s390_r0, ins->sreg2);
                        s390_lgfr (code, ins->dreg, s390_r1);
@@ -3825,14 +3634,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_IREM_IMM: {
                        if (s390_is_imm16 (ins->inst_imm)) {
                                s390_lghi (code, s390_r13, ins->inst_imm);
-                               s390_lgfr (code, s390_r0, ins->sreg1);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_lgfr (code, s390_r0, ins->sreg1);
-                               s390_lgf  (code, s390_r13, 0, s390_r13, 4);
+                               s390_lgfi (code, s390_r13, ins->inst_imm);
                        }
+                       s390_lgfr (code, s390_r0, ins->sreg1);
                        s390_srda (code, s390_r0, 0, 32);
                        s390_dr   (code, s390_r0, ins->sreg2);
                        s390_lgfr (code, ins->dreg, s390_r0);
@@ -3847,15 +3652,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (ins->dreg != ins->sreg1) {
                                s390_lgfr (code, ins->dreg, ins->sreg1);
                        }
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi (code, s390_r0, ins->inst_imm);
-                               s390_ogr  (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_og   (code, ins->dreg, 0, s390_r13, 4);
-                       }
+                       S390_SET_MASK (code, s390_r0, ins->inst_imm);
+                       s390_ogr  (code, ins->dreg, s390_r0);
                }
                        break;
                case OP_IXOR: {
@@ -3867,15 +3665,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (ins->dreg != ins->sreg1) {
                                s390_lgfr (code, ins->dreg, ins->sreg1);
                        }
-                       if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi (code, s390_r0, ins->inst_imm);
-                               s390_xgr  (code, ins->dreg, s390_r0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_imm);
-                               s390_xg   (code, ins->dreg, 0, s390_r13, 4);
-                       }
+                       S390_SET_MASK (code, s390_r0, ins->inst_imm);
+                       s390_xgr  (code, ins->dreg, s390_r0);
                }
                        break;
                case OP_ISHL: {
@@ -3936,14 +3727,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                s390_lgfr (code, ins->dreg, ins->sreg1);
                        }
                        if (s390_is_imm16 (ins->inst_imm)) {
-                               s390_lghi (code, s390_r13, ins->inst_imm);
+                               s390_lghi (code, s390_r0, ins->inst_imm);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_word (code, ins->inst_imm);
-                               s390_lgf  (code, s390_r13, 0, s390_r13, 4);
+                               s390_lgfi (code, s390_r0, ins->inst_imm);
                        }
-                       s390_msr  (code, ins->dreg, s390_r13);
+                       s390_msr  (code, ins->dreg, s390_r0);
                }
                        break;
                case OP_IMUL_OVF: {
@@ -3976,32 +3764,19 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_ICONST: 
                case OP_I8CONST: {
-                       if (s390_is_imm16(ins->inst_c0)) {
-                               s390_lghi (code, ins->dreg, ins->inst_c0);
-                       } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_c0);
-                               s390_lg   (code, ins->dreg, 0, s390_r13, 4);
-                       }
+                       S390_SET (code, ins->dreg, ins->inst_c0);
                }
                        break;
                case OP_AOTCONST: {
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 6);
                        mono_add_patch_info (cfg, code - cfg->native_code, 
                                (MonoJumpInfoType)ins->inst_i1, ins->inst_p0);
-                       s390_llong(code, 0);
-                       s390_lg   (code,ins->dreg, 0, s390_r13, 4);
+                       S390_LOAD_TEMPLATE (code, ins->dreg);
                }
                        break;
                case OP_JUMP_TABLE: {
                        mono_add_patch_info (cfg, code - cfg->native_code, 
                                (MonoJumpInfoType)ins->inst_i1, ins->inst_p0);
-                       s390_basr  (code, s390_r13, 0);
-                       s390_j     (code, 6);
-                       s390_llong (code, 0);
-                       s390_lg    (code, ins->dreg, 0, s390_r13, 4);
+                       S390_LOAD_TEMPLATE (code, ins->dreg);
                }
                        break;
                case OP_MOVE:
@@ -4024,32 +3799,32 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_llgfr (code, ins->dreg, ins->sreg1);
                        break;
                case OP_LCONV_TO_OVF_U4:
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 6);
-                       s390_llong(code, 4294967295);
-                       s390_clg  (code, ins->sreg1, 0, s390_r13, 4);   
+                       S390_SET  (code, s390_r0, 4294967295);
+                       s390_clgr (code, ins->sreg1, s390_r0);
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_GT, "OverflowException");
                        s390_ltgr (code, ins->sreg1, ins->sreg1);
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_LT, "OverflowException");
                        s390_llgfr(code, ins->dreg, ins->sreg1);
                        break;
                case OP_LCONV_TO_OVF_I4_UN:
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 6);
-                       s390_llong(code, 2147483647);
-                       s390_cg   (code, ins->sreg1, 0, s390_r13, 4);
+                       S390_SET  (code, s390_r0, 2147483647);
+                       s390_cgr  (code, ins->sreg1, s390_r0);
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_GT, "OverflowException");
                        s390_ltgr (code, ins->sreg1, ins->sreg1);
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_LT, "OverflowException");
                        s390_lgfr (code, ins->dreg, ins->sreg1);
                        break;
-               case OP_FMOVE:
-               case OP_FCONV_TO_R4: {
+               case OP_FMOVE: {
                        if (ins->dreg != ins->sreg1) {
                                s390_ldr   (code, ins->dreg, ins->sreg1);
                        }
                }
                        break;
+               case OP_FCONV_TO_R4: {
+                       s390_ledbr (code, ins->dreg, ins->sreg1);
+                       s390_ldebr (code, ins->dreg, ins->dreg);
+               }
+                       break;
                case OP_S390_SETF4RET: {
                        s390_ledbr (code, ins->dreg, ins->sreg1);
                }
@@ -4057,11 +3832,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_TLS_GET: {
                        if (s390_is_imm16 (ins->inst_offset)) {
                                s390_lghi (code, s390_r13, ins->inst_offset);
+                       } else if (s390_is_imm32 (ins->inst_offset)) {
+                               s390_lgfi (code, s390_r13, ins->inst_offset);
                        } else {
-                               s390_bras (code, s390_r13, 0);
-                               s390_j    (code, 4);
-                               s390_llong(code, ins->inst_offset);
-                               s390_lg   (code, s390_r13, 0, s390_r13, 4);
+                               S390_SET  (code, s390_r13, ins->inst_offset);
                        }
                        s390_ear (code, s390_r1, 0);
                        s390_sllg(code, s390_r1, s390_r1, 0, 32);
@@ -4095,21 +3869,18 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_ARGLIST: {
                        int offset = cfg->sig_cookie + cfg->stack_usage;
 
-                       if (s390_is_imm16 (offset))
+                       if (s390_is_imm16 (offset)) {
                                s390_lghi (code, s390_r0, offset);
-                       else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, offset);
-                               s390_lg   (code, s390_r0, 0, s390_r13, 0);
+                       } else if (s390_is_imm32 (offset)) {
+                               s390_lgfi (code, s390_r0, offset);
+                       } else {
+                               S390_SET  (code, s390_r0, offset);
                        }
                        s390_agr  (code, s390_r0, cfg->frame_reg);
                        s390_stg  (code, s390_r0, 0, ins->sreg1, 0);
                }
                        break;
                case OP_FCALL: {
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 6);
                        call = (MonoCallInst*)ins;
                        if (ins->flags & MONO_INST_HAS_METHOD)
                                mono_add_patch_info (cfg, code-cfg->native_code,
@@ -4119,9 +3890,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                mono_add_patch_info (cfg, code-cfg->native_code,
                                                     MONO_PATCH_INFO_ABS, 
                                                     call->fptr);
-                       s390_llong(code, 0);
-                       s390_lg   (code, s390_r14, 0, s390_r13, 4);
-                       s390_basr (code, s390_r14, s390_r14);
+                       S390_CALL_TEMPLATE (code, s390_r14);
                        if (call->signature->ret->type == MONO_TYPE_R4)
                                s390_ldebr (code, s390_f0, s390_f0);
                }
@@ -4131,8 +3900,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_VCALL2:
                case OP_VOIDCALL:
                case OP_CALL: {
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 6);
                        call = (MonoCallInst*)ins;
                        if (ins->flags & MONO_INST_HAS_METHOD)
                                mono_add_patch_info (cfg, code-cfg->native_code,
@@ -4142,9 +3909,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                mono_add_patch_info (cfg, code-cfg->native_code,
                                                     MONO_PATCH_INFO_ABS, 
                                                     call->fptr);
-                       s390_llong(code, 0);
-                       s390_lg   (code, s390_r14, 0, s390_r13, 4);
-                       s390_basr (code, s390_r14, s390_r14);
+                       S390_CALL_TEMPLATE (code, s390_r14);
                }
                        break;
                case OP_FCALL_REG: {
@@ -4204,13 +3969,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                int lmfOffset = cfg->stack_usage - sizeof(MonoLMF);
 
                                s390_lgr (code, s390_r13, cfg->frame_reg);
-                               if (s390_is_imm16(lmfOffset))
+                               if (s390_is_imm16(lmfOffset)) {
                                        s390_aghi (code, s390_r13, lmfOffset);
-                               else {
-                                       s390_basr (code, s390_r14, 0);
-                                       s390_j    (code, 4);
-                                       s390_word (code, lmfOffset);
-                                       s390_agf  (code, s390_r13, 0, s390_r14, 4);
+                               } else if (s390_is_imm32(lmfOffset)) {
+                                       s390_agfi (code, s390_r13, lmfOffset);
+                               } else {
+                                       S390_SET  (code, s390_r13, lmfOffset);
                                }
                                s390_lgr (code, s390_r14, STK_BASE);
                                s390_sgr (code, s390_r14, s390_r1);
@@ -4236,24 +4000,16 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_THROW: {
                        s390_lgr  (code, s390_r2, ins->sreg1);
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 6);
                        mono_add_patch_info (cfg, code-cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD, 
                                             (gpointer) "mono_arch_throw_exception");
-                       s390_llong(code, 0);
-                       s390_lg   (code, s390_r14, 0, s390_r13, 4);
-                       s390_basr (code, s390_r14, s390_r14);
+                       S390_CALL_TEMPLATE(code, s390_r14);
                }
                        break;
                case OP_RETHROW: {
                        s390_lgr  (code, s390_r2, ins->sreg1);
-                       s390_basr (code, s390_r13, 0);
-                       s390_j    (code, 6);
                        mono_add_patch_info (cfg, code-cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD, 
                                             (gpointer) "mono_arch_rethrow_exception");
-                       s390_llong(code, 0);
-                       s390_lg   (code, s390_r14, 0, s390_r13, 4);
-                       s390_basr (code, s390_r14, s390_r14);
+                       S390_CALL_TEMPLATE(code, s390_r14);
                }
                        break;
                case OP_START_HANDLER: {
@@ -4329,6 +4085,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                         */
                        for (i = 0; i < (BREAKPOINT_SIZE / S390X_NOP_SIZE); ++i)
                                s390_nop (code);
+
+                       /*
+                        * Add an additional nop so skipping the bp doesn't cause the ip to point
+                        * to another IL offset.
+                        */
+                       s390_nop (code);
+
                        break;
                }
        
@@ -4465,11 +4228,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (*((double *) ins->inst_p0) == 0) {
                                s390_lzdr (code, ins->dreg);
                        } else {
-                               s390_basr  (code, s390_r13, 0);
-                               s390_j     (code, 6);
-                               s390_llong (code, ins->inst_p0);
-                               s390_lg    (code, s390_r13, 0, s390_r13, 4);
-                               s390_ld    (code, ins->dreg, 0, s390_r13, 0);
+                               S390_SET  (code, s390_r13, ins->inst_p0);
+                               s390_ld   (code, ins->dreg, 0, s390_r13, 0);
                        }
                }
                        break;
@@ -4477,10 +4237,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (*((float *) ins->inst_p0) == 0) {
                                s390_lzdr (code, ins->dreg);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, ins->inst_p0);
-                               s390_lg   (code, s390_r13, 0, s390_r13, 4);
+                               S390_SET  (code, s390_r13, ins->inst_p0);
                                s390_ldeb (code, ins->dreg, 0, s390_r13, 0);
                        }
                }
@@ -4510,28 +4267,25 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_ICONV_TO_R_UN: {
                        s390_cdfbr (code, ins->dreg, ins->sreg1);
                        s390_ltr   (code, ins->sreg1, ins->sreg1);
-                       s390_jnl   (code, 12);
-                       s390_basr  (code, s390_r13, 0);
-                       s390_j     (code, 6);
-                       s390_word  (code, 0x41f00000);
-                       s390_word  (code, 0);
-                       s390_adb   (code, ins->dreg, 0, s390_r13, 4);
+                       s390_jnl   (code, 8);
+                       S390_SET   (code, s390_r13, 0x41f0000000000000llu);
+                       s390_ldgr  (code, s390_f15, s390_r13);
+                       s390_adbr  (code, ins->dreg, s390_f15);
                }
                        break;
                case OP_LCONV_TO_R_UN: {
                        s390_cdgbr (code, ins->dreg, ins->sreg1);
                        s390_ltgr  (code, ins->sreg1, ins->sreg1);
-                       s390_jnl   (code, 12);
-                       s390_basr  (code, s390_r13, 0);
-                       s390_j     (code, 6);
-                       s390_word  (code, 0x41f00000);
-                       s390_word  (code, 0);
-                       s390_adb   (code, ins->dreg, 0, s390_r13, 4);
+                       s390_jnl   (code, 8);
+                       S390_SET   (code, s390_r13, 0x41f0000000000000llu);
+                       s390_ldgr  (code, s390_f15, s390_r13);
+                       s390_adbr  (code, ins->dreg, s390_f15);
                }
                        break;
                case OP_LCONV_TO_R4:
                case OP_ICONV_TO_R4: {
-                       s390_cdgbr (code, ins->dreg, ins->sreg1);
+                       s390_cegbr (code, ins->dreg, ins->sreg1);
+                       s390_ldebr (code, ins->dreg, ins->dreg);
                }
                        break;
                case OP_LCONV_TO_R8:
@@ -4733,31 +4487,31 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                        if (ins->inst_offset > 0) {
                                                if (s390_is_imm16 (ins->inst_offset)) {
                                                        s390_aghi (code, s390_r0, ins->inst_offset);
+                                               } else if (s390_is_imm32 (ins->inst_offset)) {
+                                                       s390_agfi (code, s390_r0, ins->inst_offset);
                                                } else {
-                                                       s390_basr (code, s390_r13, 0);
-                                                       s390_j    (code, 6);
-                                                       s390_llong(code, ins->inst_offset);
-                                                       s390_ag   (code, s390_r0, 0, s390_r13, 4);
+                                                       S390_SET  (code, s390_r13, ins->inst_offset);
+                                                       s390_agr  (code, s390_r0, s390_r13);
                                                }
                                        }
                                        s390_lgr  (code, s390_r12, ins->sreg1);
                                        if (ins->inst_imm > 0) {
                                                if (s390_is_imm16 (ins->inst_imm)) {
                                                        s390_aghi (code, s390_r12, ins->inst_imm);
+                                               } else if (s390_is_imm32 (ins->inst_imm)) {
+                                                       s390_agfi (code, s390_r12, ins->inst_imm);
                                                } else {
-                                                       s390_basr (code, s390_r13, 0);
-                                                       s390_j    (code, 6);
-                                                       s390_llong(code, ins->inst_imm);
-                                                       s390_ag   (code, s390_r12, 0, s390_r13, 4);
+                                                       S390_SET  (code, s390_r13, ins->inst_imm);
+                                                       s390_agr  (code, s390_r12, s390_r13);
                                                }
                                        }
                                        if (s390_is_imm16 (ins->backend.size)) {
                                                s390_lghi (code, s390_r1, ins->backend.size);
+                                       } else if (s390_is_imm32 (ins->inst_offset)) {
+                                               s390_agfi (code, s390_r1, ins->backend.size);
                                        } else {
-                                               s390_basr (code, s390_r13, 0);
-                                               s390_j    (code, 6);
-                                               s390_llong(code, ins->backend.size);
-                                               s390_lg   (code, s390_r1, 0, s390_r13, 4);
+                                               S390_SET  (code, s390_r13, ins->backend.size);
+                                               s390_agr  (code, s390_r1, s390_r13);
                                        }
                                        s390_lgr  (code, s390_r13, s390_r1);
                                        s390_mvcle(code, s390_r0, s390_r12, 0, 0);
@@ -4820,11 +4574,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_lgr  (code, ins->dreg, ins->sreg1);
                        if (s390_is_imm16 (cfg->stack_offset)) {
                                s390_aghi (code, ins->dreg, cfg->stack_offset);
+                       } else if (s390_is_imm32 (cfg->stack_offset)) {
+                               s390_agfi (code, ins->dreg, cfg->stack_offset);
                        } else {
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-                               s390_llong(code, cfg->stack_offset);
-                               s390_ag   (code, ins->dreg, 0, s390_r13, 4);
+                               S390_SET  (code, s390_r13, cfg->stack_offset);
+                               s390_agr  (code, ins->dreg, s390_r13);
                        }
                }
                        break;  
@@ -4901,33 +4655,36 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain,
 
                switch (patch_info->type) {
                        case MONO_PATCH_INFO_IP:
-                       case MONO_PATCH_INFO_EXC_NAME:
                        case MONO_PATCH_INFO_LDSTR:
                        case MONO_PATCH_INFO_TYPE_FROM_HANDLE: 
                        case MONO_PATCH_INFO_LDTOKEN: 
                        case MONO_PATCH_INFO_EXC:
-                       case MONO_PATCH_INFO_ABS:
+                               s390_patch_addr (ip, (guint64) target);
+                               continue;
                        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_CLASS_INIT:
                        case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
-                               s390_patch_addr (ip, (guint64) target);
+                       case MONO_PATCH_INFO_RGCTX_FETCH:
+                       case MONO_PATCH_INFO_ABS: {
+                               S390_EMIT_CALL (ip, target);
                                continue;
+                       }
                        case MONO_PATCH_INFO_SWITCH: 
                                /*----------------------------------*/
                                /* ip points at the basr r13,0/j +4 */
                                /* instruction the vtable value     */
                                /* follows this (i.e. ip+6)         */
                                /*----------------------------------*/
-                               *((gconstpointer *)(ip+6)) = target;
+                               S390_EMIT_LOAD (ip, target);
                                continue;
                        case MONO_PATCH_INFO_METHODCONST:
                        case MONO_PATCH_INFO_CLASS:
                        case MONO_PATCH_INFO_IMAGE:
                        case MONO_PATCH_INFO_FIELD:
                        case MONO_PATCH_INFO_IID:
+                       case MONO_PATCH_INFO_EXC_NAME:
                                target = S390_RELATIVE(target, ip);
                                s390_patch_rel (ip, (guint64) target);
                                continue;
@@ -5109,13 +4866,15 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        s390_lgr  (code, s390_r11, STK_BASE);
        if (s390_is_imm16 (alloc_size)) {
                s390_aghi (code, STK_BASE, -alloc_size);
-       } else { 
+       } else if (s390_is_imm32 (alloc_size)) { 
+               s390_agfi (code, STK_BASE, -alloc_size);
+       } else {
                int stackSize = alloc_size;
-               while (stackSize > 32767) {
-                       s390_aghi (code, STK_BASE, -32767);
-                       stackSize -= 32767;
+               while (stackSize > INT_MAX) {
+                       s390_agfi (code, STK_BASE, -INT_MAX);
+                       stackSize -= INT_MAX;
                }
-               s390_aghi (code, STK_BASE, -stackSize);
+               s390_agfi (code, STK_BASE, -stackSize);
        }
        s390_stg  (code, s390_r11, 0, STK_BASE, 0);
 
@@ -5282,14 +5041,10 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                /* On return from this call r2 have the address of the &lmf      */
                /*---------------------------------------------------------------*/
                if (lmf_addr_tls_offset == -1) {
-                       s390_basr(code, s390_r14, 0);
-                       s390_j   (code, 6);
                        mono_add_patch_info (cfg, code - cfg->native_code, 
                                             MONO_PATCH_INFO_INTERNAL_METHOD, 
                                             (gpointer)"mono_get_lmf_addr");
-                       s390_llong(code, 0);
-                       s390_lg   (code, s390_r1, 0, s390_r14, 4);
-                       s390_basr (code, s390_r14, s390_r1);
+                       S390_CALL_TEMPLATE(code, s390_r1);
                } else {
                        /*-------------------------------------------------------*/
                        /* Get LMF by getting value from thread level storage    */
@@ -5325,10 +5080,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                /*---------------------------------------------------------------*/     
                /* save method info                                              */     
                /*---------------------------------------------------------------*/     
-               s390_basr  (code, s390_r1, 0);                                          
-               s390_j     (code, 6);
-               s390_llong (code, method);                                              
-               s390_lg    (code, s390_r1, 0, s390_r1, 4);                      
+               S390_SET   (code, s390_r1, method);
                s390_stg   (code, s390_r1, 0, s390_r13,                                 
                            G_STRUCT_OFFSET(MonoLMF, method));                          
                                                                                
@@ -5499,27 +5251,19 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
                                /*---------------------------------------------*/
                                /* Patch the parameter passed to the handler   */ 
                                /*---------------------------------------------*/
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
-//                             s390_llong(code, patch_info->data.target);
-                               s390_llong(code, exc_class->type_token);
+                               S390_SET  (code, s390_r2, exc_class->type_token);
                                /*---------------------------------------------*/
                                /* Load return address & parameter register    */
                                /*---------------------------------------------*/
                                s390_larl (code, s390_r14, (guint64)S390_RELATIVE((patch_info->ip.i +
                                                           cfg->native_code + 8), code));
-                               s390_lg   (code, s390_r2, 0, s390_r13, 4);
                                /*---------------------------------------------*/
                                /* Reuse the current patch to set the jump     */
                                /*---------------------------------------------*/
-                               s390_basr (code, s390_r13, 0);
-                               s390_j    (code, 6);
                                patch_info->type      = MONO_PATCH_INFO_INTERNAL_METHOD;
                                patch_info->data.name = "mono_arch_throw_corlib_exception";
                                patch_info->ip.i      = code - cfg->native_code;
-                               s390_llong(code, 0);
-                               s390_lg   (code, s390_r1, 0, s390_r13, 4);
-                               s390_br   (code, s390_r1);
+                               S390_BR_TEMPLATE (code, s390_r1);
                        }
                        break;
                }
@@ -5572,7 +5316,7 @@ mono_arch_free_jit_tls_data (MonoJitTlsData *tls)
 
 /*------------------------------------------------------------------*/
 /*                                                                  */
-/* Name                - mono_arch_emit_inst_for_method                        */
+/* Name                - mono_arch_emit_inst_for_method                    */
 /*                                                                  */
 /*------------------------------------------------------------------*/
 
@@ -5745,7 +5489,7 @@ mono_arch_flush_register_windows (void)
 gboolean 
 mono_arch_is_inst_imm (gint64 imm)
 {
-       return s390_is_imm16 (imm);
+       return s390_is_imm32 (imm);
 }
 
 /*========================= End of Function ========================*/
@@ -5819,7 +5563,40 @@ mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 }
 
 /*========================= End of Function ========================*/
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_install_handler_block_guard             */
+/*                                                                  */
+/* Function    -                                                   */
+/*                                                                 */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_install_handler_block_guard (MonoJitInfo *ji, MonoJitExceptionInfo *clause, 
+                                      MonoContext *ctx, gpointer new_value)
+{
+       int offset;
+       gpointer *sp, old_value;
+       char *bp;
+
+       offset = clause->exvar_offset;
 
+       /*Load the spvar*/
+       bp = MONO_CONTEXT_GET_BP (ctx);
+       sp = *(gpointer*)(bp + offset);
+
+       old_value = *sp;
+       if (old_value < ji->code_start || (char*)old_value > ((char*)ji->code_start + ji->code_size))
+               return old_value;
+
+       *sp = new_value;
+
+       return old_value;
+}
+
+/*========================= End of Function ========================*/
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name                - get_delegate_invoke_impl.                         */
@@ -6027,55 +5804,39 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain,
                if (item->is_equals) {
                        if (item->check_target_idx) {
                                if (!item->compare_done) {
-                                       s390_basr (code, s390_r13, s390_r0);
-                                       s390_j    (code, 6);
-                                       s390_llong(code, item->key);
-                                       s390_lg   (code, s390_r0, 0, s390_r13, 4);
+                                       S390_SET  (code, s390_r0, item->key);
                                        s390_cgr  (code, s390_r0, MONO_ARCH_IMT_REG);
                                }
                                item->jmp_code = (guint8*) code;
                                s390_jcl (code, S390_CC_NE, 0);
                                
-                               s390_basr (code, s390_r13, s390_r0);
-                               s390_j    (code, 6);
-                               if (item->has_target_code)  {
-                                       s390_llong(code, item->value.target_code);
-                                       s390_lg   (code, s390_r1, 0, s390_r13, 4);
-                               } else {        
-                                       s390_llong(code, (&(vtable->vtable [item->value.vtable_slot])));
-                                       s390_lg   (code, s390_r1, 0, s390_r13, 4);
-                                       s390_lg   (code, s390_r1, 0, s390_r1, 0);
+                               if (item->has_target_code) {
+                                       S390_SET (code, s390_r1, item->value.target_code);
+                               } else {
+                                       S390_SET (code, s390_r1, (&(vtable->vtable [item->value.vtable_slot])));
+                                       s390_lg  (code, s390_r1, 0, s390_r1, 0);
                                }
                                s390_br   (code, s390_r1);
                        } else {
                                if (fail_tramp) {
                                        gint64  target;
 
-                                       s390_basr (code, s390_r13, s390_r0);
-                                       s390_j    (code, 6);
-                                       s390_llong(code, item->key);
-                                       s390_lg   (code, s390_r0, 0, s390_r13, 4);
+                                       S390_SET  (code, s390_r0, item->key);
                                        s390_cgr  (code, s390_r0, MONO_ARCH_IMT_REG);
                                        item->jmp_code = (guint8*) code;
                                        s390_jcl  (code, S390_CC_NE, 0);
-                                       s390_basr (code, s390_r13, s390_r0);
-                                       s390_j    (code, 6);
                                        if (item->has_target_code) {
-                                               s390_llong(code, item->value.target_code);
-                                               s390_lg   (code, s390_r1, 0, s390_r13, 4);
+                                               S390_SET (code, s390_r1, item->value.target_code);
                                        } else {
                                                g_assert (vtable);
-                                               s390_llong(code, (&(vtable->vtable [item->value.vtable_slot])));
-                                               s390_lg   (code, s390_r1, 0, s390_r13, 4);
+                                               S390_SET  (code, s390_r1, 
+                                                          (&(vtable->vtable [item->value.vtable_slot])));
                                                s390_lg   (code, s390_r1, 0, s390_r1, 0);
                                        }
                                        s390_br   (code, s390_r1);
                                        target = S390_RELATIVE(code, item->jmp_code);
                                        s390_patch_rel(item->jmp_code+2, target);
-                                       s390_basr (code, s390_r13, s390_r0);
-                                       s390_j    (code, 6);
-                                       s390_llong(code, fail_tramp);
-                                       s390_lg   (code, s390_r1, 0, s390_r13, 4);
+                                       S390_SET  (code, s390_r1, fail_tramp);
                                        s390_br   (code, s390_r1);
                                        item->jmp_code = NULL;
                                } else {
@@ -6083,28 +5844,21 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain,
 #if ENABLE_WRONG_METHOD_CHECK
                                        g_assert_not_reached ();
 #endif
-                                       s390_basr (code, s390_r13, s390_r0);
-                                       s390_j    (code, 6);
-                                       s390_llong(code, (&(vtable->vtable [item->value.vtable_slot])));
-                                       s390_lg   (code, s390_r1, 0, s390_r13, 4);
+                                       S390_SET (code, s390_r1, (&(vtable->vtable [item->value.vtable_slot])));
                                        s390_lg   (code, s390_r1, 0, s390_r1, 0);
                                        s390_br   (code, s390_r1);
-#if ENABLE_WRONG_METHOD_CHECK
-                                       g_assert_not_reached ();
-#endif
                                }
                        }
                } else {
-                       s390_basr (code, s390_r13, s390_r0);
-                       s390_j    (code, 6);
-                       s390_llong(code, item->key);
-                       s390_lg   (code, s390_r0, 0, s390_r13, 4);
+                       S390_SET  (code, s390_r0, item->key);
                        s390_cgr  (code, MONO_ARCH_IMT_REG, s390_r0);
                        item->jmp_code = (guint8 *) code;
                        s390_jcl  (code, S390_CC_GE, 0);
                }
        }
-       /* patch the branches to get to the target items */
+       /* 
+        * patch the branches to get to the target items 
+        */
        for (i = 0; i < count; ++i) {
                MonoIMTCheckItem *item = imt_entries [i];
                if (item->jmp_code) {
@@ -6242,7 +5996,10 @@ gboolean
 mono_arch_is_breakpoint_event (void *info, void *sigctx)
 {
        siginfo_t* sinfo = (siginfo_t*) info;
-       /* Sometimes the address is off by 4 */
+
+       /* 
+        * Sometimes the address is off by 4 
+        */
        if (sinfo->si_addr >= bp_trigger_page && (guint8*)sinfo->si_addr <= (guint8*)bp_trigger_page + 128)
                return TRUE;
        else
@@ -6264,7 +6021,7 @@ mono_arch_is_breakpoint_event (void *info, void *sigctx)
 void
 mono_arch_skip_breakpoint (MonoContext *ctx, MonoJitInfo *ji)
 {
-       MONO_CONTEXT_SET_IP (ctx, (guint8*)MONO_CONTEXT_GET_IP (ctx) + BREAKPOINT_SIZE);
+       MONO_CONTEXT_SET_IP (ctx, ((guint8*)MONO_CONTEXT_GET_IP (ctx) + sizeof(RXY_Format)));
 }
 
 /*========================= End of Function ========================*/
@@ -6315,7 +6072,9 @@ mono_arch_is_single_step_event (void *info, void *sigctx)
 {
        siginfo_t* sinfo = (siginfo_t*) info;
 
-       /* Sometimes the address is off by 4 */
+       /* 
+        * Sometimes the address is off by 4 
+        */
        if (sinfo->si_addr >= ss_trigger_page && (guint8*)sinfo->si_addr <= (guint8*)ss_trigger_page + 128)
                return TRUE;
        else
index a5be8f01087162cbde7ed649cf1cb945bc0464aa..8ca5fb27ad29937182d013f1f838007ed13f0521 100644 (file)
 /* Parameters used by the register allocator */
 /*-------------------------------------------*/
 
-#define S390_LONG(loc, opy, op, r, ix, br, off)                                        \
-       if (mono_hwcap_s390x_has_ld) {                                          \
-               if (s390_is_imm20(off)) {                                       \
-                       s390_##opy (loc, r, ix, br, off);                       \
-               } else {                                                        \
-                       s390_basr (code, s390_r13, 0);                          \
-                       s390_j    (code, 6);                                    \
-                       s390_llong(code, off);                                  \
-                       s390_lg   (code, s390_r13, 0, s390_r13, 4);             \
-                       s390_##op (code, r, s390_r13, br, 0);                   \
-               }                                                               \
-       } else {                                                                \
-               if (s390_is_uimm12(off)) {                                      \
-                       s390_##op (loc, r, ix, br, off);                        \
-               } else {                                                        \
-                       s390_basr (code, s390_r13, 0);                          \
-                       s390_j    (code, 6);                                    \
-                       s390_llong(code, off);                                  \
-                       s390_lg   (code, s390_r13, 0, s390_r13, 4);             \
-                       s390_##op (code, r, s390_r13, br, 0);                   \
-               }                                                               \
-       }
-
 struct MonoLMF {
        gpointer    previous_lmf;
        gpointer    lmf_addr;
@@ -62,46 +39,6 @@ typedef struct
        void *return_address;
 } MonoS390StackFrame;
 
-typedef struct
-{
-       char    n3:1;           // N3 instructions present
-       char    zArch:1;        // z/Architecture mode installed
-       char    zAct:1;         // z/Architecture mode active
-       char    date:1;         // DATE enhancement facility
-       char    idte1:1;        // IDTE present (PST)
-       char    idte2:1;        // IDTE present (REG)
-       char    asnlx:1;        // ASN and LX reuse facility
-       char    stfle:1;        // STFLE installed
-       char    zDATe:1;        // Enhanced DAT in z mode
-       char    srstat:1;       // Sense running status facility
-       char    cSSKE:1;        // Conditional SSKE facility
-       char    topo:1;         // COnfiguration topology facility
-       char    xTrans2:1;      // Extended translation facility 2
-       char    msgSec:1;       // Message security facility
-       char    longDsp:1;      // Long displacement facility
-       char    hiPerfLD:1;     // High performance long displacement facility
-       char    hfpMAS:1;       // HFP multiply-and-add/subtrace facility
-       char    xImm:1;         // Extended immediate facility
-       char    xTrans3:1;      // Extended translation facility 3
-       char    hfpUnX:1;       // HFP unnormalized extension facility
-       char    etf2:1;         // ETF2-enhancement facility
-       char    stckf:1;        // Store-clock-fast facility
-       char    parse:1;        // Parsing enhancement facility
-       char    mvcos:1;        // MVCOS facility
-       char    todSteer:1;     // TOD-clock steering facility
-       char    etf3:1;         // ETF3-enhancement facility
-       char    xCPUtm:1;       // Extract CPU time facility
-       char    csst:1;         // Compare-swap-and-store facility
-       char    csst2:1;        // Compare-swap-and-store facility 2
-       char    giX:1;          // General instructions extension facility
-       char    exX:1;          // Execute extensions facility
-       char    ibm:1;          // IBM internal use
-       char    fps:1;          // Floating point support enhancement
-       char    dfp:1;          // Decimal floating point facility
-       char    hiDFP:1;        // High Performance DFP facility
-       char    pfpo:1;         // PFPO instruction facility
-} __attribute__((aligned(8))) facilityList_t;
-       
 // #define MONO_ARCH_SIGSEGV_ON_ALTSTACK               1
 #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN               1
 #define MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS             1
@@ -128,6 +65,8 @@ typedef struct
 #define MONO_ARCH_GC_MAPS_SUPPORTED                    1
 #define MONO_ARCH_GSHARED_SUPPORTED                    1
 #define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT             1
+#define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD             1
+#define MONO_ARCH_HAVE_INVALIDATE_METHOD               1
 
 #define S390_STACK_ALIGNMENT            8
 #define S390_FIRST_ARG_REG             s390_r2
index bb71ec48192694ee29ae91b9ad4c347c23f7bddf..c43b1d0102f6d156e58b801e317e1c9bac36a8b5 100644 (file)
@@ -50,8 +50,6 @@
 
 #include "jit-icalls.h"
 
-gboolean mono_win_chained_exception_needs_run;
-
 void
 mono_runtime_install_handlers (void)
 {
@@ -83,7 +81,8 @@ mono_runtime_cleanup_handlers (void)
 gboolean
 SIG_HANDLER_SIGNATURE (mono_chain_signal)
 {
-       mono_win_chained_exception_needs_run = TRUE;
+       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       jit_tls->mono_win_chained_exception_needs_run = TRUE;
        return TRUE;
 }
 
index 02a6d1daa781c7916d546236bdc4ad61452d0368..3de9b0be1a226801938979a57a19bb9a0c8bae13 100644 (file)
@@ -217,6 +217,8 @@ typedef struct {
        /* The index of the vret arg in the argument list */
        int vret_arg_index;
        int vret_arg_offset;
+       /* Argument space popped by the callee */
+       int callee_stack_pop;
        ArgInfo ret;
        ArgInfo sig_cookie;
        ArgInfo args [1];
@@ -593,6 +595,11 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                stack_size += cinfo->stack_align_amount;
        }
 
+       if (cinfo->vtype_retaddr) {
+               /* if the function returns a struct on stack, the called method already does a ret $0x4 */
+               cinfo->callee_stack_pop = 4;
+       }
+
        cinfo->stack_usage = stack_size;
        cinfo->reg_usage = gr;
        cinfo->freg_usage = fr;
@@ -1209,6 +1216,10 @@ mono_arch_create_vars (MonoCompile *cfg)
                cfg->vret_addr = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_ARG);
        }
 
+#ifdef MONO_X86_NO_PUSHES
+       cfg->arch.no_pushes = TRUE;
+#endif
+
        if (cfg->method->save_lmf) {
                cfg->create_lmf_var = TRUE;
                cfg->lmf_ir = TRUE;
@@ -1267,9 +1278,17 @@ emit_sig_cookie (MonoCompile *cfg, MonoCallInst *call, CallInfo *cinfo)
        if (cfg->compile_aot) {
                sig_reg = mono_alloc_ireg (cfg);
                MONO_EMIT_NEW_SIGNATURECONST (cfg, sig_reg, tmp_sig);
-               MONO_EMIT_NEW_UNALU (cfg, OP_X86_PUSH, -1, sig_reg);
+               if (cfg->arch.no_pushes) {
+                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, cinfo->sig_cookie.offset, sig_reg);
+               } else {
+                       MONO_EMIT_NEW_UNALU (cfg, OP_X86_PUSH, -1, sig_reg);
+               }
        } else {
-               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_X86_PUSH_IMM, -1, -1, tmp_sig);
+               if (cfg->arch.no_pushes) {
+                       MONO_EMIT_NEW_STORE_MEMBASE_IMM (cfg, OP_STORE_MEMBASE_IMM, X86_ESP, cinfo->sig_cookie.offset, tmp_sig);
+               } else {
+                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_X86_PUSH_IMM, -1, -1, tmp_sig);
+               }
        }
 }
 
@@ -1394,6 +1413,9 @@ emit_gc_param_slot_def (MonoCompile *cfg, int sp_offset, MonoType *t)
        if (cfg->compute_gc_maps) {
                MonoInst *def;
 
+               /* Needs checking if the feature will be enabled again */
+               g_assert (!cfg->arch.no_pushes);
+
                /* On x86, the offsets are from the sp value before the start of the call sequence */
                if (t == NULL)
                        t = &mono_defaults.int_class->byval_arg;
@@ -1416,11 +1438,12 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
        sig_ret = mini_replace_type (sig->ret);
 
        cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
+       call->call_info = cinfo;
 
        if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG))
                sentinelpos = sig->sentinelpos + (sig->hasthis ? 1 : 0);
 
-       if (cinfo->need_stack_align) {
+       if (cinfo->need_stack_align && !cfg->arch.no_pushes) {
                MONO_INST_NEW (cfg, arg, OP_SUB_IMM);
                arg->dreg = X86_ESP;
                arg->sreg1 = X86_ESP;
@@ -1451,7 +1474,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
        /* Handle the case where there are no implicit arguments */
        if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG) && (n == sentinelpos)) {
                emit_sig_cookie (cfg, call, cinfo);
-               sp_offset += 4;
+               sp_offset = (cfg->arch.no_pushes) ? cinfo->sig_cookie.offset : (sp_offset + 4);
                emit_gc_param_slot_def (cfg, sp_offset, NULL);
        }
 
@@ -1462,13 +1485,23 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                int argsize;
 
                if (cinfo->vtype_retaddr && cinfo->vret_arg_index == 1 && i == 0) {
-                       /* Push the vret arg before the first argument */
                        MonoInst *vtarg;
-                       MONO_INST_NEW (cfg, vtarg, OP_X86_PUSH);
-                       vtarg->type = STACK_MP;
-                       vtarg->sreg1 = call->vret_var->dreg;
-                       MONO_ADD_INS (cfg->cbb, vtarg);
-                       sp_offset += 4;
+                       /* Push the vret arg before the first argument */
+                       if (cfg->arch.no_pushes) {
+                               MONO_INST_NEW (cfg, vtarg, OP_STORE_MEMBASE_REG);
+                               vtarg->type = STACK_MP;
+                               vtarg->inst_destbasereg = X86_ESP;
+                               vtarg->sreg1 = call->vret_var->dreg;
+                               vtarg->inst_offset = cinfo->ret.offset;
+                               MONO_ADD_INS (cfg->cbb, vtarg);
+                               sp_offset = cinfo->ret.offset;
+                       } else {
+                               MONO_INST_NEW (cfg, vtarg, OP_X86_PUSH);
+                               vtarg->type = STACK_MP;
+                               vtarg->sreg1 = call->vret_var->dreg;
+                               MONO_ADD_INS (cfg->cbb, vtarg);
+                               sp_offset += 4;
+                       }
                        emit_gc_param_slot_def (cfg, sp_offset, NULL);
                }
 
@@ -1521,48 +1554,70 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 
                                MONO_ADD_INS (cfg->cbb, arg);
                                if (ainfo->storage != ArgValuetypeInReg) {
-                                       sp_offset += size;
+                                       sp_offset = (cfg->arch.no_pushes) ? ainfo->offset : (sp_offset + size);
                                        emit_gc_param_slot_def (cfg, sp_offset, orig_type);
                                }
                        }
                } else {
-                       argsize = 4;
-
                        switch (ainfo->storage) {
                        case ArgOnStack:
-                               arg->opcode = OP_X86_PUSH;
                                if (!t->byref) {
                                        if (t->type == MONO_TYPE_R4) {
-                                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, 4);
-                                               arg->opcode = OP_STORER4_MEMBASE_REG;
-                                               arg->inst_destbasereg = X86_ESP;
-                                               arg->inst_offset = 0;
+                                               if (cfg->arch.no_pushes) {
+                                                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORER4_MEMBASE_REG, X86_ESP, ainfo->offset, in->dreg);
+                                               } else {
+                                                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, 4);
+                                                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORER4_MEMBASE_REG, X86_ESP, 0, in->dreg);
+                                               }
                                                argsize = 4;
                                        } else if (t->type == MONO_TYPE_R8) {
-                                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, 8);
-                                               arg->opcode = OP_STORER8_MEMBASE_REG;
-                                               arg->inst_destbasereg = X86_ESP;
-                                               arg->inst_offset = 0;
+                                               if (cfg->arch.no_pushes) {
+                                                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORER8_MEMBASE_REG, X86_ESP, ainfo->offset, in->dreg);
+                                               } else {
+                                                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, 8);
+                                                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORER8_MEMBASE_REG, X86_ESP, 0, in->dreg);
+                                               }
                                                argsize = 8;
                                        } else if (t->type == MONO_TYPE_I8 || t->type == MONO_TYPE_U8) {
-                                               arg->sreg1 ++;
-                                               MONO_EMIT_NEW_UNALU (cfg, OP_X86_PUSH, -1, in->dreg + 2);
-                                               sp_offset += 4;
+                                               if (cfg->arch.no_pushes) {
+                                                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, ainfo->offset + 4, in->dreg + 2);
+                                                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, ainfo->offset, in->dreg + 1);
+                                               } else {
+                                                       MONO_EMIT_NEW_UNALU (cfg, OP_X86_PUSH, -1, in->dreg + 2);
+                                                       MONO_EMIT_NEW_UNALU (cfg, OP_X86_PUSH, -1, in->dreg + 1);
+                                                       sp_offset += 4;
+                                               }
+                                               argsize = 4;
+                                       } else {
+                                               if (cfg->arch.no_pushes) {
+                                                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, ainfo->offset, in->dreg);
+                                               } else {
+                                                       arg->opcode = OP_X86_PUSH;
+                                                       MONO_ADD_INS (cfg->cbb, arg);
+                                               }
+                                               argsize = 4;
                                        }
+                               } else {
+                                       if (cfg->arch.no_pushes) {
+                                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, ainfo->offset, in->dreg);
+                                       } else {
+                                               arg->opcode = OP_X86_PUSH;
+                                               MONO_ADD_INS (cfg->cbb, arg);
+                                       }
+                                       argsize = 4;
                                }
                                break;
                        case ArgInIReg:
                                arg->opcode = OP_MOVE;
                                arg->dreg = ainfo->reg;
+                               MONO_ADD_INS (cfg->cbb, arg);
                                argsize = 0;
                                break;
                        default:
                                g_assert_not_reached ();
                        }
-                       
-                       MONO_ADD_INS (cfg->cbb, arg);
 
-                       sp_offset += argsize;
+                       sp_offset = (cfg->arch.no_pushes) ? ainfo->offset : (sp_offset + argsize);
 
                        if (cfg->compute_gc_maps) {
                                if (argsize == 4) {
@@ -1579,8 +1634,12 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                                        }
                                } else {
                                        /* i8/r8 */
-                                       for (j = 0; j < argsize; j += 4)
-                                               emit_gc_param_slot_def (cfg, sp_offset - j, NULL);
+                                       for (j = 0; j < argsize; j += 4) {
+                                               if (cfg->arch.no_pushes)
+                                                       emit_gc_param_slot_def (cfg, sp_offset + j, NULL);
+                                               else
+                                                       emit_gc_param_slot_def (cfg, sp_offset - j, NULL);
+                                       }
                                }
                        }
                }
@@ -1588,7 +1647,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG) && (i == sentinelpos)) {
                        /* Emit the signature cookie just before the implicit arguments */
                        emit_sig_cookie (cfg, call, cinfo);
-                       sp_offset += 4;
+                       sp_offset = (cfg->arch.no_pushes) ? cinfo->sig_cookie.offset : (sp_offset + 4);
                        emit_gc_param_slot_def (cfg, sp_offset, NULL);
                }
        }
@@ -1609,23 +1668,29 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                                
                        mono_call_inst_add_outarg_reg (cfg, call, vtarg->dreg, cinfo->ret.reg, FALSE);
                } else if (cinfo->vtype_retaddr && cinfo->vret_arg_index == 0) {
-                       MonoInst *vtarg;
-                       MONO_INST_NEW (cfg, vtarg, OP_X86_PUSH);
-                       vtarg->type = STACK_MP;
-                       vtarg->sreg1 = call->vret_var->dreg;
-                       MONO_ADD_INS (cfg->cbb, vtarg);
-                       sp_offset += 4;
+                       if (cfg->arch.no_pushes) {
+                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, cinfo->ret.offset, call->vret_var->dreg);
+                               sp_offset = cinfo->ret.offset;
+                       } else {
+                               MonoInst *vtarg;
+                               MONO_INST_NEW (cfg, vtarg, OP_X86_PUSH);
+                               vtarg->type = STACK_MP;
+                               vtarg->sreg1 = call->vret_var->dreg;
+                               MONO_ADD_INS (cfg->cbb, vtarg);
+                               sp_offset += 4;
+                       }
                        emit_gc_param_slot_def (cfg, sp_offset, NULL);
                }
 
                /* if the function returns a struct on stack, the called method already does a ret $0x4 */
-               if (cinfo->ret.storage != ArgValuetypeInReg)
-                       cinfo->stack_usage -= 4;
+               if (!cfg->arch.no_pushes)
+                       cinfo->stack_usage -= cinfo->callee_stack_pop;
        }
 
        call->stack_usage = cinfo->stack_usage;
        call->stack_align_amount = cinfo->stack_align_amount;
-       cfg->arch.param_area_size = MAX (cfg->arch.param_area_size, sp_offset);
+       if (!cfg->arch.no_pushes)
+               cfg->arch.param_area_size = MAX (cfg->arch.param_area_size, sp_offset);
 }
 
 void
@@ -1657,24 +1722,42 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
        else {
                if (cfg->gsharedvt && mini_is_gsharedvt_klass (cfg, ins->klass)) {
                        /* Pass by addr */
-                       MONO_INST_NEW (cfg, arg, OP_X86_PUSH);
-                       arg->sreg1 = src->dreg;
-                       MONO_ADD_INS (cfg->cbb, arg);
+                       if (cfg->arch.no_pushes) {
+                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, ainfo->offset, src->dreg);
+                       } else {
+                               MONO_INST_NEW (cfg, arg, OP_X86_PUSH);
+                               arg->sreg1 = src->dreg;
+                               MONO_ADD_INS (cfg->cbb, arg);
+                       }
                } else if (size <= 4) {
-                       MONO_INST_NEW (cfg, arg, OP_X86_PUSH_MEMBASE);
-                       arg->sreg1 = src->dreg;
-
-                       MONO_ADD_INS (cfg->cbb, arg);
-               } else if (size <= 20) {        
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, ALIGN_TO (size, 4));
-                       mini_emit_memcpy (cfg, X86_ESP, 0, src->dreg, 0, size, 4);
+                       if (cfg->arch.no_pushes) {
+                               int dreg = mono_alloc_ireg (cfg);
+                               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, 0);
+                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, ainfo->offset, dreg);
+                       } else {
+                               MONO_INST_NEW (cfg, arg, OP_X86_PUSH_MEMBASE);
+                               arg->sreg1 = src->dreg;
+                               MONO_ADD_INS (cfg->cbb, arg);
+                       }
+               } else if (size <= 20) {
+                       if (cfg->arch.no_pushes) {
+                               mini_emit_memcpy (cfg, X86_ESP, ainfo->offset, src->dreg, 0, size, 4);
+                       } else {
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, ALIGN_TO (size, 4));
+                               mini_emit_memcpy (cfg, X86_ESP, 0, src->dreg, 0, size, 4);
+                       }
                } else {
-                       MONO_INST_NEW (cfg, arg, OP_X86_PUSH_OBJ);
-                       arg->inst_basereg = src->dreg;
-                       arg->inst_offset = 0;
-                       arg->inst_imm = size;
+                       if (cfg->arch.no_pushes) {
+                               // FIXME: Code growth
+                               mini_emit_memcpy (cfg, X86_ESP, ainfo->offset, src->dreg, 0, size, 4);
+                       } else {
+                               MONO_INST_NEW (cfg, arg, OP_X86_PUSH_OBJ);
+                               arg->inst_basereg = src->dreg;
+                               arg->inst_offset = 0;
+                               arg->inst_imm = size;
                                        
-                       MONO_ADD_INS (cfg->cbb, arg);
+                               MONO_ADD_INS (cfg->cbb, arg);
+                       }
                }
        }
 }
@@ -2173,7 +2256,7 @@ emit_float_to_int (MonoCompile *cfg, guchar *code, int dreg, int size, gboolean
 }
 
 static unsigned char*
-mono_emit_stack_alloc (guchar *code, MonoInst* tree)
+mono_emit_stack_alloc (MonoCompile *cfg, guchar *code, MonoInst* tree)
 {
        int sreg = tree->sreg1;
        int need_touch = FALSE;
@@ -2217,7 +2300,10 @@ mono_emit_stack_alloc (guchar *code, MonoInst* tree)
                        x86_push_reg (code, X86_EDI);
                        x86_mov_reg_imm (code, X86_ECX, (0x1000 >> 2));
                        x86_alu_reg_reg (code, X86_XOR, X86_EAX, X86_EAX);                              
-                       x86_lea_membase (code, X86_EDI, X86_ESP, 12);
+                       if (cfg->param_area && cfg->arch.no_pushes)
+                               x86_lea_membase (code, X86_EDI, X86_ESP, 12 + ALIGN_TO (cfg->param_area, MONO_ARCH_FRAME_ALIGNMENT));
+                       else
+                               x86_lea_membase (code, X86_EDI, X86_ESP, 12);
                        x86_cld (code);
                        x86_prefix (code, X86_REP_PREFIX);
                        x86_stosl (code);
@@ -2264,7 +2350,10 @@ mono_emit_stack_alloc (guchar *code, MonoInst* tree)
                        x86_mov_reg_reg (code, X86_ECX, sreg, 4);
                x86_alu_reg_reg (code, X86_XOR, X86_EAX, X86_EAX);
                                
-               x86_lea_membase (code, X86_EDI, X86_ESP, offset);
+               if (cfg->param_area && cfg->arch.no_pushes)
+                       x86_lea_membase (code, X86_EDI, X86_ESP, offset + ALIGN_TO (cfg->param_area, MONO_ARCH_FRAME_ALIGNMENT));
+               else
+                       x86_lea_membase (code, X86_EDI, X86_ESP, offset);
                x86_cld (code);
                x86_prefix (code, X86_REP_PREFIX);
                x86_stosl (code);
@@ -3245,14 +3334,58 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_VCALL2:
                case OP_VOIDCALL:
                case OP_CALL:
+               case OP_FCALL_REG:
+               case OP_LCALL_REG:
+               case OP_VCALL_REG:
+               case OP_VCALL2_REG:
+               case OP_VOIDCALL_REG:
+               case OP_CALL_REG:
+               case OP_FCALL_MEMBASE:
+               case OP_LCALL_MEMBASE:
+               case OP_VCALL_MEMBASE:
+               case OP_VCALL2_MEMBASE:
+               case OP_VOIDCALL_MEMBASE:
+               case OP_CALL_MEMBASE: {
+                       CallInfo *cinfo;
+
                        call = (MonoCallInst*)ins;
-                       if (ins->flags & MONO_INST_HAS_METHOD)
-                               code = emit_call (cfg, code, MONO_PATCH_INFO_METHOD, call->method);
-                       else
-                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, call->fptr);
+                       cinfo = (CallInfo*)call->call_info;
+
+                       switch (ins->opcode) {
+                       case OP_FCALL:
+                       case OP_LCALL:
+                       case OP_VCALL:
+                       case OP_VCALL2:
+                       case OP_VOIDCALL:
+                       case OP_CALL:
+                               if (ins->flags & MONO_INST_HAS_METHOD)
+                                       code = emit_call (cfg, code, MONO_PATCH_INFO_METHOD, call->method);
+                               else
+                                       code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, call->fptr);
+                               break;
+                       case OP_FCALL_REG:
+                       case OP_LCALL_REG:
+                       case OP_VCALL_REG:
+                       case OP_VCALL2_REG:
+                       case OP_VOIDCALL_REG:
+                       case OP_CALL_REG:
+                               x86_call_reg (code, ins->sreg1);
+                               break;
+                       case OP_FCALL_MEMBASE:
+                       case OP_LCALL_MEMBASE:
+                       case OP_VCALL_MEMBASE:
+                       case OP_VCALL2_MEMBASE:
+                       case OP_VOIDCALL_MEMBASE:
+                       case OP_CALL_MEMBASE:
+                               x86_call_membase (code, ins->sreg1, ins->inst_offset);
+                               break;
+                       default:
+                               g_assert_not_reached ();
+                               break;
+                       }
                        ins->flags |= MONO_INST_GC_CALLSITE;
                        ins->backend.pc_offset = code - cfg->native_code;
-                       if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature)) {
+                       if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature) && !cfg->arch.no_pushes) {
                                /* a pop is one byte, while an add reg, imm is 3. So if there are 4 or 8
                                 * bytes to pop, we want to use pops. GCC does this (note it won't happen
                                 * for P4 or i686 because gcc will avoid using pop push at all. But we aren't
@@ -3273,56 +3406,27 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                } else {
                                        x86_alu_reg_imm (code, X86_ADD, X86_ESP, call->stack_usage);
                                }
+                       } else if (cinfo->callee_stack_pop && cfg->arch.no_pushes) {
+                               /* Have to compensate for the stack space popped by the callee */
+                               x86_alu_reg_imm (code, X86_SUB, X86_ESP, cinfo->callee_stack_pop);
                        }
                        code = emit_move_return_value (cfg, ins, code);
                        break;
-               case OP_FCALL_REG:
-               case OP_LCALL_REG:
-               case OP_VCALL_REG:
-               case OP_VCALL2_REG:
-               case OP_VOIDCALL_REG:
-               case OP_CALL_REG:
-                       call = (MonoCallInst*)ins;
-                       x86_call_reg (code, ins->sreg1);
-                       ins->flags |= MONO_INST_GC_CALLSITE;
-                       ins->backend.pc_offset = code - cfg->native_code;
-                       if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature)) {
-                               if (call->stack_usage == 4)
-                                       x86_pop_reg (code, X86_ECX);
-                               else
-                                       x86_alu_reg_imm (code, X86_ADD, X86_ESP, call->stack_usage);
-                       }
-                       code = emit_move_return_value (cfg, ins, code);
-                       break;
-               case OP_FCALL_MEMBASE:
-               case OP_LCALL_MEMBASE:
-               case OP_VCALL_MEMBASE:
-               case OP_VCALL2_MEMBASE:
-               case OP_VOIDCALL_MEMBASE:
-               case OP_CALL_MEMBASE:
-                       call = (MonoCallInst*)ins;
-
-                       x86_call_membase (code, ins->sreg1, ins->inst_offset);
-                       ins->flags |= MONO_INST_GC_CALLSITE;
-                       ins->backend.pc_offset = code - cfg->native_code;
-                       if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature)) {
-                               if (call->stack_usage == 4)
-                                       x86_pop_reg (code, X86_ECX);
-                               else
-                                       x86_alu_reg_imm (code, X86_ADD, X86_ESP, call->stack_usage);
-                       }
-                       code = emit_move_return_value (cfg, ins, code);
-                       break;
+               }
                case OP_X86_PUSH:
+                       g_assert (!cfg->arch.no_pushes);
                        x86_push_reg (code, ins->sreg1);
                        break;
                case OP_X86_PUSH_IMM:
+                       g_assert (!cfg->arch.no_pushes);
                        x86_push_imm (code, ins->inst_imm);
                        break;
                case OP_X86_PUSH_MEMBASE:
+                       g_assert (!cfg->arch.no_pushes);
                        x86_push_membase (code, ins->inst_basereg, ins->inst_offset);
                        break;
                case OP_X86_PUSH_OBJ: 
+                       g_assert (!cfg->arch.no_pushes);
                        x86_alu_reg_imm (code, X86_SUB, X86_ESP, ins->inst_imm);
                        x86_push_reg (code, X86_EDI);
                        x86_push_reg (code, X86_ESI);
@@ -3353,8 +3457,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        /* keep alignment */
                        x86_alu_reg_imm (code, X86_ADD, ins->sreg1, MONO_ARCH_LOCALLOC_ALIGNMENT - 1);
                        x86_alu_reg_imm (code, X86_AND, ins->sreg1, ~(MONO_ARCH_LOCALLOC_ALIGNMENT - 1));
-                       code = mono_emit_stack_alloc (code, ins);
+                       code = mono_emit_stack_alloc (cfg, code, ins);
                        x86_mov_reg_reg (code, ins->dreg, X86_ESP, 4);
+                        if (cfg->param_area && cfg->arch.no_pushes)
+                                x86_alu_reg_imm (code, X86_ADD, ins->dreg, ALIGN_TO (cfg->param_area, MONO_ARCH_FRAME_ALIGNMENT));
                        break;
                case OP_LOCALLOC_IMM: {
                        guint32 size = ins->inst_imm;
@@ -3365,12 +3471,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                x86_mov_reg_imm (code, ins->dreg, size);
                                ins->sreg1 = ins->dreg;
 
-                               code = mono_emit_stack_alloc (code, ins);
+                               code = mono_emit_stack_alloc (cfg, code, ins);
                                x86_mov_reg_reg (code, ins->dreg, X86_ESP, 4);
                        } else {
                                x86_alu_reg_imm (code, X86_SUB, X86_ESP, size);
                                x86_mov_reg_reg (code, ins->dreg, X86_ESP, 4);
                        }
+                        if (cfg->param_area && cfg->arch.no_pushes)
+                                x86_alu_reg_imm (code, X86_ADD, ins->dreg, ALIGN_TO (cfg->param_area, MONO_ARCH_FRAME_ALIGNMENT));
                        break;
                }
                case OP_THROW: {
@@ -3401,6 +3509,9 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_START_HANDLER: {
                        MonoInst *spvar = mono_find_spvar_for_region (cfg, bb->region);
                        x86_mov_membase_reg (code, spvar->inst_basereg, spvar->inst_offset, X86_ESP, 4);
+                       if (cfg->param_area && cfg->arch.no_pushes) {
+                               x86_alu_reg_imm (code, X86_SUB, X86_ESP, ALIGN_TO (cfg->param_area, MONO_ARCH_FRAME_ALIGNMENT));
+                       }
                        break;
                }
                case OP_ENDFINALLY: {
@@ -5246,6 +5357,11 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                cfg->frame_reg = X86_ESP;
        }
 
+       if (cfg->arch.no_pushes) {
+               cfg->stack_offset += cfg->param_area;
+               cfg->stack_offset = ALIGN_TO (cfg->stack_offset, MONO_ARCH_FRAME_ALIGNMENT);
+       }
+
        alloc_size = cfg->stack_offset;
        pos = 0;
 
@@ -5561,8 +5677,8 @@ mono_arch_emit_epilog (MonoCompile *cfg)
                MonoJitArgumentInfo *arg_info = alloca (sizeof (MonoJitArgumentInfo) * (sig->param_count + 1));
 
                stack_to_pop = mono_arch_get_argument_info (NULL, sig, sig->param_count, arg_info);
-       } else if (cinfo->vtype_retaddr)
-               stack_to_pop = 4;
+       } else if (cinfo->callee_stack_pop)
+               stack_to_pop = cinfo->callee_stack_pop;
        else
                stack_to_pop = 0;
 
index 995686bf94b2e2ab66ddd48839454153ed463601..2f7eaca37b6ac519649f4011229dc0e4aa454e6b 100644 (file)
@@ -74,6 +74,8 @@ struct sigcontext {
 #endif /* HAVE_WORKING_SIGALTSTACK */
 #endif /* !HOST_WIN32 */
 
+/* #define MONO_X86_NO_PUSHES 1 */
+
 #define MONO_ARCH_SUPPORT_TASKLETS 1
 
 #ifndef DISABLE_SIMD
@@ -167,6 +169,7 @@ struct MonoLMF {
 typedef struct {
        gboolean need_stack_frame_inited;
        gboolean need_stack_frame;
+       gboolean no_pushes;
        int sp_fp_offset, param_area_size;
 } MonoCompileArch;
 
index 035f975c9f80430359e947c8c006f77b01df0f1f..679fdcda71a67d121441b242afbc3780d80865c5 100644 (file)
@@ -4901,7 +4901,9 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        guint8 *ip;
        MonoCompile *cfg;
        int dfn, i, code_size_ratio;
+#ifndef DISABLE_SSA
        gboolean deadce_has_run = FALSE;
+#endif
        gboolean try_generic_shared, try_llvm = FALSE;
        MonoMethod *method_to_compile, *method_to_register;
        gboolean method_is_gshared = FALSE;
index 702daa6b813a5e0485b984bc780da12894b300d4..76cbdf32022f906d8c4fb701b8cc443cb3d2aa68 100644 (file)
@@ -1060,6 +1060,11 @@ typedef struct {
         */
        MonoContext orig_ex_ctx;
        gboolean orig_ex_ctx_set;
+
+       /* 
+        * Stores if we need to run a chained exception in Windows.
+        */
+       gboolean mono_win_chained_exception_needs_run;
 } MonoJitTlsData;
 
 /*
@@ -2656,7 +2661,7 @@ void mono_generic_sharing_cleanup (void) MONO_INTERNAL;
 MonoClass* mini_class_get_container_class (MonoClass *class) MONO_INTERNAL;
 MonoGenericContext* mini_class_get_context (MonoClass *class) MONO_INTERNAL;
 
-MonoType* mini_replace_type (MonoType *type) MONO_INTERNAL;
+MonoType* mini_replace_type (MonoType *type) MONO_LLVM_INTERNAL;
 MonoType* mini_get_basic_type_from_generic (MonoGenericSharingContext *gsctx, MonoType *type) MONO_INTERNAL;
 MonoType* mini_type_get_underlying_type (MonoGenericSharingContext *gsctx, MonoType *type) MONO_INTERNAL;
 MonoMethod* mini_get_shared_method (MonoMethod *method) MONO_INTERNAL;
index 40c79e6280f38c5376fc57c0958b8ee60721e0d2..0e8ea1a4d7b4d2adc725597559b547ad8c2d5a78 100644 (file)
@@ -1625,6 +1625,20 @@ ncells ) {
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        static void t_14217_inner (BugStruct bug) {
     }
+
+       [StructLayout(LayoutKind.Sequential)]
+       public struct EmptyStruct {
+       }
+
+       class EmptyClass {
+               public static EmptyStruct s;
+       }
+
+       // #20349
+       static int test_0_empty_struct_as_static () {
+               var s = EmptyClass.s;
+               return 0;
+       }
 }
 
 #if MOBILE
index 023d2778009bebb9a1002239cba36ec82a2427ee..801826b96e8b098caf1a5f102a3cde6b0aabce33 100644 (file)
@@ -1424,7 +1424,7 @@ mono_ssa_loop_invariant_code_motion (MonoCompile *cfg)
                                else
                                        sreg = -1;
                                if (sreg != -1) {
-                                       MonoInst *tins;
+                                       MonoInst *tins, *var;
 
                                        skip = FALSE;
                                        for (tins = ins->prev; tins; tins = tins->prev) {
@@ -1439,6 +1439,9 @@ mono_ssa_loop_invariant_code_motion (MonoCompile *cfg)
                                        }
                                        if (skip)
                                                continue;
+                                       var = get_vreg_to_inst (cfg, sreg);
+                                       if (var && (var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)))
+                                               continue;
                                        ins->sreg1 = sreg;
                                }
 
diff --git a/mono/mini/support-s390x.h b/mono/mini/support-s390x.h
new file mode 100644 (file)
index 0000000..62edcc4
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef __MONO_SUPPORT_S390X_H__
+#define __MONO_SUPPORT_S390X_H__
+
+#define S390_SET(loc, dr, v)                                   \
+       do {                                                    \
+               guint64 val = (guint64) v;                      \
+               if (s390_is_uimm16(val)) {                      \
+                       s390_llill(loc, dr, val);               \
+               } else if (s390_is_uimm32(val)) {               \
+                       s390_llilf(loc, dr, val);               \
+               } else {                                        \
+                       guint32 hi = (val) >> 32;               \
+                       guint32 lo = (val) & 0xffffffff;        \
+                       s390_iihf(loc, dr, hi);                 \
+                       s390_iilf(loc, dr, lo);                 \
+               }                                               \
+       } while (0)
+
+#define S390_LONG(loc, opy, op, r, ix, br, off)                                \
+       if (s390_is_imm20(off)) {                                       \
+               s390_##opy (loc, r, ix, br, off);                       \
+       } else {                                                        \
+               if (ix == 0) {                                          \
+                       S390_SET(loc, s390_r13, off);                   \
+                       s390_la (loc, s390_r13, s390_r13, br, 0);       \
+               } else {                                                \
+                       s390_la   (loc, s390_r13, ix, br, 0);           \
+                       S390_SET  (loc, s390_r0, off);                  \
+                       s390_agr  (loc, s390_r13, s390_r0);             \
+               }                                                       \
+               s390_##op (loc, r, 0, s390_r13, 0);                     \
+       }
+
+#define S390_SET_MASK(loc, dr, v)                              \
+       do {                                                    \
+               if (s390_is_imm16 (v)) {                        \
+                       s390_lghi (loc, dr, v);                 \
+               } else if (s390_is_imm32 (v)) {                 \
+                       s390_lgfi (loc, dr, v);                 \
+               } else {                                        \
+                       gint64 val = (gint64) v;                \
+                       guint32 hi = (val) >> 32;               \
+                       guint32 lo = (val) & 0xffffffff;        \
+                       s390_iilf(loc, dr, lo);                 \
+                       s390_iihf(loc, dr, hi);                 \
+               }                                               \
+       } while (0)
+
+#define S390_CALL_TEMPLATE(loc, r)                             \
+       do {                                                    \
+               s390_iihf (loc, r, 0);                          \
+               s390_iilf (loc, r, 0);                          \
+               s390_basr (loc, s390_r14, r);                   \
+       } while (0)
+
+#define S390_BR_TEMPLATE(loc, r)                               \
+       do {                                                    \
+               s390_iihf (loc, r, 0);                          \
+               s390_iilf (loc, r, 0);                          \
+               s390_br   (loc, r);                             \
+       } while (0)
+
+#define S390_LOAD_TEMPLATE(loc, r)                             \
+       do {                                                    \
+               s390_iihf (loc, r, 0);                          \
+               s390_iilf (loc, r, 0);                          \
+       } while (0)
+
+#define S390_EMIT_CALL(loc, t)                                 \
+       do {                                                    \
+               gint64 val = (gint64) t;                        \
+               guint32 hi = (val) >> 32;                       \
+               guint32 lo = (val) & 0xffffffff;                \
+               uintptr_t p = (uintptr_t) loc;                  \
+               p += 2;                                         \
+               *(guint32 *) p = hi;                            \
+               p += 6;                                         \
+               *(guint32 *) p = lo;                            \
+       } while (0)
+
+#define S390_EMIT_LOAD(loc, v)                                 \
+       do {                                                    \
+               gint64 val = (gint64) v;                        \
+               guint32 hi = (val) >> 32;                       \
+               guint32 lo = (val) & 0xffffffff;                \
+               uintptr_t p = (uintptr_t) loc;                  \
+               p += 2;                                         \
+               *(guint32 *) p = hi;                            \
+               p += 6;                                         \
+               *(guint32 *) p = lo;                            \
+       } while (0)
+
+#endif /* __MONO_SUPPORT_S390X_H__ */
index 8f2875afdff874cb0cf258b322d5061f3b3087d5..d694c70f01db531db14c953ada975f3bd12c622e 100644 (file)
@@ -53,6 +53,7 @@
 
 #include "mini.h"
 #include "mini-s390x.h"
+#include "support-s390x.h"
 
 /*========================= End of Includes ========================*/
 
@@ -99,10 +100,7 @@ mono_arch_get_unbox_trampoline (MonoMethod *method, gpointer addr)
 
        start = code = mono_domain_code_reserve (domain, 28);
 
-       s390_basr (code, s390_r1, 0);
-       s390_j    (code, 6);
-       s390_llong(code, addr);
-       s390_lg   (code, s390_r1, 0, s390_r1, 4);
+       S390_SET  (code, s390_r1, addr);
        s390_aghi (code, this_pos, sizeof(MonoObject));
        s390_br   (code, s390_r1);
 
@@ -129,27 +127,20 @@ mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
        gint32 displace;
        unsigned short opcode;
 
-       opcode = *((unsigned short *) (orig_code - 6));
-       if (opcode == 0xc0e5) {
+       opcode = *((unsigned short *) (orig_code - 2));
+       if (opcode == 0x0dee) {
+               /* This should be a 'iihf/iilf' sequence */
+               S390_EMIT_CALL((orig_code - 14), addr);
+               mono_arch_flush_icache (orig_code - 14, 12);
+       } else {
+fprintf(stderr, "%p %02x %02x %02x %02x\n",
+&orig_code[-14], orig_code[-12], orig_code[-11], orig_code[-6], orig_code[-5]);
+fflush(stderr);
                /* This is the 'brasl' instruction */
                orig_code    -= 4;
                displace = ((gssize) addr - (gssize) (orig_code - 2)) / 2;
                s390_patch_rel (orig_code, displace);
                mono_arch_flush_icache (orig_code, 4);
-       } else {
-               /* This should be a 'lg %r14,4(%r13)' then a 'basr r14, r14' instruction */
-               g_assert (orig_code [-8] == 0xe3);
-               g_assert (orig_code [-7] == 0xe0);
-               g_assert (orig_code [-6] == 0xd0);
-               g_assert (orig_code [-5] == 0x04);
-               g_assert (orig_code [-4] == 0x00);
-               g_assert (orig_code [-3] == 0x04);
-               opcode = *((unsigned short*) (orig_code - 2));
-               g_assert (opcode == 0x0dee);
-
-               /* The call address is stored in the 8 bytes preceeding the basr instruction */
-               s390_patch_addr(orig_code - 16, (gssize)addr);
-               mono_arch_flush_icache (orig_code - 16, 8);
        }
 }
 
@@ -231,7 +222,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 {
        char *tramp_name;
        guint8 *buf, *tramp, *code;
-       int i, offset, lmfOffset;
+       int i, offset, lmfOffset, has_caller;
        GSList *unwind_ops = NULL;
        MonoJumpInfo *ji = NULL;
 
@@ -242,6 +233,12 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
                
        code = buf = mono_global_codeman_reserve(512);
                
+       if ((tramp_type == MONO_TRAMPOLINE_JUMP) ||
+           (tramp_type == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD)) 
+               has_caller = 0;
+       else
+               has_caller = 1;
+
        /*-----------------------------------------------------------
          STEP 0: First create a non-standard function prologue with a
          stack size big enough to save our registers.
@@ -268,10 +265,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
          method.
          ----------------------------------------------------------*/
                                
-       s390_basr (buf, s390_r13, 0);
-       s390_j    (buf, 6);
-       s390_llong(buf, mono_get_lmf_addr);
-       s390_lg   (buf, s390_r1, 0, s390_r13, 4);
+       S390_SET  (buf, s390_r1, mono_get_lmf_addr);
        s390_basr (buf, s390_r14, s390_r1);
 
        /*---------------------------------------------------------------*/
@@ -321,11 +315,10 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /*---------------------------------------------------------------*/     
        /* save the current IP                                           */     
        /*---------------------------------------------------------------*/     
-       if (tramp_type == MONO_TRAMPOLINE_JUMP) {
-               s390_lghi  (buf, s390_r1, 0);
-       } else {
+       if (has_caller) {
                s390_lg    (buf, s390_r1, 0, s390_r1, S390_RET_ADDR_OFFSET);
-               //                      s390_la    (buf, s390_r1, 0, s390_r1, 0);
+       } else {
+               s390_lghi  (buf, s390_r1, 0);
        }
        s390_stg   (buf, s390_r1, 0, s390_r13, G_STRUCT_OFFSET(MonoLMF, eip));  
                                                                                        
@@ -351,10 +344,10 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        s390_la  (buf, s390_r2, 0, STK_BASE, CREATE_STACK_SIZE);
                
        /* Arg 2: code (next address to the instruction that called us) */
-       if (tramp_type == MONO_TRAMPOLINE_JUMP) {
-               s390_lghi (buf, s390_r3, 0);
-       } else {
+       if (has_caller) {
                s390_lg   (buf, s390_r3, 0, s390_r11, S390_RET_ADDR_OFFSET);
+       } else {
+               s390_lghi (buf, s390_r3, 0);
        }
 
        /* Arg 3: Trampoline argument */
@@ -366,11 +359,8 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /* Arg 4: trampoline address. Ignore for now */
                
        /* Calculate call address and call the C trampoline. Return value will be in r2 */
-       s390_basr (buf, s390_r13, 0);
-       s390_j    (buf, 6);
        tramp = (guint8*)mono_get_trampoline_func (tramp_type);
-       s390_llong (buf, tramp);
-       s390_lg   (buf, s390_r1, 0, s390_r13, 4);
+       S390_SET  (buf, s390_r1, tramp);
        s390_basr (buf, s390_r14, s390_r1);
                
        /* OK, code address is now on r2. Move it to r1, so that we
@@ -426,6 +416,28 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 
 /*========================= End of Function ========================*/
 
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_invalidate_method                       */
+/*                                                                  */
+/* Function    -                                                   */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+void
+mono_arch_invalidate_method (MonoJitInfo *ji, void *func, gpointer func_arg)
+{
+       /* FIXME: This is not thread safe */
+       guint8 *code = ji->code_start;
+
+       S390_SET  (code, s390_r1, func);
+       S390_SET  (code, s390_r2, func_arg);
+       s390_br   (code, s390_r1);
+
+}
+
+/*========================= End of Function ========================*/
+
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name                - mono_arch_create_specific_trampoline              */
@@ -449,10 +461,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
        /*----------------------------------------------------------*/
        code = buf = mono_domain_code_reserve (domain, SPECIFIC_TRAMPOLINE_SIZE);
 
-       s390_basr (buf, s390_r1, 0);
-       s390_j    (buf, 6);
-       s390_llong(buf, arg1);
-       s390_lg   (buf, s390_r1, 0, s390_r1, 4);
+       S390_SET  (buf, s390_r1, arg1);
        displace = (tramp - buf) / 2;
        s390_jg   (buf, displace);
 
@@ -615,10 +624,7 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m,
 
        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);
+       S390_SET  (code, MONO_ARCH_RGCTX_REG, mrgctx);
        displace = ((uintptr_t) addr - (uintptr_t) code) / 2;
        s390_jg   (code, displace);
        g_assert ((code - start) < buf_len);
@@ -630,6 +636,80 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m,
 
 /*========================= End of Function ========================*/
 
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - handler_block_trampoline_helper                   */
+/*                                                                  */
+/* Function    -                                                   */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+static void
+handler_block_trampoline_helper (gpointer *ptr)
+{
+       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       *ptr = jit_tls->handler_block_return_address;
+}
+
+/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_create_handler_block_trampoline         */
+/*                                                                  */
+/* Function    -                                                   */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot)
+{
+       guint8 *tramp = mono_get_trampoline_code (MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD);
+       guint8 *code, *buf;
+       int tramp_size = 64;
+       MonoJumpInfo *ji = NULL;
+       GSList *unwind_ops = NULL;
+
+       g_assert (!aot);
+
+       code = buf = mono_global_codeman_reserve (tramp_size);
+
+       /*
+        * This trampoline restore the call chain of the handler block 
+        * then jumps into the code that deals with it.
+        */
+
+       if (mono_get_jit_tls_offset () != -1) {
+               s390_ear  (code, s390_r1, 0);
+               s390_sllg (code, s390_r1, s390_r1, 0, 32);
+               s390_ear  (code, s390_r1, 1);
+               S390_SET  (code, s390_r14, mono_get_jit_tls_offset());
+               s390_lg   (code, s390_r14, s390_r1, 0, G_STRUCT_OFFSET(MonoJitTlsData, handler_block_return_address));
+               /* 
+                * Simulate a call 
+                */
+               S390_SET  (code, s390_r1, tramp);
+               s390_br   (code, s390_r1);
+       } else {
+               /*
+                * Slow path uses a C helper
+                */
+               S390_SET  (code, s390_r2, tramp);
+               S390_SET  (code, s390_r1, handler_block_trampoline_helper);
+               s390_br   (code, s390_r1);
+       }
+
+       mono_arch_flush_icache (buf, code - buf);
+       g_assert (code - buf <= tramp_size);
+
+       if (info)
+               *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
+
+       return buf;
+}
+
+/*========================= End of Function ========================*/
+
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name                - mono_arch_create_generic_class_init_trampoline    */
@@ -645,7 +725,6 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        guint8 *code, *buf;
        static int byte_offset = -1;
        static guint8 bitmask;
-       guint8 *jump;
        gint32 displace;
        int tramp_size;
        GSList *unwind_ops = NULL;
index 96c79ef2712546a66db9b65f7ed299baafc56c09..dff9d66a1435e2b32d40b8401fd42f4c003b8772 100644 (file)
@@ -20,6 +20,7 @@
 #if defined (HAVE_SYS_ZLIB)
 #include <zlib.h>
 #endif
+#include <glib.h>
 #include <mono/metadata/profiler.h>
 #include <mono/metadata/object.h>
 #include <mono/metadata/debug-helpers.h>
@@ -457,9 +458,12 @@ dump_counters (void)
                }
        } else if (counters_sort_mode == COUNTERS_SORT_TIME) {
                for (ctimestamp = counters_timestamps; ctimestamp; ctimestamp = ctimestamp->next) {
-                       fprintf (outfile, "\t%lld:%02lld:%02lld:%02lld.%03lld:\n", ctimestamp->value / 1000 / 60 / 60 / 24 % 1000,
-                               ctimestamp->value / 1000 / 60 / 60 % 24, ctimestamp->value / 1000 / 60 % 60,
-                               ctimestamp->value / 1000 % 60, ctimestamp->value % 1000);
+                       fprintf (outfile, "\t%llu:%02llu:%02llu:%02llu.%03llu:\n",
+                               (unsigned long long) (ctimestamp->value / 1000 / 60 / 60 / 24 % 1000),
+                               (unsigned long long) (ctimestamp->value / 1000 / 60 / 60 % 24),
+                               (unsigned long long) (ctimestamp->value / 1000 / 60 % 60),
+                               (unsigned long long) (ctimestamp->value / 1000 % 60),
+                               (unsigned long long) (ctimestamp->value % 1000));
 
                        for (csection = ctimestamp->sections; csection; csection = csection->next) {
                                fprintf (outfile, "\t\t%s:\n", section_name (csection->value));
@@ -485,9 +489,12 @@ dump_counters (void)
                                        counter->name, type_name (counter->type), unit_name (counter->unit), variance_name (counter->variance));
 
                                for (cvalue = counter->values; cvalue; cvalue = cvalue->next) {
-                                       snprintf (strtimestamp, sizeof (strtimestamp), "%lld:%02lld:%02lld:%02lld.%03lld", cvalue->timestamp / 1000 / 60 / 60 / 24 % 1000,
-                                               cvalue->timestamp / 1000 / 60 / 60 % 24, cvalue->timestamp / 1000 / 60 % 60,
-                                               cvalue->timestamp / 1000 % 60, cvalue->timestamp % 1000);
+                                       snprintf (strtimestamp, sizeof (strtimestamp), "%llu:%02llu:%02llu:%02llu.%03llu",
+                                               (unsigned long long) (cvalue->timestamp / 1000 / 60 / 60 / 24 % 1000),
+                                               (unsigned long long) (cvalue->timestamp / 1000 / 60 / 60 % 24),
+                                               (unsigned long long) (cvalue->timestamp / 1000 / 60 % 60),
+                                               (unsigned long long) (cvalue->timestamp / 1000 % 60),
+                                               (unsigned long long) (cvalue->timestamp % 1000));
 
                                        dump_counters_value (counter, "\t\t\t%s", strtimestamp, cvalue->buffer);
                                }
@@ -852,9 +859,9 @@ static void
 print_usym (UnmanagedSymbol* um)
 {
        if (um->parent)
-               fprintf (outfile, "\t%6d %6.2f %-36s in %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name, um->parent->name);
+               fprintf (outfile, "\t%6zd %6.2f %-36s in %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name, um->parent->name);
        else
-               fprintf (outfile, "\t%6d %6.2f %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name);
+               fprintf (outfile, "\t%6zd %6.2f %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name);
 }
 
 static int
@@ -1333,7 +1340,7 @@ heap_shot_mark_objects (HeapShot *hs)
                        fprintf (outfile, "object %p (%s) unmarked\n", (void*)hs->objects_hash [i], hs->objects_hash [i]->hklass->klass->name);
                }
        }
-       fprintf (outfile, "Total unmarked: %d/%d\n", num_unmarked, hs->objects_count);
+       fprintf (outfile, "Total unmarked: %zd/%zd\n", num_unmarked, hs->objects_count);
        free (marks);
 }
 
@@ -1426,7 +1433,7 @@ typedef struct _ThreadContext ThreadContext;
 typedef struct {
        FILE *file;
 #if defined (HAVE_SYS_ZLIB)
-       gzFile *gzfile;
+       gzFile gzfile;
 #endif
        unsigned char *buf;
        int size;
@@ -1840,7 +1847,7 @@ tracked_creation (uintptr_t obj, ClassDesc *cd, uint64_t size, BackTrace *bt, ui
        for (i = 0; i < num_tracked_objects; ++i) {
                if (tracked_objects [i] != obj)
                        continue;
-               fprintf (outfile, "Object %p created (%s, %llu bytes) at %.3f secs.\n", (void*)obj, cd->name, size, (timestamp - startup_time)/1000000000.0);
+               fprintf (outfile, "Object %p created (%s, %llu bytes) at %.3f secs.\n", (void*)obj, cd->name, (unsigned long long) size, (timestamp - startup_time)/1000000000.0);
                if (bt && bt->count) {
                        int k;
                        for (k = 0; k < bt->count; ++k)
@@ -1929,7 +1936,7 @@ decode_buffer (ProfContext *ctx)
        thread_id = read_int64 (p + 32);
        method_base = read_int64 (p + 40);
        if (debug)
-               fprintf (outfile, "buf: thread:%x, len: %d, time: %llu, file offset: %llu\n", thread_id, len, time_base, file_offset);
+               fprintf (outfile, "buf: thread:%zx, len: %d, time: %llu, file offset: %llu\n", thread_id, len, (unsigned long long) time_base, (unsigned long long) file_offset);
        thread = load_thread (ctx, thread_id);
        if (!load_data (ctx, len))
                return 0;
@@ -1956,7 +1963,7 @@ decode_buffer (ProfContext *ctx)
                        if (subtype == TYPE_GC_RESIZE) {
                                uint64_t new_size = decode_uleb128 (p, &p);
                                if (debug)
-                                       fprintf (outfile, "gc heap resized to %llu\n", new_size);
+                                       fprintf (outfile, "gc heap resized to %llu\n", (unsigned long long) new_size);
                                gc_resizes++;
                                if (new_size > max_heap_size)
                                        max_heap_size = new_size;
@@ -1964,7 +1971,7 @@ decode_buffer (ProfContext *ctx)
                                uint64_t ev = decode_uleb128 (p, &p);
                                int gen = decode_uleb128 (p, &p);
                                if (debug)
-                                       fprintf (outfile, "gc event for gen%d: %s at %llu (thread: 0x%x)\n", gen, gc_event_name (ev), time_base, thread->thread_id);
+                                       fprintf (outfile, "gc event for gen%d: %s at %llu (thread: 0x%zx)\n", gen, gc_event_name (ev), (unsigned long long) time_base, thread->thread_id);
                                if (gen > 2) {
                                        fprintf (outfile, "incorrect gc gen: %d\n", gen);
                                        break;
@@ -2033,7 +2040,7 @@ decode_buffer (ProfContext *ctx)
                                        return 0;
                                }
                                if (debug)
-                                       fprintf (outfile, "loaded class %p (%s in %p) at %llu\n", (void*)(ptr_base + ptrdiff), p, (void*)(ptr_base + imptrdiff), time_base);
+                                       fprintf (outfile, "loaded class %p (%s in %p) at %llu\n", (void*)(ptr_base + ptrdiff), p, (void*)(ptr_base + imptrdiff), (unsigned long long) time_base);
                                if (!error)
                                        add_class (ptr_base + ptrdiff, (char*)p);
                                while (*p) p++;
@@ -2045,7 +2052,7 @@ decode_buffer (ProfContext *ctx)
                                        return 0;
                                }
                                if (debug)
-                                       fprintf (outfile, "loaded image %p (%s) at %llu\n", (void*)(ptr_base + ptrdiff), p, time_base);
+                                       fprintf (outfile, "loaded image %p (%s) at %llu\n", (void*)(ptr_base + ptrdiff), p, (unsigned long long) time_base);
                                if (!error)
                                        add_image (ptr_base + ptrdiff, (char*)p);
                                while (*p) p++;
@@ -2080,7 +2087,7 @@ decode_buffer (ProfContext *ctx)
                        LOG_TIME (time_base, tdiff);
                        time_base += tdiff;
                        if (debug)
-                               fprintf (outfile, "alloced object %p, size %llu (%s) at %llu\n", (void*)OBJ_ADDR (objdiff), len, lookup_class (ptr_base + ptrdiff)->name, time_base);
+                               fprintf (outfile, "alloced object %p, size %llu (%s) at %llu\n", (void*)OBJ_ADDR (objdiff), (unsigned long long) len, lookup_class (ptr_base + ptrdiff)->name, (unsigned long long) time_base);
                        if (has_bt) {
                                num_bt = 8;
                                frames = decode_bt (sframes, &num_bt, p, &p, ptr_base);
@@ -2149,13 +2156,13 @@ decode_buffer (ProfContext *ctx)
                case TYPE_HEAP: {
                        int subtype = *p & 0xf0;
                        if (subtype == TYPE_HEAP_OBJECT) {
-                               HeapObjectDesc *ho;
+                               HeapObjectDesc *ho = NULL;
                                int i;
                                intptr_t objdiff = decode_sleb128 (p + 1, &p);
                                intptr_t ptrdiff = decode_sleb128 (p, &p);
                                uint64_t size = decode_uleb128 (p, &p);
                                uintptr_t num = decode_uleb128 (p, &p);
-                               uintptr_t ref_offset;
+                               uintptr_t ref_offset = 0;
                                uintptr_t last_obj_offset = 0;
                                ClassDesc *cd = lookup_class (ptr_base + ptrdiff);
                                if (size) {
@@ -2182,10 +2189,10 @@ decode_buffer (ProfContext *ctx)
                                                track_obj_reference (OBJ_ADDR (obj1diff), OBJ_ADDR (objdiff), cd);
                                }
                                if (debug && size)
-                                       fprintf (outfile, "traced object %p, size %llu (%s), refs: %d\n", (void*)OBJ_ADDR (objdiff), size, cd->name, num);
+                                       fprintf (outfile, "traced object %p, size %llu (%s), refs: %zd\n", (void*)OBJ_ADDR (objdiff), (unsigned long long) size, cd->name, num);
                        } else if (subtype == TYPE_HEAP_ROOT) {
                                uintptr_t num = decode_uleb128 (p + 1, &p);
-                               uintptr_t gc_num = decode_uleb128 (p, &p);
+                               uintptr_t gc_num G_GNUC_UNUSED = decode_uleb128 (p, &p);
                                int i;
                                for (i = 0; i < num; ++i) {
                                        intptr_t objdiff = decode_sleb128 (p, &p);
@@ -2389,7 +2396,7 @@ decode_buffer (ProfContext *ctx)
                                /* un unmanaged binary loaded in memory */
                                uint64_t tdiff = decode_uleb128 (p + 1, &p);
                                uintptr_t addr = decode_sleb128 (p, &p);
-                               uint64_t offset = decode_uleb128 (p, &p);
+                               uint64_t offset G_GNUC_UNUSED = decode_uleb128 (p, &p);
                                uintptr_t size = decode_uleb128 (p, &p);
                                char *name;
                                LOG_TIME (time_base, tdiff);
@@ -2403,13 +2410,14 @@ decode_buffer (ProfContext *ctx)
                        } else if (subtype == TYPE_SAMPLE_COUNTERS_DESC) {
                                uint64_t i, len = decode_uleb128 (p + 1, &p);
                                for (i = 0; i < len; i++) {
+                                       uint64_t type, unit, variance, index;
                                        uint64_t section = decode_uleb128 (p, &p);
                                        char *name = pstrdup ((char*)p);
                                        while (*p++);
-                                       uint64_t type = decode_uleb128 (p, &p);
-                                       uint64_t unit = decode_uleb128 (p, &p);
-                                       uint64_t variance = decode_uleb128 (p, &p);
-                                       uint64_t index = decode_uleb128 (p, &p);
+                                       type = decode_uleb128 (p, &p);
+                                       unit = decode_uleb128 (p, &p);
+                                       variance = decode_uleb128 (p, &p);
+                                       index = decode_uleb128 (p, &p);
                                        add_counter ((int)section, name, (int)type, (int)unit, (int)variance, (int)index);
                                }
                        } else if (subtype == TYPE_SAMPLE_COUNTERS) {
@@ -2419,7 +2427,7 @@ decode_buffer (ProfContext *ctx)
                                uint64_t timestamp = decode_uleb128 (p + 1, &p);
                                uint64_t time_between = timestamp / 1000 * 1000 * 1000 * 1000 + startup_time;
                                while (1) {
-                                       uint64_t index = decode_uleb128 (p, &p);
+                                       uint64_t type, index = decode_uleb128 (p, &p);
                                        if (index == 0)
                                                break;
 
@@ -2430,7 +2438,7 @@ decode_buffer (ProfContext *ctx)
                                                }
                                        }
 
-                                       uint64_t type = decode_uleb128 (p, &p);
+                                       type = decode_uleb128 (p, &p);
 
                                        value = calloc (1, sizeof (CounterValue));
                                        value->timestamp = timestamp;
@@ -2486,7 +2494,7 @@ decode_buffer (ProfContext *ctx)
                        break;
                }
                default:
-                       fprintf (outfile, "unhandled profiler event: 0x%x at file offset: %llu + %d (len: %d\n)\n", *p, file_offset, p - ctx->buf, len);
+                       fprintf (outfile, "unhandled profiler event: 0x%x at file offset: %llu + %ld (len: %d\n)\n", *p, (unsigned long long) file_offset, p - ctx->buf, len);
                        exit (1);
                }
        }
@@ -2590,7 +2598,7 @@ dump_traces (TraceDesc *traces, const char *desc)
                bt = traces->traces [j].bt;
                if (!bt->count)
                        continue;
-               fprintf (outfile, "\t%llu %s from:\n", traces->traces [j].count, desc);
+               fprintf (outfile, "\t%llu %s from:\n", (unsigned long long) traces->traces [j].count, desc);
                for (k = 0; k < bt->count; ++k)
                        fprintf (outfile, "\t\t%s\n", bt->methods [k]->name);
        }
@@ -2611,12 +2619,12 @@ dump_exceptions (void)
 {
        int i;
        fprintf (outfile, "\nException summary\n");
-       fprintf (outfile, "\tThrows: %llu\n", throw_count);
+       fprintf (outfile, "\tThrows: %llu\n", (unsigned long long) throw_count);
        dump_traces (&exc_traces, "throws");
        for (i = 0; i <= MONO_EXCEPTION_CLAUSE_FAULT; ++i) {
                if (!clause_summary [i])
                        continue;
-               fprintf (outfile, "\tExecuted %s clauses: %llu\n", clause_name (i), clause_summary [i]);
+               fprintf (outfile, "\tExecuted %s clauses: %llu\n", clause_name (i), (unsigned long long) clause_summary [i]);
        }
 }
 
@@ -2656,9 +2664,9 @@ dump_monitors (void)
                        mdesc->wait_time/1000000000.0, mdesc->max_wait_time/1000000000.0, mdesc->wait_time/1000000000.0/mdesc->contentions);
                dump_traces (&mdesc->traces, "contentions");
        }
-       fprintf (outfile, "\tLock contentions: %llu\n", monitor_contention);
-       fprintf (outfile, "\tLock acquired: %llu\n", monitor_acquired);
-       fprintf (outfile, "\tLock failures: %llu\n", monitor_failed);
+       fprintf (outfile, "\tLock contentions: %llu\n", (unsigned long long) monitor_contention);
+       fprintf (outfile, "\tLock acquired: %llu\n", (unsigned long long) monitor_acquired);
+       fprintf (outfile, "\tLock failures: %llu\n", (unsigned long long) monitor_failed);
 }
 
 static void
@@ -2667,20 +2675,25 @@ dump_gcs (void)
        int i;
        fprintf (outfile, "\nGC summary\n");
        fprintf (outfile, "\tGC resizes: %d\n", gc_resizes);
-       fprintf (outfile, "\tMax heap size: %llu\n", max_heap_size);
-       fprintf (outfile, "\tObject moves: %llu\n", gc_object_moves);
+       fprintf (outfile, "\tMax heap size: %llu\n", (unsigned long long) max_heap_size);
+       fprintf (outfile, "\tObject moves: %llu\n", (unsigned long long) gc_object_moves);
        for (i = 0; i < 3; ++i) {
                if (!gc_info [i].count)
                        continue;
                fprintf (outfile, "\tGen%d collections: %d, max time: %lluus, total time: %lluus, average: %lluus\n",
-                       i, gc_info [i].count, gc_info [i].max_time / 1000, gc_info [i].total_time / 1000,
-                       gc_info [i].total_time / gc_info [i].count / 1000);
+                       i, gc_info [i].count,
+                       (unsigned long long) (gc_info [i].max_time / 1000),
+                       (unsigned long long) (gc_info [i].total_time / 1000),
+                       (unsigned long long) (gc_info [i].total_time / gc_info [i].count / 1000));
        }
        for (i = 0; i < 3; ++i) {
                if (!handle_info [i].max_live)
                        continue;
                fprintf (outfile, "\tGC handles %s: created: %llu, destroyed: %llu, max: %llu\n",
-                       get_handle_name (i), handle_info [i].created, handle_info [i].destroyed, handle_info [i].max_live);
+                       get_handle_name (i),
+                       (unsigned long long) (handle_info [i].created),
+                       (unsigned long long) (handle_info [i].destroyed),
+                       (unsigned long long) (handle_info [i].max_live));
                dump_traces (&handle_info [i].traces, "created");
        }
 }
@@ -2734,11 +2747,15 @@ dump_allocations (void)
                        fprintf (outfile, "\nAllocation summary\n");
                        fprintf (outfile, "%10s %10s %8s Type name\n", "Bytes", "Count", "Average");
                }
-               fprintf (outfile, "%10llu %10d %8llu %s\n", cd->alloc_size, cd->allocs, cd->alloc_size / cd->allocs, cd->name);
+               fprintf (outfile, "%10llu %10zd %8llu %s\n",
+                       (unsigned long long) (cd->alloc_size),
+                       cd->allocs,
+                       (unsigned long long) (cd->alloc_size / cd->allocs),
+                       cd->name);
                dump_traces (&cd->traces, "bytes");
        }
        if (allocs)
-               fprintf (outfile, "Total memory allocated: %llu bytes in %d objects\n", size, allocs);
+               fprintf (outfile, "Total memory allocated: %llu bytes in %zd objects\n", (unsigned long long) size, allocs);
 }
 
 enum {
@@ -2824,11 +2841,15 @@ dump_methods (void)
                        fprintf (outfile, "\nMethod call summary\n");
                        fprintf (outfile, "%8s %8s %10s Method name\n", "Total(ms)", "Self(ms)", "Calls");
                }
-               fprintf (outfile, "%8llu %8llu %10llu %s\n", msecs, smsecs, cd->calls, cd->name);
+               fprintf (outfile, "%8llu %8llu %10llu %s\n",
+                       (unsigned long long) (msecs),
+                       (unsigned long long) (smsecs),
+                       (unsigned long long) (cd->calls),
+                       cd->name);
                dump_traces (&cd->traces, "calls");
        }
        if (calls)
-               fprintf (outfile, "Total calls: %llu\n", calls);
+               fprintf (outfile, "Total calls: %llu\n", (unsigned long long) calls);
 }
 
 static int
@@ -2873,7 +2894,9 @@ dump_rev_claases (HeapClassRevRef *revs, int count)
                return;
        for (j = 0; j < count; ++j) {
                HeapClassDesc *cd = revs [j].klass;
-               fprintf (outfile, "\t\t%llu references from: %s\n", revs [j].count, cd->klass->name);
+               fprintf (outfile, "\t\t%llu references from: %s\n",
+                       (unsigned long long) (revs [j].count),
+                       cd->klass->name);
        }
 }
 
@@ -2897,8 +2920,12 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
        }
        hs->sorted = sorted;
        qsort (sorted, ccount, sizeof (void*), compare_heap_class);
-       fprintf (outfile, "\n\tHeap shot %d at %.3f secs: size: %llu, object count: %llu, class count: %d, roots: %d\n",
-               hs_num, (hs->timestamp - startup_time)/1000000000.0, size, count, ccount, hs->num_roots);
+       fprintf (outfile, "\n\tHeap shot %d at %.3f secs: size: %llu, object count: %llu, class count: %d, roots: %zd\n",
+               hs_num,
+               (hs->timestamp - startup_time)/1000000000.0,
+               (unsigned long long) (size),
+               (unsigned long long) (count),
+               ccount, hs->num_roots);
        if (!verbose && ccount > 30)
                ccount = 30;
        fprintf (outfile, "\t%10s %10s %8s Class name\n", "Bytes", "Count", "Average");
@@ -2909,11 +2936,15 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
                cd = sorted [i];
                if (last_hs)
                        ocd = heap_class_lookup (last_hs, cd->klass);
-               fprintf (outfile, "\t%10llu %10llu %8llu %s", cd->total_size, cd->count, cd->total_size / cd->count, cd->klass->name);
+               fprintf (outfile, "\t%10llu %10llu %8llu %s",
+                       (unsigned long long) (cd->total_size),
+                       (unsigned long long) (cd->count),
+                       (unsigned long long) (cd->total_size / cd->count),
+                       cd->klass->name);
                if (ocd) {
                        int64_t bdiff = cd->total_size - ocd->total_size;
                        int64_t cdiff = cd->count - ocd->count;
-                       fprintf (outfile, " (bytes: %+lld, count: %+lld)\n", bdiff, cdiff);
+                       fprintf (outfile, " (bytes: %+lld, count: %+lld)\n", (long long) bdiff, (long long) cdiff);
                } else {
                        fprintf (outfile, "\n");
                }
@@ -2928,7 +2959,7 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
                assert (cd->rev_count == k);
                qsort (rev_sorted, cd->rev_count, sizeof (HeapClassRevRef), compare_rev_class);
                if (cd->root_references)
-                       fprintf (outfile, "\t\t%d root references (%d pinning)\n", cd->root_references, cd->pinned_references);
+                       fprintf (outfile, "\t\t%zd root references (%zd pinning)\n", cd->root_references, cd->pinned_references);
                dump_rev_claases (rev_sorted, cd->rev_count);
                free (rev_sorted);
        }
index 16b9b781ae5d4ba56c9a52fe02fc1c8625733dcd..2f3ef61ca5f19f0b4fc0bb5c11752774a027d42a 100644 (file)
@@ -66,8 +66,7 @@
 #include <zlib.h>
 #endif
 
-/* the architecture needs a memory fence */
-#if defined(__linux__) && (defined(__i386__) || defined(__x86_64__) || defined(__arm__))
+#if defined(__linux__)
 #include <unistd.h>
 #include <sys/syscall.h>
 #include "perf_event.h"
@@ -354,7 +353,12 @@ struct _LogBuffer {
        unsigned char buf [1];
 };
 
-#define ENTER_LOG(lb,str) if ((lb)->locked) {write(2, str, strlen(str)); write(2, "\n", 1);return;} else {(lb)->locked++;}
+static inline void
+ign_res (int G_GNUC_UNUSED unused, ...)
+{
+}
+
+#define ENTER_LOG(lb,str) if ((lb)->locked) {ign_res (write(2, str, strlen(str))); ign_res (write(2, "\n", 1));return;} else {(lb)->locked++;}
 #define EXIT_LOG(lb) (lb)->locked--;
 
 typedef struct _StatBuffer StatBuffer;
@@ -379,7 +383,7 @@ struct _MonoProfiler {
        StatBuffer *stat_buffers;
        FILE* file;
 #if defined (HAVE_SYS_ZLIB)
-       gzFile *gzfile;
+       gzFile gzfile;
 #endif
        uint64_t startup_time;
        int pipe_output;
@@ -1233,7 +1237,7 @@ mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context)
                char buf [256];
                snprintf (buf, sizeof (buf), "hit at %p in thread %p after %llu ms\n", ip, (void*)thread_id (), (unsigned long long int)elapsed/100);
                len = strlen (buf);
-               write (2, buf, len);
+               ign_res (write (2, buf, len));
        }
        sbuf = profiler->stat_buffers;
        if (!sbuf)
@@ -1251,22 +1255,22 @@ mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context)
                do {
                        oldsb = profiler->stat_buffers;
                        sbuf->next = oldsb;
-                       foundsb = InterlockedCompareExchangePointer ((volatile void**)&profiler->stat_buffers, sbuf, oldsb);
+                       foundsb = InterlockedCompareExchangePointer ((void * volatile*)&profiler->stat_buffers, sbuf, oldsb);
                } while (foundsb != oldsb);
                if (do_debug)
-                       write (2, "overflow\n", 9);
+                       ign_res (write (2, "overflow\n", 9));
                /* notify the helper thread */
                if (sbuf->next->next) {
                        char c = 0;
-                       write (profiler->pipes [1], &c, 1);
+                       ign_res (write (profiler->pipes [1], &c, 1));
                        if (do_debug)
-                               write (2, "notify\n", 7);
+                               ign_res (write (2, "notify\n", 7));
                }
        }
        do {
                old_data = sbuf->data;
                new_data = old_data + 4 + bt_data.count * 3;
-               data = InterlockedCompareExchangePointer ((volatile void**)&sbuf->data, new_data, old_data);
+               data = InterlockedCompareExchangePointer ((void * volatile*)&sbuf->data, new_data, old_data);
        } while (data != old_data);
        if (old_data >= sbuf->data_end)
                return; /* lost event */
@@ -1937,12 +1941,12 @@ counters_init_add_counter (MonoCounter *counter, gpointer data)
 static void
 counters_init (MonoProfiler *profiler)
 {
-       mono_counters_foreach (counters_init_add_counter, NULL);
-
        MonoCounterAgent *agent;
        LogBuffer *logbuffer;
        int size = 1 + 5, len = 0;
 
+       mono_counters_foreach (counters_init_add_counter, NULL);
+
        for (agent = counters; agent; agent = agent->next) {
                size += strlen (mono_counter_get_name (agent->counter)) + 1 + 5 * 5;
                len += 1;
@@ -1994,9 +1998,11 @@ counters_sample (MonoProfiler *profiler, uint64_t timestamp)
        emit_byte (logbuffer, TYPE_SAMPLE_COUNTERS | TYPE_SAMPLE);
        emit_uvalue (logbuffer, timestamp);
        for (agent = counters; agent; agent = agent->next) {
+               size_t size;
+
                counter = agent->counter;
 
-               size_t size = mono_counter_get_size (counter);
+               size = mono_counter_get_size (counter);
                if (size < 0) {
                        continue; // FIXME error
                } else if (size > buffer_size) {
@@ -2087,7 +2093,7 @@ log_shutdown (MonoProfiler *prof)
        if (prof->command_port) {
                char c = 1;
                void *res;
-               write (prof->pipes [1], &c, 1);
+               ign_res (write (prof->pipes [1], &c, 1));
                pthread_join (prof->helper_thread, &res);
        }
 #endif
index 79c6f9193240873966208cd91bf95f04661d2572..4799766422de9b7fc3117952d06f069231ed3151 100644 (file)
@@ -1,6 +1,6 @@
 SUBDIRS = cas assemblyresolve gc-descriptors
 
-check-local: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test-cattr-type-load test_platform test-process-exit test-messages rm-empty-logs
+check-local: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test-cattr-type-load test-reflection-load-with-context test_platform test-process-exit test-messages rm-empty-logs
 check-full: test-sgen check-local
 check-parallel: compile-tests check-full
 
@@ -551,7 +551,8 @@ DISABLED_TESTS=                     \
        bug-348522.2.exe        \
        bug-459094.exe \
        delegate-invoke.exe \
-       $(PLATFORM_DISABLED_TESTS)
+       $(PLATFORM_DISABLED_TESTS) \
+       $(EXTRA_DISABLED_TESTS)
 
 DISABLED_TESTS_WRENCH= \
        $(DISABLED_TESTS)       \
@@ -562,7 +563,8 @@ DISABLED_TESTS_WRENCH=      \
        assemblyresolve_event3.exe \
        delegate2.exe   \
        finally_guard.exe \
-       gc-altstack.exe
+       gc-altstack.exe \
+       generic-xdomain.2.exe
 
 AOT_DISABLED_TESTS=constraints-load.exe
 
@@ -892,6 +894,16 @@ test-cattr-type-load: TestDriver.dll custom-attr-errors.cs custom-attr-errors-li
        @echo "Testing custom-attribute-load-exceptions.exe..."
        @$(RUNTIME) custom-attr-errors.exe > custom-attr-errors.exe.stdout 2> custom-attr-errors.exe.stderr
 
+EXTRA_DIST += reflection-load-with-context-lib.cs reflection-load-with-context-second-lib.cs reflection-load-with-context.cs
+test-reflection-load-with-context: TestDriver.dll reflection-load-with-context-lib.cs reflection-load-with-context-second-lib.cs reflection-load-with-context.cs
+       rm -rf reflection-load-dir
+       mkdir reflection-load-dir
+       $(MCS) /t:library $(srcdir)/reflection-load-with-context-second-lib.cs -out:reflection-load-dir/reflection-load-with-context-second-lib.dll
+       $(MCS) /t:library -r:reflection-load-dir/reflection-load-with-context-second-lib.dll $(srcdir)/reflection-load-with-context-lib.cs -out:reflection-load-dir/reflection-load-with-context-lib.dll
+       $(MCS) reflection-load-with-context.cs
+       @echo "Testing reflection-load-with-context.cs.exe..."
+       @$(RUNTIME) reflection-load-with-context.exe > reflection-load-with-context.exe.stdout 2> reflection-load-with-context.exe.stderr
+
 
 EXTRA_DIST += debug-casts.cs
 # This depends on TLS, so its not ran by default
diff --git a/mono/tests/reflection-load-with-context-lib.cs b/mono/tests/reflection-load-with-context-lib.cs
new file mode 100644 (file)
index 0000000..9aca41f
--- /dev/null
@@ -0,0 +1,29 @@
+using System;
+
+namespace B
+{
+       public class MyAttribute : Attribute {
+               public Type Type { get; set; }
+               public MyAttribute (Type t) {
+                       Type = t;
+               }
+               public override string ToString () {
+                       return "My " + Type;
+               }
+       }
+
+       [My (typeof (A.ClassA))]
+       public class ClassB { // A.AnotherClassA
+
+               public ClassB () {
+                       Console.WriteLine ("IN B");
+                       Console.WriteLine (typeof (ClassB).AssemblyQualifiedName);
+                       var t = Type.GetType ("B.ClassB, reflection-load-with-context-lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
+                       Console.WriteLine (t);
+                       t = Type.GetType ("A.ClassA, reflection-load-with-context-second-lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
+                       Console.WriteLine ("class a: {0}", t);
+                       if (t == null)
+                               throw new Exception ("FAIL");
+               }
+       }
+}
\ No newline at end of file
diff --git a/mono/tests/reflection-load-with-context-second-lib.cs b/mono/tests/reflection-load-with-context-second-lib.cs
new file mode 100644 (file)
index 0000000..4458aad
--- /dev/null
@@ -0,0 +1,7 @@
+using System;
+
+namespace A
+{
+       public class ClassA {}
+       public class AnotherClassA {}
+}
\ No newline at end of file
diff --git a/mono/tests/reflection-load-with-context.cs b/mono/tests/reflection-load-with-context.cs
new file mode 100644 (file)
index 0000000..4c791e7
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+using System.Reflection;
+using System.IO;
+
+class Driver {
+       static int Main () {
+               var src = Path.Combine (Path.GetDirectoryName (typeof (Driver).Assembly.Location), "reflection-load-dir");
+               var dep_asm = Assembly.UnsafeLoadFrom (Path.Combine (src, "reflection-load-with-context-lib.dll"));
+               var type = dep_asm.GetType ("B.ClassB");
+               var attr_type = dep_asm.GetType ("B.MyAttribute");
+
+               try {
+                       Activator.CreateInstance (type);
+               } catch (Exception) {
+                       return 1;
+               }
+
+               try {
+                       type.GetCustomAttributes (attr_type, false);
+               } catch (Exception) {
+                       return 2;
+               }
+               return 0;
+       }
+}
+
index 7cd884e61d9fb3dd6eaf78dcb34998321fcaef2f..362bb8d3a085a4a0c128e5da051cf55947bf2afe 100755 (executable)
 #include <glib.h>
 
 #include <mono/utils/atomic.h>
+#include <mono/utils/mono-mutex.h>
 
 #if defined (WAPI_NO_ATOMIC_ASM) || defined (BROKEN_64BIT_ATOMICS_INTRINSIC)
 
 #include <pthread.h>
 
-static pthread_mutex_t spin = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t spin G_GNUC_UNUSED = PTHREAD_MUTEX_INITIALIZER;
 
-#define NEED_64BIT_CMPXCHG_FALLBACK
-
-#endif
-
-#ifdef WAPI_NO_ATOMIC_ASM
-
-static mono_once_t spin_once=MONO_ONCE_INIT;
+static mono_once_t spin_once G_GNUC_UNUSED = MONO_ONCE_INIT;
 
 static void spin_init(void)
 {
        g_warning("Using non-atomic functions!  Expect race conditions when using process-shared handles!");
 }
 
+#define NEED_64BIT_CMPXCHG_FALLBACK
+
+#endif
+
+#ifdef WAPI_NO_ATOMIC_ASM
+
 gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch,
                                  gint32 comp)
 {
@@ -568,15 +569,26 @@ gint64
 InterlockedCompareExchange64(volatile gint64 *dest, gint64 exch, gint64 comp)
 {
        gint64 old;
+       int ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       ret = pthread_mutex_lock(&spin);
+       g_assert (ret == 0);
+       
+       old= *dest;
+       if(old==comp) {
+               *dest=exch;
+       }
+       
+       ret = pthread_mutex_unlock(&spin);
+       g_assert (ret == 0);
+       
+       pthread_cleanup_pop (0);
 
-       pthread_mutex_lock (&spin);
-
-       old = *dest;
-       if(old == comp)
-               *dest = exch;
-
-       pthread_mutex_unlock (&spin);
-       return old;
+       return(old);
 }
 
 #endif
index c8c70007bc751d0a55d612c230a28450c79e968f..c1a1a94b47597e5e288ba306348925bf391c06a2 100755 (executable)
@@ -167,7 +167,7 @@ static inline void InterlockedWrite16(volatile gint16 *dst, gint16 val)
        mono_memory_barrier ();
 }
 
-/* Prefer GCC atomic ops if the target supports it (see configure.in). */
+/* Prefer GCC atomic ops if the target supports it (see configure.ac). */
 #elif defined(USE_GCC_ATOMIC_OPS)
 
 static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
index b4ea3770ad2af85b15e3a08af7de2fc77da7a5da..6da0fb2fc8d9c7a98fafaf697b2fc0e9b8e4d501 100644 (file)
        
 #      if defined(HAVE_KW_THREAD) && defined(USE_INCLUDED_LIBGC) && !defined(__powerpc__)
         /* The local alloc stuff is in pthread_support.c, but solaris uses solaris_threads.c */
-        /* It is also disabled on solaris/x86 by libgc/configure.in */
+        /* It is also disabled on solaris/x86 by libgc/configure.ac */
         /* 
                 * ARM has no definition for some atomic functions in gc_locks.h and
-                * support is also disabled in libgc/configure.in.
+                * support is also disabled in libgc/configure.ac.
                 */
 #       if !defined(__sparc__) && !defined(__sun) && !defined(__arm__) && !defined(__mips__)
 #                  define GC_REDIRECT_TO_LOCAL
index 1e5cad6498ea236a582ad51a272c4b0e39a31d30..4befb3b86a04ab38e593210e624d49cba37486f3 100644 (file)
@@ -127,7 +127,7 @@ struct _MonoLockFreeAllocDescriptor {
 #define SB_HEADER_SIZE 16
 #define SB_USABLE_SIZE (SB_SIZE - SB_HEADER_SIZE)
 
-#define SB_HEADER_FOR_ADDR(a)  ((gpointer)((gulong)(a) & ~(gulong)(SB_SIZE-1)))
+#define SB_HEADER_FOR_ADDR(a)  ((gpointer)((size_t)(a) & ~(size_t)(SB_SIZE-1)))
 #define DESCRIPTOR_FOR_ADDR(a) (*(Descriptor**)SB_HEADER_FOR_ADDR (a))
 
 /* Taken from SGen */
index abdcda699722247ae3ff3e2e59d2a22d82832bd5..c8f746825355aff06999f7fb40de638b2f571403 100644 (file)
@@ -28,9 +28,9 @@
 #endif
 
 static uintptr_t code_memory_used = 0;
-static gulong dynamic_code_alloc_count;
-static gulong dynamic_code_bytes_count;
-static gulong dynamic_code_frees_count;
+static size_t dynamic_code_alloc_count;
+static size_t dynamic_code_bytes_count;
+static size_t dynamic_code_frees_count;
 
 /*
  * AMD64 processors maintain icache coherency only for pages which are 
index 8c813453f6ee4f83c2467219903504b3dc30e4df..a84b5b5096a559b907bf60eb17d8bcfa4aab71de 100755 (executable)
@@ -118,7 +118,8 @@ typedef struct {
         __asm mov [eax+0x14], esp                                                                                      \
         __asm mov [eax+0x18], esi                                                                                      \
         __asm mov [eax+0x1c], edi                                                                                      \
-        __asm call $+5                                                                                                         \
+        __asm call __mono_context_get_ip                                                                       \
+        __asm __mono_context_get_ip:                                                                           \
         __asm pop dword ptr [eax+0x20]                                                                         \
                 }                                                                                                                              \
        } while (0)
@@ -179,7 +180,11 @@ typedef struct {
 #define MONO_CONTEXT_GET_BP(ctx) ((gpointer)((ctx)->rbp))
 #define MONO_CONTEXT_GET_SP(ctx) ((gpointer)((ctx)->rsp))
 
-#if defined(__native_client__)
+#if defined (HOST_WIN32)
+extern void mono_context_get_current (void *);
+#define MONO_CONTEXT_GET_CURRENT(ctx) do { mono_context_get_current((void*)&(ctx)); } while (0)
+
+#elif defined(__native_client__)
 #define MONO_CONTEXT_GET_CURRENT(ctx)  \
        __asm__ __volatile__(   \
                "movq $0x0,  %%nacl:0x00(%%r15, %0, 1)\n"       \
index 9d72ba2dcd30e7cc5ed82c5330f7a0be3ce5b336..8ab20140cdaeb2ed45da999cf2ada9ed6964f81a 100644 (file)
@@ -250,10 +250,10 @@ dump_counter (MonoCounter *counter, FILE *outfile) {
                if ((counter->type & MONO_COUNTER_UNIT_MASK) == MONO_COUNTER_TIME)
                        fprintf (outfile, ENTRY_FMT "%.2f ms\n", counter->name, (double)(*(gint64*)buffer) / 10000.0);
                else
-                       fprintf (outfile, ENTRY_FMT "%lld\n", counter->name, *(gint64*)buffer);
+                       fprintf (outfile, ENTRY_FMT "%lld\n", counter->name, *(long long *)buffer);
                break;
        case MONO_COUNTER_ULONG:
-               fprintf (outfile, ENTRY_FMT "%llu\n", counter->name, *(guint64*)buffer);
+               fprintf (outfile, ENTRY_FMT "%llu\n", counter->name, *(unsigned long long *)buffer);
                break;
        case MONO_COUNTER_WORD:
                fprintf (outfile, ENTRY_FMT "%zd\n", counter->name, *(gssize*)buffer);
@@ -273,43 +273,43 @@ dump_counter (MonoCounter *counter, FILE *outfile) {
 }
 
 static gint64
-user_time ()
+user_time (void)
 {
        return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_USER_TIME);
 }
 
 static gint64
-system_time ()
+system_time (void)
 {
        return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_SYSTEM_TIME);
 }
 
 static gint64
-total_time ()
+total_time (void)
 {
        return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_TOTAL_TIME);
 }
 
 static gint64
-working_set ()
+working_set (void)
 {
        return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_WORKING_SET);
 }
 
 static gint64
-private_bytes ()
+private_bytes (void)
 {
        return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_PRIVATE_BYTES);
 }
 
 static gint64
-virtual_bytes ()
+virtual_bytes (void)
 {
        return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_VIRTUAL_BYTES);
 }
 
 static gint64
-page_faults ()
+page_faults (void)
 {
        return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_FAULTS);
 }
@@ -349,19 +349,19 @@ cpu_load (int kind)
 }
 
 static double
-cpu_load_1min ()
+cpu_load_1min (void)
 {
        return cpu_load (0);
 }
 
 static double
-cpu_load_5min ()
+cpu_load_5min (void)
 {
        return cpu_load (1);
 }
 
 static double
-cpu_load_15min ()
+cpu_load_15min (void)
 {
        return cpu_load (2);
 }
@@ -374,7 +374,7 @@ static gboolean system_counters_initialized = FALSE;
 #define SYSCOUNTER_LOAD (MONO_COUNTER_SYSTEM | MONO_COUNTER_DOUBLE | MONO_COUNTER_PERCENTAGE | MONO_COUNTER_VARIABLE | MONO_COUNTER_CALLBACK)
 
 static void
-initialize_system_counters ()
+initialize_system_counters (void)
 {
        mono_counters_register ("User Time", SYSCOUNTER_TIME, &user_time);
        mono_counters_register ("System Time", SYSCOUNTER_TIME, &system_time);
@@ -417,8 +417,7 @@ mono_counters_foreach (CountersEnumCallback cb, gpointer user_data)
                size = sizeof (type);   \
                if (buffer_size < size) \
                        return -1;      \
-               type __var = cb ? ((functype)counter->addr) () : *(type*)counter->addr; \
-               memcpy (buffer, &__var, size);  \
+               *(type*)buffer = cb ? ((functype)counter->addr) () : *(type*)counter->addr; \
        } while (0);
 
 int
index d2f2bc5a4a9735030f340a91f861a38fac9d01c8..d5c9d254c3c95cd31648f2e6a44fb66fd1d2e483 100644 (file)
  */
 
 #include "mono/utils/mono-hwcap-s390x.h"
-
 #include <signal.h>
 
-gboolean mono_hwcap_s390x_has_ld = FALSE;
-
-static void
-catch_sigill (int sig_no, siginfo_t *info, gpointer act)
-{
-       mono_hwcap_s390x_has_ld = FALSE;
-}
+facilityList_t facs;
 
 void
 mono_hwcap_arch_init (void)
 {
-       mono_hwcap_s390x_has_ld = TRUE;
-
-       struct sigaction sa, *old_sa;
-
-       /* Determine if we have a long displacement facility
-        * by executing the STY instruction. If it fails, we
-        * catch the SIGILL and assume the answer is no.
-        */
-       sa.sa_sigaction = catch_sigill;
-       sigemptyset (&sa.sa_mask);
-       sa.sa_flags = SA_SIGINFO;
-
-       sigaction (SIGILL, &sa, old_sa);
-
-       __asm__ __volatile__ (
-               "LGHI\t0,1\n\t"
-               "LA\t1,%0\n\t"
-               ".byte\t0xe3,0x00,0x10,0x00,0x00,0x50\n\t"
-               : "=m" (mono_hwcap_s390x_has_ld)
-               :
-               : "0", "1"
-       );
+       int lFacs = sizeof(facs) / 8;
 
-       sigaction (SIGILL, old_sa, NULL);
+       __asm__ ("      lgfr    0,%1\n"
+                "      .insn   s,0xb2b00000,%0\n"
+                : "=m" (facs) : "r" (lFacs) : "0", "cc");
 }
 
 void
 mono_hwcap_print (FILE *f)
 {
-       g_fprintf (f, "mono_hwcap_s390x_has_ld = %i\n", mono_hwcap_s390x_has_ld);
 }
index 24c76a28545a429f63072de1c7c22ed772ef0947..313aca8bcb432fbd174cfd6deaaab76a04ef1514 100644 (file)
@@ -3,6 +3,84 @@
 
 #include "mono/utils/mono-hwcap.h"
 
-extern gboolean mono_hwcap_s390x_has_ld;
+typedef struct
+{
+       char    n3:1;           // N3 instructions present
+       char    zArch:1;        // z/Architecture mode installed
+       char    zAct:1;         // z/Architecture mode active
+       char    date:1;         // DAT enhancement facility
+       char    idte1:1;        // IDTE present (PST)
+       char    idte2:1;        // IDTE present (REG)
+       char    asnlx:1;        // ASN and LX reuse facility
+       char    stfle:1;        // STFLE installed
+       char    zDATe:1;        // Enhanced DAT in z mode
+       char    srstat:1;       // Sense running status facility
+       char    cSSKE:1;        // Conditional SSKE facility
+       char    topo:1;         // Configuration topology facility
+       char    rv1:1;          // Reserved
+       char    xTrans2:1;      // Extended translation facility 2
+       char    msgSec:1;       // Message security facility
+       char    longDsp:1;      // Long displacement facility
+       char    hiPerfLD:1;     // High performance long displacement facility
+       char    hfpMAS:1;       // HFP multiply-and-add/subtrace facility
+       char    xImm:1;         // Extended immediate facility
+       char    xTrans3:1;      // Extended translation facility 3
+       char    hfpUnX:1;       // HFP unnormalized extension facility
+       char    etf2:1;         // ETF2-enhancement facility
+       char    stckf:1;        // Store-clock-fast facility
+       char    parse:1;        // Parsing enhancement facility
+       char    mvcos:1;        // MVCOS facility
+       char    todSteer:1;     // TOD-clock steering facility
+       char    etf3:1;         // ETF3-enhancement facility
+       char    xCPUtm:1;       // Extract CPU time facility
+       char    csst:1;         // Compare-swap-and-store facility
+       char    csst2:1;        // Compare-swap-and-store facility 2
+       char    giX:1;          // General instructions extension facility
+       char    exX:1;          // Execute extensions facility
+       char    em:1;           // Enhanced monitor
+       char    rv2:1;          // Reserved
+       char    spp:1;          // Set program parameters
+       char    fps:1;          // Floating point support enhancement
+       char    dfp:1;          // Decimal floating point facility
+       char    hiDFP:1;        // High Performance DFP facility
+       char    pfpo:1;         // PFPO instruction facility
+       char    doclpkia:1;     // DO/Fast BCR/CL/PK/IA
+       char    rv3:1;          // Reserved
+       char    cmpsce:1;       // CMPSC enhancement
+       char    dfpzc:1;        // DFP zoned-conversion
+       char    eh:1;           // Execution hint
+       char    lt:1;           // Load and trap
+       char    mi:1;           // Miscellaneous instruction enhancements
+       char    pa:1;           // Processor assist
+       char    cx:1;           // Constrained transactional execution
+       char    ltlb:1;         // Local TLB clearing
+       char    ia2:1;          // Interlocked access 2
+       char    rv4:1;          // Reserved;
+       char    rv5:1;          // Reserved;
+       char    rv6:1;          // Reserved;
+       char    rv7:1;          // Reserved;
+       char    rv8:1;          // Reserved;
+       char    rv9:1;          // Reserved;
+       char    rva:1;          // Reserved;
+       char    rvb:1;          // Reserved;
+       char    rvc:1;          // Reserved;
+       char    rvd:1;          // Reserved;
+       char    rve:1;          // Reserved;
+       char    rvf:1;          // Reserved;
+       char    rvg:1;          // Reserved;
+       char    rb:1;           // RRB multiple
+       char    cmc:1;          // CPU measurement counter
+       char    cms:1;          // CPU measurement sampling
+       char    rvh:4;          // Reserved
+       char    tx:1;           // Transactional execution
+       char    rvi:1;          // Reserved
+       char    axsi:1;         // Access exception/store indication
+       char    m3:1;           // Message security extension 3
+       char    m4:1;           // Message security extension 4
+       char    ed2:1;          // Enhanced DAT 2
+       int64_t end[0];         // End on a double word
+} __attribute__((aligned(8))) facilityList_t;
+       
+extern facilityList_t facs;
 
 #endif /* __MONO_UTILS_HWCAP_S390X_H__ */
index 3536d25d8445900a99b12dd7b1c67851899b809d..b7391962eaae5d35ab1e704801f7d36e533224aa 100644 (file)
@@ -188,7 +188,7 @@ mono_lls_remove (MonoLinkedListSet *list, MonoThreadHazardPointers *hp, MonoLink
                        continue;
                /* The second CAS must happen before the first. */
                mono_memory_write_barrier ();
-               if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, next, cur) == cur) {
+               if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, mono_lls_pointer_unmask (next), cur) == cur) {
                        /* The CAS must happen before the hazard pointer clear. */
                        mono_memory_write_barrier ();
                        mono_hazard_pointer_clear (hp, 1);
index fe8a98079f8fee5a5c54edb850b21f161c7ed6d5..5546c6b7cca923cb217f5b89ce2e45ae10b11b9c 100644 (file)
@@ -65,8 +65,8 @@ malloc_shared_area (int pid)
 static char*
 aligned_address (char *mem, size_t size, size_t alignment)
 {
-       char *aligned = (char*)((gulong)(mem + (alignment - 1)) & ~(alignment - 1));
-       g_assert (aligned >= mem && aligned + size <= mem + size + alignment && !((gulong)aligned & (alignment - 1)));
+       char *aligned = (char*)((size_t)(mem + (alignment - 1)) & ~(alignment - 1));
+       g_assert (aligned >= mem && aligned + size <= mem + size + alignment && !((size_t)aligned & (alignment - 1)));
        return aligned;
 }
 
@@ -483,6 +483,8 @@ mono_mprotect (void *addr, size_t length, int flags)
 }
 #endif // HAVE_MMAP
 
+#if defined(HAVE_SHM_OPEN) && !defined (DISABLE_SHARED_PERFCOUNTERS)
+
 static int use_shared_area;
 
 static gboolean
@@ -497,8 +499,6 @@ shared_area_disabled (void)
        return use_shared_area == -1;
 }
 
-#if defined(HAVE_SHM_OPEN) && !defined (DISABLE_SHARED_PERFCOUNTERS)
-
 static int
 mono_shared_area_instances_slow (void **array, int count, gboolean cleanup)
 {
index 74be0028245c4a5cf4f3180349f83bca1f949568..4ac92196e07c5cdae57975616aa4c7f54c1e2ba0 100644 (file)
@@ -25,9 +25,6 @@
 #  elif defined(__native_client__) && defined(USE_NEWLIB)
 #    define TIMESPEC struct timespec
 #    define WAIT_BLOCK(a, b) sem_trywait(a)
-#  elif defined(__OpenBSD__)
-#    define TIMESPEC struct timespec
-#    define WAIT_BLOCK(a) sem_trywait(a)
 #  else
 #    define TIMESPEC struct timespec
 #    define WAIT_BLOCK(a,b) sem_timedwait (a, b)
@@ -43,9 +40,6 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
        TIMESPEC ts, copy;
        struct timeval t;
        int res = 0;
-#if defined(__OpenBSD__)
-       int timeout;
-#endif
 
 #ifndef USE_MACH_SEMA
        if (timeout_ms == 0)
@@ -65,19 +59,7 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
                ts.tv_nsec -= NSEC_PER_SEC;
                ts.tv_sec++;
        }
-#if defined(__OpenBSD__)
-       timeout = ts.tv_sec;
-       while (timeout) {
-               if ((res = WAIT_BLOCK (sem)) == 0)
-                       return res;
-
-               if (alertable)
-                       return -1;
 
-               usleep (ts.tv_nsec / 1000);
-               timeout--;
-       }
-#else
        copy = ts;
        while ((res = WAIT_BLOCK (sem, &ts)) == -1 && errno == EINTR) {
                struct timeval current;
@@ -104,7 +86,7 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
                        ts.tv_nsec = 0;
                }
        }
-#endif
+
        /* OSX might return > 0 for error */
        if (res != 0)
                res = -1;
index 0e95d4e878e6eb1c7f3789dc8c13b92fdd456731..cafb3fe96d03a7ddc35d3e72216ccdb8258be080 100644 (file)
@@ -66,25 +66,24 @@ mono_threads_install_dead_letter (void)
 {
        id cur, dict;
 
+       /*
+        * See the 'Dispatch Objective-C Messages Using the Method Function’s Prototype' section in
+        * the '64-Bit Transition Guide for Cocoa Touch' as to why this is required.
+        *
+        * It doesn't hurt on other architectures either, so no need to #ifdef it only for ARM64.
+        */
+
+       id (*id_objc_msgSend_id)(id, SEL, id) = (id (*)(id, SEL, id)) objc_msgSend;
+       void (*objc_msgSend_id_id)(id, SEL, id, id) = (void (*)(id, SEL, id, id)) objc_msgSend;
+
        cur = objc_msgSend ((id)nsthread, currentThread);
        if (!cur)
                return;
        dict = objc_msgSend (cur, threadDictionary);
-       if (dict && objc_msgSend (dict, objectForKey, mono_dead_letter_key) == nil) {
+       if (dict && id_objc_msgSend_id (dict, objectForKey, mono_dead_letter_key) == nil) {
                id value = objc_msgSend (objc_msgSend ((id)mono_dead_letter_class, alloc), init);
 
-#ifdef TARGET_ARM64
-               /*
-                * See the 'Dispatch Objective-C Messages Using the Method Function’s Prototype' section in
-                * the '64-Bit Transition Guide for Cocoa Touch' as to why this is required.
-                */
-               {
-                       void (*action)(id, SEL, id, id) = (void (*)(id, SEL, id, id)) objc_msgSend;
-                       action (dict, setObjectForKey, value, mono_dead_letter_key);
-               }
-#else
-               objc_msgSend (dict, setObjectForKey, value, mono_dead_letter_key);
-#endif
+               objc_msgSend_id_id (dict, setObjectForKey, value, mono_dead_letter_key);
 
                objc_msgSend (value, release);
        }
@@ -93,8 +92,8 @@ mono_threads_install_dead_letter (void)
 void
 mono_threads_init_dead_letter (void)
 {
-       id nsstring = objc_getClass ("NSString");
-       id nsautoreleasepool = objc_getClass ("NSAutoreleasePool");
+       id nsstring = (id) objc_getClass ("NSString");
+       id nsautoreleasepool = (id) objc_getClass ("NSAutoreleasePool");
        SEL stringWithUTF8String = sel_registerName ("stringWithUTF8String:");
        SEL retain = sel_registerName ("retain");
        id pool;
@@ -121,14 +120,8 @@ mono_threads_init_dead_letter (void)
        // create the dict key
        pool = objc_msgSend (objc_msgSend (nsautoreleasepool, alloc), init);
 
-#ifdef TARGET_ARM64
-       {
-               id (*action)(id, SEL, char*) = (id (*)(id, SEL, char*)) objc_msgSend;
-               mono_dead_letter_key = action(nsstring, stringWithUTF8String, "mono-dead-letter");
-       }
-#else
-       mono_dead_letter_key = objc_msgSend (nsstring, stringWithUTF8String, "mono-dead-letter");
-#endif
+       id (*objc_msgSend_char)(id, SEL, const char*) = (id (*)(id, SEL, const char*)) objc_msgSend;
+       mono_dead_letter_key = objc_msgSend_char (nsstring, stringWithUTF8String, "mono-dead-letter");
 
        objc_msgSend (mono_dead_letter_key, retain);
        objc_msgSend (pool, release);
index 605ebf58a7650a3e95ceb5b1422400902ba0aad2..2ab2e6596e5cf5e6d0730a9a816b9e5208dfe7fb 100644 (file)
@@ -40,19 +40,19 @@ mono_threads_core_needs_abort_syscall (void)
 void
 mono_threads_core_self_suspend (MonoThreadInfo *info)
 {
-       g_assert (0);
+       g_assert_not_reached ();
 }
 
 gboolean
 mono_threads_core_suspend (MonoThreadInfo *info)
 {
-       g_assert (0);
+       g_assert_not_reached ();
 }
 
 gboolean
 mono_threads_core_resume (MonoThreadInfo *info)
 {
-       g_assert (0);
+       g_assert_not_reached ();
 }
 
 void
@@ -190,6 +190,7 @@ __readfsdword (unsigned long offset)
 void
 mono_threads_core_get_stack_bounds (guint8 **staddr, size_t *stsize)
 {
+       MEMORY_BASIC_INFORMATION meminfo;
 #ifdef TARGET_AMD64
        /* win7 apis */
        NT_TIB* tib = (NT_TIB*)NtCurrentTeb();
@@ -201,9 +202,17 @@ mono_threads_core_get_stack_bounds (guint8 **staddr, size_t *stsize)
        guint8 *stackTop = (guint8*)*(int*)((char*)tib + 4);
        guint8 *stackBottom = (guint8*)*(int*)((char*)tib + 8);
 #endif
+       /*
+       Windows stacks are expanded on demand, one page at time. The TIB reports
+       only the currently allocated amount.
+       VirtualQuery will return the actual limit for the bottom, which is what we want.
+       */
+       if (VirtualQuery (&meminfo, &meminfo, sizeof (meminfo)) == sizeof (meminfo))
+               stackBottom = MIN (stackBottom, (guint8*)meminfo.AllocationBase);
 
        *staddr = stackBottom;
        *stsize = stackTop - stackBottom;
+
 }
 
 gboolean
index dad8850711aea22f118dd4e620180bd18e028b71..0258e2aa28fc31ca3e7556c2588dcd8aad0b6b74 100644 (file)
@@ -38,7 +38,7 @@ when it is in fact not.
 */
 static MonoSemType global_suspend_semaphore;
 
-static int thread_info_size;
+static size_t thread_info_size;
 static MonoThreadInfoCallbacks threads_callbacks;
 static MonoThreadInfoRuntimeCallbacks runtime_callbacks;
 static MonoNativeTlsKey thread_info_key, small_id_key;
@@ -741,7 +741,7 @@ mono_threads_create_thread (LPTHREAD_START_ROUTINE start, gpointer arg, guint32
 void
 mono_thread_info_get_stack_bounds (guint8 **staddr, size_t *stsize)
 {
-       return mono_threads_core_get_stack_bounds (staddr, stsize);
+       mono_threads_core_get_stack_bounds (staddr, stsize);
 }
 
 gboolean
index 457a268ad17d6732db208dac519827a4898ee61b..dbd25a8f7787a052504a9c95014b6c2cd3b1c010 100644 (file)
@@ -28,7 +28,7 @@ typedef HANDLE MonoNativeThreadHandle; /* unused */
 typedef DWORD mono_native_thread_return_t;
 
 #define MONO_NATIVE_THREAD_ID_TO_UINT(tid) (tid)
-#define MONO_UINT_TO_NATIVE_THREAD_ID(tid) (tid)
+#define MONO_UINT_TO_NATIVE_THREAD_ID(tid) ((MonoNativeThreadId)(tid))
 
 #else
 
index d7b993409991182021565d76457cd7f4dc16ddf6..f20acdc2498bb31a49f9d81cc5257c381c118ef2 100644 (file)
  * #define NO_ERRNO if strtod should not assign errno = ERANGE when
  *     the result overflows to +-Infinity or underflows to 0.
  */
-#if defined(TARGET_X86) || defined(mips) && defined(MIPSEL) || defined (__arm__)
+#if defined(TARGET_X86) || defined(mips) && defined(MIPSEL) || defined (__arm__) || defined(__aarch64__)
 
 #   define IEEE_8087
 
diff --git a/mono/utils/win64.asm b/mono/utils/win64.asm
new file mode 100644 (file)
index 0000000..ba9f979
--- /dev/null
@@ -0,0 +1,42 @@
+ifndef X64
+
+.386
+.model flat, c
+
+endif
+
+.code
+
+ifdef X64
+
+PUBLIC mono_context_get_current
+
+mono_context_get_current PROC
+;rdi has the ctx ptr
+       mov [rcx + 00h], rax
+       mov [rcx + 08h], rbx
+       mov [rcx + 10h], rcx
+       mov [rcx + 18h], rdx
+       mov [rcx + 20h], rbp
+       mov [rcx + 28h], rsp
+       mov [rcx + 30h], rsi
+       mov [rcx + 38h], rdi
+       mov [rcx + 40h], r8
+       mov [rcx + 48h], r9
+       mov [rcx + 50h], r10
+       mov [rcx + 58h], r11
+       mov [rcx + 60h], r12
+       mov [rcx + 68h], r13
+       mov [rcx + 70h], r14
+       mov [rcx + 78h], r15
+
+       lea rax, __mono_current_ip
+__mono_current_ip:
+       mov [rcx + 80h], rax
+       ret
+
+mono_context_get_current endP
+
+endif
+
+end
index 73d376b45bae85eea8e27647633407568859db2f..9cf8db7acee7aae13773a05668c78bd600503de6 100644 (file)
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>libgc.lib;libmonoruntime.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>libgc.lib;libmonoruntimesgen.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>\r
+      <ModuleDefinitionFile>monosgen64.def</ModuleDefinitionFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
     <Link>\r
       <AdditionalDependencies>libgc.lib;libmonoruntime.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>\r
+      <ModuleDefinitionFile>monosgen64.def</ModuleDefinitionFile>\r
       <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>\r
       <TargetMachine>MachineX64</TargetMachine>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
index 634c160525f1f3232b4763ce07f0931b9f3966ce..cb098592678ea1fd63a196ed266887a14d36f488 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug_SGen|Win32">\r
       <Configuration>Debug_SGen</Configuration>\r
     <ClCompile Include="..\mono\metadata\sgen-marksweep-par.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-marksweep.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-memory-governor.c" />\r
+    <ClCompile Include="..\mono\metadata\sgen-new-bridge.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-nursery-allocator.c" />\r
+    <ClCompile Include="..\mono\metadata\sgen-old-bridge.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-mach.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-posix.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-win32.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-protocol.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-simple-nursery.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-split-nursery.c" />\r
+    <ClCompile Include="..\mono\metadata\sgen-tarjan-bridge.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-toggleref.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-workers.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-fin-weak-hash.c" />\r
       <WarningLevel>Level3</WarningLevel>\r
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>\r
+      <OmitFramePointers>false</OmitFramePointers>\r
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);$(top_srcdir)\mono</AdditionalIncludeDirectories>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
index b52f26a5525e99b9752144b1e05e7475050328f3..b760ab7697180fd83ef8c0d3bc0a646d126712c7 100644 (file)
     <ClInclude Include="..\mono\utils\mono-hwcap-x86.h" />\r
     <ClInclude Include="..\mono\utils\bsearch.h" />\r
   </ItemGroup>\r
+  <ItemGroup>\r
+    <MASM Include="..\mono\utils\win64.asm">\r
+      <FileType>Document</FileType>\r
+    </MASM>\r
+  </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}</ProjectGuid>\r
     <Keyword>Win32Proj</Keyword>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
+    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />\r
   </ImportGroup>\r
   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
       <WarningLevel>Level3</WarningLevel>\r
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/eglib/src;$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
     <PreBuildEvent>\r
       <Command>winsetup.bat</Command>\r
     </PreBuildEvent>\r
+    <MASM>\r
+      <PreprocessorDefinitions>X64</PreprocessorDefinitions>\r
+    </MASM>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
   </ItemDefinitionGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
+    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />\r
   </ImportGroup>\r
 </Project>
\ No newline at end of file
index b8f3c4fd165fd8d951776c8652cc35872409f2ac..7fe3206e2485d7584d46e902cd91734e3a486bac 100644 (file)
@@ -1,9 +1,9 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Label="MonoDefines">
-    <top_srcdir>$(MSBuildProjectDirectory)/..</top_srcdir>
-    <LIBGC_CPPFLAGS_INCLUDE>$(top_srcdir)/libgc/include</LIBGC_CPPFLAGS_INCLUDE>
-    <GLIB_CFLAGS_INCLUDE>$(top_srcdir)/eglib/src</GLIB_CFLAGS_INCLUDE>
+    <top_srcdir>$(MSBuildProjectDirectory)\..</top_srcdir>
+    <LIBGC_CPPFLAGS_INCLUDE>$(top_srcdir)\libgc\include</LIBGC_CPPFLAGS_INCLUDE>
+    <GLIB_CFLAGS_INCLUDE>$(top_srcdir)\eglib\src</GLIB_CFLAGS_INCLUDE>
     <BOEHM_DEFINES>HAVE_BOEHM_GC;HAVE_GC_H;USE_INCLUDED_LIBGC;HAVE_GC_GCJ_MALLOC;HAVE_GC_ENABLE</BOEHM_DEFINES>
     <SGEN_DEFINES>HAVE_SGEN_GC;HAVE_MOVING_COLLECTOR;HAVE_WRITE_BARRIERS</SGEN_DEFINES>
   </PropertyGroup>
diff --git a/msvc/monosgen64.def b/msvc/monosgen64.def
new file mode 100644 (file)
index 0000000..84f306a
--- /dev/null
@@ -0,0 +1,866 @@
+; file generated by create-windef.pl
+LIBRARY monosgen-2.0.dll
+EXPORTS
+MonoFixupCorEE
+mono_add_internal_call
+mono_aot_register_globals
+mono_aot_register_module
+mono_array_addr_with_size
+mono_array_class_get
+mono_array_clone
+mono_array_element_size
+mono_array_length
+mono_array_new
+mono_array_new_full
+mono_array_new_specific
+mono_assemblies_cleanup
+mono_assemblies_init
+mono_assembly_close
+mono_assembly_fill_assembly_name
+mono_assembly_foreach
+mono_assembly_get_assemblyref
+mono_assembly_get_image
+mono_assembly_get_main
+mono_assembly_get_object
+mono_assembly_getrootdir
+mono_assembly_invoke_load_hook
+mono_assembly_invoke_search_hook
+mono_assembly_load
+mono_assembly_load_from
+mono_assembly_load_from_full
+mono_assembly_load_full
+mono_assembly_load_module
+mono_assembly_load_reference
+mono_assembly_load_references
+mono_assembly_load_with_partial_name
+mono_assembly_loaded
+mono_assembly_loaded_full
+mono_assembly_name_free
+mono_assembly_name_get_culture
+mono_assembly_name_get_name
+mono_assembly_name_get_pubkeytoken
+mono_assembly_name_get_version
+mono_assembly_name_new
+mono_assembly_names_equal
+mono_assembly_open
+mono_assembly_open_full
+mono_assembly_set_main
+mono_assembly_setrootdir
+mono_binary_search
+mono_bitset_alloc_size
+mono_bitset_clear
+mono_bitset_clear_all
+mono_bitset_clone
+mono_bitset_copyto
+mono_bitset_count
+mono_bitset_equal
+mono_bitset_find_first
+mono_bitset_find_first_unset
+mono_bitset_find_last
+mono_bitset_find_start
+mono_bitset_foreach
+mono_bitset_free
+mono_bitset_intersection
+mono_bitset_intersection_2
+mono_bitset_invert
+mono_bitset_mem_new
+mono_bitset_new
+mono_bitset_set
+mono_bitset_set_all
+mono_bitset_size
+mono_bitset_sub
+mono_bitset_test
+mono_bitset_test_bulk
+mono_bitset_union
+mono_bounded_array_class_get
+mono_breakpoint_clean_code
+mono_check_corlib_version
+mono_class_array_element_size
+mono_class_data_size
+mono_class_describe_statics
+mono_class_enum_basetype
+mono_class_from_generic_parameter
+mono_class_from_mono_type
+mono_class_from_name
+mono_class_from_name_case
+mono_class_from_typeref
+mono_class_get
+mono_class_get_byref_type
+mono_class_get_com_object_class
+mono_class_get_element_class
+mono_class_get_event_token
+mono_class_get_events
+mono_class_get_field
+mono_class_get_field_from_name
+mono_class_get_field_token
+mono_class_get_fields
+mono_class_get_flags
+mono_class_get_full
+mono_class_get_idispatch_class
+mono_class_get_image
+mono_class_get_interfaces
+mono_class_get_interop_proxy_class
+mono_class_get_iunknown_class
+mono_class_get_method_from_name
+mono_class_get_method_from_name_flags
+mono_class_get_methods
+mono_class_get_name
+mono_class_get_namespace
+mono_class_get_nested_types
+mono_class_get_nesting_type
+mono_class_get_parent
+mono_class_get_properties
+mono_class_get_property_from_name
+mono_class_get_property_token
+mono_class_get_rank
+mono_class_get_type
+mono_class_get_type_token
+mono_class_get_variant_class
+mono_class_implements_interface
+mono_class_inflate_generic_method
+mono_class_inflate_generic_type
+mono_class_init
+mono_class_instance_size
+mono_class_interface_offset
+mono_class_is_assignable_from
+mono_class_is_delegate
+mono_class_is_enum
+mono_class_is_subclass_of
+mono_class_is_valid_enum
+mono_class_is_valuetype
+mono_class_min_align
+mono_class_name_from_token
+mono_class_num_events
+mono_class_num_fields
+mono_class_num_methods
+mono_class_num_properties
+mono_class_value_size
+mono_class_vtable
+mono_cli_rva_image_map
+mono_code_manager_cleanup
+mono_code_manager_commit
+mono_code_manager_destroy
+mono_code_manager_foreach
+mono_code_manager_init
+mono_code_manager_invalidate
+mono_code_manager_new
+mono_code_manager_new_dynamic
+mono_code_manager_reserve
+mono_code_manager_reserve_align
+mono_code_manager_set_read_only
+mono_code_manager_size
+mono_compile_method
+mono_config_cleanup
+mono_config_for_assembly
+mono_config_is_server_mode
+mono_config_parse
+mono_config_parse_memory
+mono_config_set_server_mode
+mono_config_string_for_assembly_file
+mono_context_get
+mono_context_get_desc
+mono_context_init
+mono_context_set
+mono_counters_cleanup
+mono_counters_dump
+mono_counters_enable
+mono_counters_register
+mono_custom_attrs_construct
+mono_custom_attrs_free
+mono_custom_attrs_from_assembly
+mono_custom_attrs_from_class
+mono_custom_attrs_from_event
+mono_custom_attrs_from_field
+mono_custom_attrs_from_index
+mono_custom_attrs_from_method
+mono_custom_attrs_from_param
+mono_custom_attrs_from_property
+mono_custom_attrs_get_attr
+mono_custom_attrs_has_attr
+mono_debug_add_delegate_trampoline
+mono_debug_add_method
+mono_debug_cleanup
+mono_debug_close_image
+mono_debug_close_mono_symbol_file
+mono_debug_domain_create
+mono_debug_domain_unload
+mono_debug_enabled
+mono_debug_find_method
+mono_debug_free_method_jit_info
+mono_debug_free_source_location
+mono_debug_il_offset_from_address
+mono_debug_init
+mono_debug_list_add
+mono_debug_list_remove
+mono_debug_lookup_locals
+mono_debug_lookup_method
+mono_debug_lookup_method_addresses
+mono_debug_lookup_source_location
+mono_debug_open_image_from_memory
+mono_debug_open_mono_symbols
+mono_debug_print_stack_frame
+mono_debug_print_vars
+mono_debug_remove_method
+mono_debug_symfile_free_locals
+mono_debug_symfile_free_location
+mono_debug_symfile_get_line_numbers
+mono_debug_symfile_get_line_numbers_full
+mono_debug_symfile_is_loaded
+mono_debug_symfile_lookup_locals
+mono_debug_symfile_lookup_location
+mono_debug_symfile_lookup_method
+mono_debugger_insert_breakpoint
+mono_debugger_method_has_breakpoint
+mono_debugger_run_finally
+mono_declsec_flags_from_assembly
+mono_declsec_flags_from_class
+mono_declsec_flags_from_method
+mono_declsec_get_assembly_action
+mono_declsec_get_class_action
+mono_declsec_get_demands
+mono_declsec_get_inheritdemands_class
+mono_declsec_get_inheritdemands_method
+mono_declsec_get_linkdemands
+mono_declsec_get_method_action
+mono_digest_get_public_token
+mono_disasm_code
+mono_disasm_code_one
+mono_dl_fallback_register
+mono_dl_fallback_unregister
+mono_dllmap_insert
+mono_domain_add_class_static_data
+mono_domain_assembly_open
+mono_domain_create
+mono_domain_create_appdomain
+mono_domain_finalize
+mono_domain_foreach
+mono_domain_free
+mono_domain_from_appdomain
+mono_domain_get
+mono_domain_get_by_id
+mono_domain_get_id
+mono_domain_has_type_resolve
+mono_domain_is_unloading
+mono_domain_owns_vtable_slot
+mono_domain_set
+mono_domain_set_internal
+mono_domain_try_type_resolve
+mono_domain_try_unload
+mono_domain_unload
+mono_dwarf_escape_path
+mono_emit_native_call
+mono_environment_exitcode_get
+mono_environment_exitcode_set
+mono_error_cleanup
+mono_error_get_error_code
+mono_error_get_message
+mono_error_init
+mono_error_init_flags
+mono_error_ok
+mono_escape_uri_string
+mono_event_get_add_method
+mono_event_get_flags
+mono_event_get_name
+mono_event_get_object
+mono_event_get_parent
+mono_event_get_raise_method
+mono_event_get_remove_method
+mono_exception_from_name
+mono_exception_from_name_domain
+mono_exception_from_name_msg
+mono_exception_from_name_two_strings
+mono_exception_from_token
+mono_exception_from_token_two_strings
+mono_exception_walk_trace
+mono_field_from_token
+mono_field_full_name
+mono_field_get_data
+mono_field_get_flags
+mono_field_get_name
+mono_field_get_object
+mono_field_get_offset
+mono_field_get_parent
+mono_field_get_type
+mono_field_get_value
+mono_field_get_value_object
+mono_field_set_value
+mono_field_static_get_value
+mono_field_static_set_value
+mono_file_map
+mono_file_map_close
+mono_file_map_fd
+mono_file_map_open
+mono_file_map_size
+mono_file_unmap
+mono_free
+mono_free_bstr
+mono_free_method
+mono_free_verify_list
+mono_g_hash_table_destroy
+mono_g_hash_table_find
+mono_g_hash_table_foreach
+mono_g_hash_table_foreach_remove
+mono_g_hash_table_insert
+mono_g_hash_table_lookup
+mono_g_hash_table_lookup_extended
+mono_g_hash_table_new
+mono_g_hash_table_new_full
+mono_g_hash_table_new_type
+mono_g_hash_table_print_stats
+mono_g_hash_table_remove
+mono_g_hash_table_replace
+mono_g_hash_table_size
+mono_gc_collect
+mono_gc_collection_count
+mono_gc_enable_events
+mono_gc_get_generation
+mono_gc_get_heap_size
+mono_gc_get_used_size
+mono_gc_invoke_finalizers
+mono_gc_is_finalizer_thread
+mono_gc_make_root_descr_user
+mono_gc_max_generation
+mono_gc_out_of_memory
+mono_gc_reference_queue_add
+mono_gc_reference_queue_free
+mono_gc_reference_queue_new
+mono_gc_toggleref_add
+mono_gc_toggleref_register_callback
+mono_gc_walk_heap
+mono_gc_wbarrier_arrayref_copy
+mono_gc_wbarrier_generic_nostore
+mono_gc_wbarrier_generic_store
+mono_gc_wbarrier_generic_store_atomic
+mono_gc_wbarrier_object_copy
+mono_gc_wbarrier_set_arrayref
+mono_gc_wbarrier_set_field
+mono_gc_wbarrier_value_copy
+mono_gchandle_free
+mono_gchandle_get_target
+mono_gchandle_new
+mono_gchandle_new_weakref
+mono_get_array_class
+mono_get_boolean_class
+mono_get_byte_class
+mono_get_char_class
+mono_get_config_dir
+mono_get_corlib
+mono_get_dbnull_object
+mono_get_delegate_begin_invoke
+mono_get_delegate_end_invoke
+mono_get_delegate_invoke
+mono_get_double_class
+mono_get_enum_class
+mono_get_exception_appdomain_unloaded
+mono_get_exception_argument
+mono_get_exception_argument_null
+mono_get_exception_argument_out_of_range
+mono_get_exception_arithmetic
+mono_get_exception_array_type_mismatch
+mono_get_exception_bad_image_format
+mono_get_exception_bad_image_format2
+mono_get_exception_cannot_unload_appdomain
+mono_get_exception_class
+mono_get_exception_divide_by_zero
+mono_get_exception_execution_engine
+mono_get_exception_field_access
+mono_get_exception_file_not_found
+mono_get_exception_file_not_found2
+mono_get_exception_index_out_of_range
+mono_get_exception_invalid_cast
+mono_get_exception_invalid_operation
+mono_get_exception_io
+mono_get_exception_method_access
+mono_get_exception_missing_field
+mono_get_exception_missing_method
+mono_get_exception_not_implemented
+mono_get_exception_not_supported
+mono_get_exception_null_reference
+mono_get_exception_out_of_memory
+mono_get_exception_overflow
+mono_get_exception_reflection_type_load
+mono_get_exception_runtime_wrapped
+mono_get_exception_security
+mono_get_exception_serialization
+mono_get_exception_stack_overflow
+mono_get_exception_synchronization_lock
+mono_get_exception_thread_abort
+mono_get_exception_thread_interrupted
+mono_get_exception_thread_state
+mono_get_exception_type_initialization
+mono_get_exception_type_load
+mono_get_inflated_method
+mono_get_int16_class
+mono_get_int32_class
+mono_get_int64_class
+mono_get_intptr_class
+mono_get_machine_config
+mono_get_method
+mono_get_method_constrained
+mono_get_method_full
+mono_get_object_class
+mono_get_root_domain
+mono_get_runtime_build_info
+mono_get_sbyte_class
+mono_get_single_class
+mono_get_string_class
+mono_get_thread_class
+mono_get_trampoline_func
+mono_get_uint16_class
+mono_get_uint32_class
+mono_get_uint64_class
+mono_get_uintptr_class
+mono_get_void_class
+mono_guid_to_string
+mono_image_add_to_name_cache
+mono_image_addref
+mono_image_close
+mono_image_ensure_section
+mono_image_ensure_section_idx
+mono_image_fixup_vtable
+mono_image_get_assembly
+mono_image_get_entry_point
+mono_image_get_filename
+mono_image_get_guid
+mono_image_get_name
+mono_image_get_public_key
+mono_image_get_resource
+mono_image_get_strong_name
+mono_image_get_table_info
+mono_image_get_table_rows
+mono_image_has_authenticode_entry
+mono_image_init
+mono_image_init_name_cache
+mono_image_is_dynamic
+mono_image_load_file_for_image
+mono_image_load_module
+mono_image_loaded
+mono_image_loaded_by_guid
+mono_image_loaded_by_guid_full
+mono_image_loaded_full
+mono_image_lookup_resource
+mono_image_open
+mono_image_open_from_data
+mono_image_open_from_data_full
+mono_image_open_from_data_with_name
+mono_image_open_full
+mono_image_rva_map
+mono_image_strerror
+mono_image_strong_name_position
+mono_images_cleanup
+mono_images_init
+mono_init
+mono_init_from_assembly
+mono_init_version
+mono_inst_name
+mono_install_assembly_load_hook
+mono_install_assembly_postload_refonly_search_hook
+mono_install_assembly_postload_search_hook
+mono_install_assembly_preload_hook
+mono_install_assembly_refonly_preload_hook
+mono_install_assembly_refonly_search_hook
+mono_install_assembly_search_hook
+mono_install_runtime_cleanup
+mono_install_threadpool_item_hooks
+mono_install_threadpool_thread_hooks
+mono_install_unhandled_exception_hook
+mono_invoke_unhandled_exception_hook
+mono_is_debugger_attached
+mono_jit_cleanup
+mono_jit_exec
+mono_jit_info_get_code_size
+mono_jit_info_get_code_start
+mono_jit_info_get_method
+mono_jit_info_table_find
+mono_jit_init
+mono_jit_init_version
+mono_jit_parse_options
+mono_jit_set_aot_only
+mono_jit_set_domain
+mono_jit_set_trace_options
+mono_jit_thread_attach
+mono_ldstr
+mono_ldtoken
+mono_lls_init
+mono_load_remote_field
+mono_load_remote_field_new
+mono_local_deadce
+mono_locks_dump
+mono_lookup_icall_symbol
+mono_lookup_internal_call
+mono_lookup_pinvoke_call
+mono_main
+mono_marshal_string_to_utf16
+mono_md5_final
+mono_md5_get_digest
+mono_md5_get_digest_from_file
+mono_md5_init
+mono_md5_update
+mono_mempool_alloc
+mono_mempool_alloc0
+mono_mempool_contains_addr
+mono_mempool_destroy
+mono_mempool_empty
+mono_mempool_get_allocated
+mono_mempool_invalidate
+mono_mempool_new
+mono_mempool_new_size
+mono_mempool_stats
+mono_mempool_strdup
+mono_metadata_blob_heap
+mono_metadata_cleanup
+mono_metadata_compute_size
+mono_metadata_custom_attrs_from_index
+mono_metadata_declsec_from_index
+mono_metadata_decode_blob_size
+mono_metadata_decode_row
+mono_metadata_decode_row_col
+mono_metadata_decode_signed_value
+mono_metadata_decode_table_row
+mono_metadata_decode_table_row_col
+mono_metadata_decode_value
+mono_metadata_encode_value
+mono_metadata_events_from_typedef
+mono_metadata_field_info
+mono_metadata_field_info_with_mempool
+mono_metadata_free_array
+mono_metadata_free_inflated_signature
+mono_metadata_free_marshal_spec
+mono_metadata_free_method_signature
+mono_metadata_free_mh
+mono_metadata_free_type
+mono_metadata_generic_class_is_valuetype
+mono_metadata_get_constant_index
+mono_metadata_get_generic_param_row
+mono_metadata_get_inflated_signature
+mono_metadata_get_marshal_info
+mono_metadata_guid_heap
+mono_metadata_implmap_from_method
+mono_metadata_init
+mono_metadata_interfaces_from_typedef
+mono_metadata_load_generic_param_constraints
+mono_metadata_load_generic_params
+mono_metadata_locate
+mono_metadata_locate_token
+mono_metadata_methods_from_event
+mono_metadata_methods_from_property
+mono_metadata_nested_in_typedef
+mono_metadata_nesting_typedef
+mono_metadata_packing_from_typedef
+mono_metadata_parse_array
+mono_metadata_parse_custom_mod
+mono_metadata_parse_field_type
+mono_metadata_parse_marshal_spec
+mono_metadata_parse_method_signature
+mono_metadata_parse_method_signature_full
+mono_metadata_parse_mh
+mono_metadata_parse_mh_full
+mono_metadata_parse_param
+mono_metadata_parse_signature
+mono_metadata_parse_type
+mono_metadata_parse_type_full
+mono_metadata_parse_typedef_or_ref
+mono_metadata_properties_from_typedef
+mono_metadata_signature_alloc
+mono_metadata_signature_dup
+mono_metadata_signature_equal
+mono_metadata_string_heap
+mono_metadata_token_from_dor
+mono_metadata_translate_token_index
+mono_metadata_type_equal
+mono_metadata_type_hash
+mono_metadata_typedef_from_field
+mono_metadata_typedef_from_method
+mono_metadata_user_string
+mono_method_body_get_object
+mono_method_can_access_field
+mono_method_can_access_method
+mono_method_desc_free
+mono_method_desc_from_method
+mono_method_desc_full_match
+mono_method_desc_match
+mono_method_desc_new
+mono_method_desc_search_in_class
+mono_method_desc_search_in_image
+mono_method_full_name
+mono_method_get_class
+mono_method_get_flags
+mono_method_get_generic_container
+mono_method_get_header
+mono_method_get_index
+mono_method_get_last_managed
+mono_method_get_marshal_info
+mono_method_get_name
+mono_method_get_object
+mono_method_get_param_names
+mono_method_get_param_token
+mono_method_get_signature
+mono_method_get_signature_full
+mono_method_get_token
+mono_method_get_unmanaged_thunk
+mono_method_has_marshal_info
+mono_method_header_get_clauses
+mono_method_header_get_code
+mono_method_header_get_locals
+mono_method_header_get_num_clauses
+mono_method_signature
+mono_method_verify
+mono_mlist_alloc
+mono_mlist_append
+mono_mlist_get_data
+mono_mlist_last
+mono_mlist_length
+mono_mlist_next
+mono_mlist_prepend
+mono_mlist_remove_item
+mono_mlist_set_data
+mono_mlist_set_next
+mono_module_file_get_object
+mono_module_get_object
+mono_monitor_enter
+mono_monitor_exit
+mono_monitor_try_enter
+mono_mprotect
+mono_mutex_init_suspend_safe
+mono_object_castclass_mbyref
+mono_object_castclass_with_cache
+mono_object_clone
+mono_object_describe
+mono_object_describe_fields
+mono_object_get_class
+mono_object_get_domain
+mono_object_get_size
+mono_object_get_virtual_method
+mono_object_hash
+mono_object_is_alive
+mono_object_isinst
+mono_object_isinst_mbyref
+mono_object_isinst_with_cache
+mono_object_new
+mono_object_new_alloc_specific
+mono_object_new_fast
+mono_object_new_from_token
+mono_object_new_specific
+mono_object_to_string
+mono_object_unbox
+mono_op_to_op_imm_noemul
+mono_opcode_name
+mono_opcode_value
+mono_pagesize
+mono_param_get_objects
+mono_parse_default_optimizations
+mono_path_canonicalize
+mono_path_resolve_symlinks
+mono_pe_file_open
+mono_perfcounters_init
+mono_pmip
+mono_poll
+mono_print_method_from_ip
+mono_print_thread_dump
+mono_print_thread_dump_from_ctx
+mono_print_unhandled_exception
+mono_profiler_coverage_get
+mono_profiler_get_events
+mono_profiler_install
+mono_profiler_install_allocation
+mono_profiler_install_appdomain
+mono_profiler_install_assembly
+mono_profiler_install_class
+mono_profiler_install_code_buffer_new
+mono_profiler_install_code_chunk_destroy
+mono_profiler_install_code_chunk_new
+mono_profiler_install_coverage_filter
+mono_profiler_install_enter_leave
+mono_profiler_install_exception
+mono_profiler_install_gc
+mono_profiler_install_gc_moves
+mono_profiler_install_gc_roots
+mono_profiler_install_iomap
+mono_profiler_install_jit_compile
+mono_profiler_install_jit_end
+mono_profiler_install_method_free
+mono_profiler_install_method_invoke
+mono_profiler_install_module
+mono_profiler_install_monitor
+mono_profiler_install_runtime_initialized
+mono_profiler_install_statistical
+mono_profiler_install_statistical_call_chain
+mono_profiler_install_thread
+mono_profiler_install_thread_name
+mono_profiler_install_transition
+mono_profiler_load
+mono_profiler_set_events
+mono_property_get_flags
+mono_property_get_get_method
+mono_property_get_name
+mono_property_get_object
+mono_property_get_parent
+mono_property_get_set_method
+mono_property_get_value
+mono_property_hash_destroy
+mono_property_hash_insert
+mono_property_hash_lookup
+mono_property_hash_new
+mono_property_hash_remove_object
+mono_property_set_value
+mono_ptr_class_get
+mono_raise_exception
+mono_realloc_native_code
+mono_reflection_free_type_info
+mono_reflection_get_custom_attrs
+mono_reflection_get_custom_attrs_blob
+mono_reflection_get_custom_attrs_by_type
+mono_reflection_get_custom_attrs_data
+mono_reflection_get_custom_attrs_info
+mono_reflection_get_token
+mono_reflection_get_type
+mono_reflection_parse_type
+mono_reflection_type_from_name
+mono_reflection_type_get_type
+mono_register_bundled_assemblies
+mono_register_config_for_assembly
+mono_register_machine_config
+mono_register_symfile_for_assembly
+mono_replace_ins
+mono_runtime_class_init
+mono_runtime_cleanup
+mono_runtime_delegate_invoke
+mono_runtime_exec_main
+mono_runtime_exec_managed_code
+mono_runtime_get_main_args
+mono_runtime_init
+mono_runtime_invoke
+mono_runtime_invoke_array
+mono_runtime_is_shutting_down
+mono_runtime_object_init
+mono_runtime_quit
+mono_runtime_resource_check_limit
+mono_runtime_resource_limit
+mono_runtime_resource_set_callback
+mono_runtime_run_main
+mono_runtime_set_shutting_down
+mono_security_core_clr_get_options
+mono_security_core_clr_require_elevated_permissions
+mono_security_core_clr_set_options
+mono_security_enable_core_clr
+mono_security_set_core_clr_platform_callback
+mono_sem_post
+mono_sem_timedwait
+mono_sem_wait
+mono_set_assemblies_path
+mono_set_break_policy
+mono_set_config_dir
+mono_set_defaults
+mono_set_dirs
+mono_set_is_debugger_attached
+mono_set_rootdir
+mono_set_signal_chaining
+mono_sha1_final
+mono_sha1_get_digest
+mono_sha1_get_digest_from_file
+mono_sha1_init
+mono_sha1_update
+mono_shared_area
+mono_shared_area_for_pid
+mono_shared_area_instances
+mono_shared_area_remove
+mono_shared_area_unload
+mono_signature_explicit_this
+mono_signature_get_call_conv
+mono_signature_get_desc
+mono_signature_get_param_count
+mono_signature_get_params
+mono_signature_get_return_type
+mono_signature_hash
+mono_signature_is_instance
+mono_signature_param_is_out
+mono_signature_vararg_start
+mono_signbit_double
+mono_signbit_float
+mono_stack_walk
+mono_stack_walk_no_il
+mono_store_remote_field
+mono_store_remote_field_new
+mono_string_chars
+mono_string_equal
+mono_string_from_bstr
+mono_string_from_utf16
+mono_string_hash
+mono_string_intern
+mono_string_is_interned
+mono_string_length
+mono_string_new
+mono_string_new_len
+mono_string_new_size
+mono_string_new_utf16
+mono_string_new_wrapper
+mono_string_to_utf16
+mono_string_to_utf8
+mono_string_to_utf8_checked
+mono_stringify_assembly_name
+mono_table_info_get_rows
+mono_thread_attach
+mono_thread_cleanup
+mono_thread_create
+mono_thread_current
+mono_thread_detach
+mono_thread_exit
+mono_thread_get_main
+mono_thread_get_undeniable_exception
+mono_thread_init
+mono_thread_is_foreign
+mono_thread_manage
+mono_thread_new_init
+mono_thread_set_main
+mono_thread_set_manage_callback
+mono_thread_stop
+mono_threads_get_default_stacksize
+mono_threads_request_thread_dump
+mono_threads_set_default_stacksize
+mono_tls_key_get_offset
+mono_tls_key_set_offset
+mono_trace_set_level_string
+mono_trace_set_mask_string
+mono_type_create_from_typespec
+mono_type_full_name
+mono_type_generic_inst_is_valuetype
+mono_type_get_array_type
+mono_type_get_class
+mono_type_get_desc
+mono_type_get_modifiers
+mono_type_get_name
+mono_type_get_object
+mono_type_get_ptr_type
+mono_type_get_signature
+mono_type_get_type
+mono_type_get_underlying_type
+mono_type_is_byref
+mono_type_is_pointer
+mono_type_is_reference
+mono_type_is_struct
+mono_type_is_valid_enum_basetype
+mono_type_is_void
+mono_type_size
+mono_type_stack_size
+mono_type_to_unmanaged
+mono_unhandled_exception
+mono_unicode_from_external
+mono_unicode_to_external
+mono_upgrade_remote_class_wrapper
+mono_utf8_from_external
+mono_utf8_validate_and_len
+mono_utf8_validate_and_len_with_bounds
+mono_valloc
+mono_valloc_aligned
+mono_value_box
+mono_value_copy
+mono_value_copy_array
+mono_value_describe_fields
+mono_verify_corlib
+mono_vfree
+mono_vtable_get_static_field_data
+mono_win32_compat_CopyMemory
+mono_win32_compat_FillMemory
+mono_win32_compat_MoveMemory
+mono_win32_compat_ZeroMemory
+mono_xdebug_flush
index 4e0e44e59153b693460c6fae0e119016dc8f7e1b..872748e7f476b3e8b1fcd378b222d1a95d5828aa 100644 (file)
@@ -19,6 +19,7 @@
     <TargetFrameworkVersion>v@FX_VERSION</TargetFrameworkVersion>\r
     <FileAlignment>512</FileAlignment>\r
   </PropertyGroup>\r
+  @SIGNATURE@\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
index 5fa1a75ec78e2938b5a0ae5f385845e4f02d7cfe..b3e6b0d6715ef51ec68663f1ddd3e3815b064f24 100644 (file)
@@ -861,7 +861,19 @@ class MsbuildGenerator {
                // Replace the template values
                //
 
+               string strongNameSection = "";
+               if (StrongNameKeyFile != null){
+                       strongNameSection = String.Format (
+                               "  <PropertyGroup>\n" +
+                               "    <SignAssembly>true</SignAssembly>\n" +
+                               "{1}" +
+                               "  </PropertyGroup>\n" + 
+                               "  <PropertyGroup>\n" + 
+                               "    <AssemblyOriginatorKeyFile>{0}</AssemblyOriginatorKeyFile>\n" +
+                               "  </PropertyGroup>", StrongNameKeyFile, StrongNameDelaySign ? "    <DelaySign>true</DelaySign>\n" : "");
+               }
                Csproj.output = template.
+                       Replace ("@SIGNATURE@", strongNameSection).
                        Replace ("@PROJECTGUID@", Csproj.projectGuid).
                        Replace ("@DEFINES@", defines.ToString ()).
                        Replace ("@DISABLEDWARNINGS@", string.Join (",", (from i in ignore_warning select i.ToString ()).ToArray ())).
index d2cf5e7bcdbb95922b01c51f2200283350af380d..8d455889d7ca4c30ea10c8a6e7c2471afcec7179 100644 (file)
@@ -100,6 +100,15 @@ char *helper_Mono_Posix_readdir(void *dir) {
 }
 
 #if HAVE_GETPWNAM_R
+int helper_Mono_Posix_getpwnamuid (int mode, char *in_name, int in_uid,
+       char **account,
+       char **password,
+       int *uid,
+       int *gid,
+       char **name,
+       char **home,
+       char **shell);
+
 int helper_Mono_Posix_getpwnamuid (int mode, char *in_name, int in_uid,
        char **account,
        char **password,
index 5acf49f58615f5de5d286993192d02c8a1c87067..ef81ecc032c93b179188a7639571b038142c627c 100644 (file)
@@ -187,12 +187,13 @@ local void init_linkedlist(linkedlist_data *ll)
     ll->first_block = ll->last_block = NULL;
 }
 
+/*
 local void free_linkedlist(linkedlist_data *ll)
 {
     free_datablock(ll->first_block);
     ll->first_block = ll->last_block = NULL;
 }
-
+*/
 
 local int add_data_in_datablock(linkedlist_data *ll, const void *buf, uLong len)
 {
index 78c900e9d9b2afeb460a3d24d7d0614d7bf7a027..e5b54da47b909f222d3664480c522d34d40ca1f8 100644 (file)
@@ -26,7 +26,7 @@ Mono_Posix_Syscall_L_ctermid (void)
 gint32
 Mono_Posix_Syscall_L_cuserid (void)
 {
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined (__OpenBSD__)
        return -1;
 #else
        return L_cuserid;
index 49ed549c5d2f546ffeffd31a2e3b8289fa32af1a..51b49697152b36ac93cedb5ba9ea741231deedd7 100644 (file)
@@ -158,6 +158,9 @@ FindWindowExW (gpointer hwndParent, gpointer hwndChildAfter, const char *classw,
        return func (hwndParent, hwndChildAfter, classw, window);
 }
 
+int
+SetWindowPos (gpointer hwnd, gpointer hwndInsertAfter, int x, int y, int cx, int cy, unsigned int flags);
+
 int
 SetWindowPos (gpointer hwnd, gpointer hwndInsertAfter, int x, int y, int cx, int cy, unsigned int flags)
 {
@@ -165,6 +168,9 @@ SetWindowPos (gpointer hwnd, gpointer hwndInsertAfter, int x, int y, int cx, int
        return 1;
 }
 
+int
+SendMessageA (gpointer hwnd, unsigned int msg, gpointer wparam, gpointer lparam);
+
 int
 SendMessageA (gpointer hwnd, unsigned int msg, gpointer wparam, gpointer lparam)
 {
@@ -172,6 +178,9 @@ SendMessageA (gpointer hwnd, unsigned int msg, gpointer wparam, gpointer lparam)
        return 0;
 }
 
+int
+GetWindowLongA (gpointer hwnd, int a);
+
 int
 GetWindowLongA (gpointer hwnd, int a)
 {
index 1759ec0fcb8e23f2435d8cb45d0e846a53b9edcb..1309f2a975342252de9335d4245c1b955bf35441 100644 (file)
@@ -70,6 +70,10 @@ Mono_Posix_Syscall_settimeofday (
 }
 
 /* Remove this at some point in the future */
+gint32
+Mono_Posix_Syscall_utimes_bad (const char *filename,
+       struct Mono_Posix_Timeval *tv);
+
 gint32
 Mono_Posix_Syscall_utimes_bad (const char *filename,
        struct Mono_Posix_Timeval *tv)
index 6fed2ad2059983d4960d3dcd2b9ce0e105145f77..2d8d7cbe8006c65ac8947c4156123d3e9f330689 100644 (file)
@@ -47,6 +47,9 @@ Mono_Posix_Syscall_syslog (int priority, const char* message)
 #endif
 
 /* vararg version of syslog(3). */
+gint32
+Mono_Posix_Syscall_syslog2 (int priority, const char *format, ...);
+
 gint32
 Mono_Posix_Syscall_syslog2 (int priority, const char *format, ...)
 {
index b71a9cca1f0a153b54f5b7007b49927fcb98692e..5124af71fc948720d20fb6be1a350e0974615bc2 100644 (file)
@@ -20,7 +20,7 @@
                : lstr_at(p, n)                                             \
 )
 
-char* MPH_INTERNAL
+char*
 _mph_copy_structure_strings (
        void *to,         const mph_string_offset_t *to_offsets, 
        const void *from, const mph_string_offset_t *from_offsets, 
index 47adde38dbf44a408e189afefded1c3f91e38d66..d0911fc07647cd6fb03dc61c10f5c8b783ad0998 100644 (file)
@@ -45,7 +45,7 @@ gint WriteZStream (ZStream *stream, guchar *buffer, gint length);
 static gint flush_internal (ZStream *stream, gboolean is_final);
 
 static void *
-z_alloc (void *opaque, gsize nitems, gsize item_size)
+z_alloc (void *opaque, unsigned int nitems, unsigned int item_size)
 {
        return g_malloc0 (nitems * item_size);
 }
index 1084339a44f2172c1cb4b8758d216c541bf72168..427e21f35a88bd246c81c8002f86f50d5d079253 100644 (file)
@@ -1,5 +1,5 @@
 /* config.h.  Generated from config.h.in by configure.  */
-/* config.h.in.  Generated from configure.in by autoheader.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
 
 /* The architecture this is running on */
 #if defined(_M_IA64)