+
@@ -98,14 +98,14 @@
- Configuration=netstandard_Debug
- Configuration=netstandard_Release
+ Configuration=netstandard_Debug
+ Configuration=netstandard_Release
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}
Mono.Cecil
- Configuration=netstandard_Debug
- Configuration=netstandard_Release
+ Configuration=netstandard_Debug
+ Configuration=netstandard_Release
{63E6915C-7EA4-4D76-AB28-0D7191EEA626}
Mono.Cecil.Pdb
diff --git a/external/linker/linker/Mono.Linker/Annotations.cs b/external/linker/linker/Mono.Linker/Annotations.cs
index bb80fc579d..949128f0bb 100644
--- a/external/linker/linker/Mono.Linker/Annotations.cs
+++ b/external/linker/linker/Mono.Linker/Annotations.cs
@@ -302,10 +302,13 @@ namespace Mono.Linker {
return;
KeyValuePair pair = new KeyValuePair (dependency_stack.Count > 0 ? dependency_stack.Peek () : null, o);
- writer.WriteStartElement ("edge");
- writer.WriteAttributeString ("b", TokenString (pair.Key));
- writer.WriteAttributeString ("e", TokenString (pair.Value));
- writer.WriteEndElement ();
+ if (pair.Key != pair.Value)
+ {
+ writer.WriteStartElement ("edge");
+ writer.WriteAttributeString ("b", TokenString (pair.Key));
+ writer.WriteAttributeString ("e", TokenString (pair.Value));
+ writer.WriteEndElement ();
+ }
}
public void Push (object o)
diff --git a/external/linker/linker/Mono.Linker/AssemblyResolver.cs b/external/linker/linker/Mono.Linker/AssemblyResolver.cs
index c8351f76fa..b10bb53746 100644
--- a/external/linker/linker/Mono.Linker/AssemblyResolver.cs
+++ b/external/linker/linker/Mono.Linker/AssemblyResolver.cs
@@ -33,7 +33,7 @@ using Mono.Cecil;
namespace Mono.Linker {
-#if NET_CORE
+#if FEATURE_ILLINK
public class AssemblyResolver : DirectoryAssemblyResolver {
#else
public class AssemblyResolver : BaseAssemblyResolver {
diff --git a/external/linker/linker/Mono.Linker/DirectoryAssemblyResolver.cs b/external/linker/linker/Mono.Linker/DirectoryAssemblyResolver.cs
index 8ff0b50c2d..416dab71b5 100644
--- a/external/linker/linker/Mono.Linker/DirectoryAssemblyResolver.cs
+++ b/external/linker/linker/Mono.Linker/DirectoryAssemblyResolver.cs
@@ -5,7 +5,7 @@ using System.IO;
using Mono.Collections.Generic;
using Mono.Cecil;
-#if NET_CORE
+#if FEATURE_ILLINK
namespace Mono.Linker {
public abstract class DirectoryAssemblyResolver : IAssemblyResolver {
diff --git a/external/linker/linker/Mono.Linker/Driver.cs b/external/linker/linker/Mono.Linker/Driver.cs
index e71436abba..16616b437e 100644
--- a/external/linker/linker/Mono.Linker/Driver.cs
+++ b/external/linker/linker/Mono.Linker/Driver.cs
@@ -37,7 +37,7 @@ namespace Mono.Linker {
public class Driver {
-#if NET_CORE
+#if FEATURE_ILLINK
static readonly string _linker = "IL Linker";
#else
static readonly string _linker = "Mono CIL Linker";
@@ -284,7 +284,7 @@ namespace Mono.Linker {
Console.WriteLine (_linker);
if (msg != null)
Console.WriteLine ("Error: " + msg);
-#if NET_CORE
+#if FEATURE_ILLINK
Console.WriteLine ("illink [options] -x|-a|-i file");
#else
Console.WriteLine ("monolinker [options] -x|-a|-i file");
diff --git a/external/linker/linker/Mono.Linker/LinkContext.cs b/external/linker/linker/Mono.Linker/LinkContext.cs
index 681608a3a6..e61187eb5e 100644
--- a/external/linker/linker/Mono.Linker/LinkContext.cs
+++ b/external/linker/linker/Mono.Linker/LinkContext.cs
@@ -179,8 +179,8 @@ namespace Mono.Linker {
return assembly;
}
- catch {
- throw new AssemblyResolutionException (reference);
+ catch (Exception e) {
+ throw new AssemblyResolutionException (reference, e);
}
}
@@ -272,7 +272,7 @@ namespace Mono.Linker {
}
}
- public AssemblyDefinition [] GetAssemblies ()
+ public virtual AssemblyDefinition [] GetAssemblies ()
{
var cache = _resolver.AssemblyCache;
AssemblyDefinition [] asms = new AssemblyDefinition [cache.Count];
diff --git a/external/linker/linker/Tests/Extensions/NiceIO.cs b/external/linker/linker/Tests/Extensions/NiceIO.cs
index 2bded17f17..69b6f30f4f 100644
--- a/external/linker/linker/Tests/Extensions/NiceIO.cs
+++ b/external/linker/linker/Tests/Extensions/NiceIO.cs
@@ -1,4 +1,30 @@
-using System;
+// The MIT License(MIT)
+// =====================
+//
+// Copyright © `2015-2017` `Lucas Meijer`
+//
+// 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.IO;
using System.Linq;
@@ -283,6 +309,11 @@ namespace Mono.Linker.Tests.Extensions
return sb.ToString();
}
+ public static implicit operator string(NPath path)
+ {
+ return path.ToString();
+ }
+
static char Slash(SlashMode slashMode)
{
switch (slashMode)
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/BaseInAssemblyAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/BaseInAssemblyAttribute.cs
new file mode 100644
index 0000000000..df1a80a13d
--- /dev/null
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/BaseInAssemblyAttribute.cs
@@ -0,0 +1,5 @@
+namespace Mono.Linker.Tests.Cases.Expectations.Assertions
+{
+ public abstract class BaseInAssemblyAttribute : BaseExpectedLinkedBehaviorAttribute {
+ }
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptBackingFieldAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptBackingFieldAttribute.cs
index a4160490a5..b21ce0628d 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptBackingFieldAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptBackingFieldAttribute.cs
@@ -1,8 +1,7 @@
using System;
-namespace Mono.Linker.Tests.Cases.Expectations.Assertions
-{
- [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
+namespace Mono.Linker.Tests.Cases.Expectations.Assertions {
+ [AttributeUsage(AttributeTargets.Property | AttributeTargets.Event, AllowMultiple = false, Inherited = false)]
public sealed class KeptBackingFieldAttribute : KeptAttribute {
}
}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptInterfaceAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptInterfaceAttribute.cs
index b6af7dc0f4..9314b47129 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptInterfaceAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptInterfaceAttribute.cs
@@ -2,7 +2,7 @@
namespace Mono.Linker.Tests.Cases.Expectations.Assertions
{
- [AttributeUsage (AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
+ [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = true, Inherited = false)]
public class KeptInterfaceAttribute : KeptAttribute
{
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptMemberAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptMemberAttribute.cs
index e7b77ef8ba..34cfc5503c 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptMemberAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptMemberAttribute.cs
@@ -1,7 +1,7 @@
using System;
namespace Mono.Linker.Tests.Cases.Expectations.Assertions {
- [AttributeUsage (AttributeTargets.Class | AttributeTargets.Delegate, AllowMultiple = true, Inherited = false)]
+ [AttributeUsage (AttributeTargets.Class | AttributeTargets.Delegate | AttributeTargets.Struct, AllowMultiple = true, Inherited = false)]
public sealed class KeptMemberAttribute : KeptAttribute {
public KeptMemberAttribute (string name)
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptMemberInAssemblyAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptMemberInAssemblyAttribute.cs
index 3812acb67e..fed2061ea1 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptMemberInAssemblyAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptMemberInAssemblyAttribute.cs
@@ -3,7 +3,7 @@
namespace Mono.Linker.Tests.Cases.Expectations.Assertions {
[AttributeUsage (AttributeTargets.Class | AttributeTargets.Delegate, AllowMultiple = true, Inherited = false)]
- public class KeptMemberInAssemblyAttribute : BaseExpectedLinkedBehaviorAttribute {
+ public class KeptMemberInAssemblyAttribute : BaseInAssemblyAttribute {
public KeptMemberInAssemblyAttribute (string assemblyFileName, Type type, params string [] memberNames)
{
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptTypeInAssemblyAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptTypeInAssemblyAttribute.cs
index 64b2f9ec91..b5aee13926 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptTypeInAssemblyAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/KeptTypeInAssemblyAttribute.cs
@@ -3,8 +3,7 @@
namespace Mono.Linker.Tests.Cases.Expectations.Assertions
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Delegate, AllowMultiple = true, Inherited = false)]
- public class KeptTypeInAssemblyAttribute : BaseExpectedLinkedBehaviorAttribute
- {
+ public class KeptTypeInAssemblyAttribute : BaseInAssemblyAttribute {
public KeptTypeInAssemblyAttribute (string assemblyFileName, Type type)
{
if (type == null)
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedForwarderAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedForwarderAttribute.cs
new file mode 100644
index 0000000000..645a01bdc9
--- /dev/null
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedForwarderAttribute.cs
@@ -0,0 +1,15 @@
+using System;
+namespace Mono.Linker.Tests.Cases.Expectations.Assertions
+{
+ [AttributeUsage (AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
+ public class RemovedForwarderAttribute : BaseInAssemblyAttribute
+ {
+ public RemovedForwarderAttribute (string assemblyFileName, string typeName)
+ {
+ if (string.IsNullOrEmpty (assemblyFileName))
+ throw new ArgumentException ("Value cannot be null or empty.", nameof (assemblyFileName));
+ if (string.IsNullOrEmpty (typeName))
+ throw new ArgumentException ("Value cannot be null or empty.", nameof (typeName));
+ }
+ }
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedMemberInAssemblyAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedMemberInAssemblyAttribute.cs
index 078c7ac76e..36bc435bfb 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedMemberInAssemblyAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedMemberInAssemblyAttribute.cs
@@ -2,7 +2,7 @@
namespace Mono.Linker.Tests.Cases.Expectations.Assertions {
[AttributeUsage (AttributeTargets.Class | AttributeTargets.Delegate, AllowMultiple = true, Inherited = false)]
- public class RemovedMemberInAssemblyAttribute : BaseExpectedLinkedBehaviorAttribute {
+ public class RemovedMemberInAssemblyAttribute : BaseInAssemblyAttribute {
public RemovedMemberInAssemblyAttribute (string assemblyFileName, Type type, params string [] memberNames)
{
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedTypeInAssemblyAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedTypeInAssemblyAttribute.cs
index 506e2cdeae..253f5bed20 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedTypeInAssemblyAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/RemovedTypeInAssemblyAttribute.cs
@@ -3,7 +3,7 @@
namespace Mono.Linker.Tests.Cases.Expectations.Assertions
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Delegate, AllowMultiple = true, Inherited = false)]
- public class RemovedTypeInAssemblyAttribute : BaseExpectedLinkedBehaviorAttribute {
+ public class RemovedTypeInAssemblyAttribute : BaseInAssemblyAttribute {
public RemovedTypeInAssemblyAttribute (string assemblyFileName, Type type)
{
if (type == null)
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/SkipPeVerifyAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/SkipPeVerifyAttribute.cs
new file mode 100644
index 0000000000..eaccabd254
--- /dev/null
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Assertions/SkipPeVerifyAttribute.cs
@@ -0,0 +1,25 @@
+using System;
+
+namespace Mono.Linker.Tests.Cases.Expectations.Assertions {
+
+ public enum SkipPeVerifyForToolchian
+ {
+ Pedump
+ }
+
+ [AttributeUsage (AttributeTargets.Class, AllowMultiple = true)]
+ public class SkipPeVerifyAttribute : BaseExpectedLinkedBehaviorAttribute
+ {
+ public SkipPeVerifyAttribute ()
+ {
+ }
+
+ public SkipPeVerifyAttribute (SkipPeVerifyForToolchian toolchain)
+ {
+ }
+
+ public SkipPeVerifyAttribute (string assemblyName)
+ {
+ }
+ }
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/DefineAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/DefineAttribute.cs
new file mode 100644
index 0000000000..14e95fd4d8
--- /dev/null
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/DefineAttribute.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace Mono.Linker.Tests.Cases.Expectations.Metadata {
+ [AttributeUsage (AttributeTargets.Class, AllowMultiple = true)]
+ public class DefineAttribute : BaseMetadataAttribute {
+ public DefineAttribute (string name)
+ {
+ if (string.IsNullOrEmpty (name))
+ throw new ArgumentException ("Value cannot be null or empty.", nameof (name));
+ }
+ }
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/IncludeBlacklistStepAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/IncludeBlacklistStepAttribute.cs
index 09512704b3..4144abcf65 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/IncludeBlacklistStepAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/IncludeBlacklistStepAttribute.cs
@@ -1,8 +1,8 @@
namespace Mono.Linker.Tests.Cases.Expectations.Metadata {
public sealed class IncludeBlacklistStepAttribute : BaseMetadataAttribute {
- public readonly string Value;
+ public readonly bool Value;
- public IncludeBlacklistStepAttribute (string value)
+ public IncludeBlacklistStepAttribute (bool value)
{
Value = value;
}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/CoreLinkAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/KeepTypeForwarderOnlyAssembliesAttribute.cs
similarity index 62%
rename from external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/CoreLinkAttribute.cs
rename to external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/KeepTypeForwarderOnlyAssembliesAttribute.cs
index e287d5a565..ef00ca5f5e 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/CoreLinkAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/KeepTypeForwarderOnlyAssembliesAttribute.cs
@@ -2,12 +2,11 @@
namespace Mono.Linker.Tests.Cases.Expectations.Metadata {
[AttributeUsage (AttributeTargets.Class)]
- public class CoreLinkAttribute : BaseMetadataAttribute {
-
- public CoreLinkAttribute (string value)
+ public sealed class KeepTypeForwarderOnlyAssembliesAttribute : BaseMetadataAttribute {
+ public KeepTypeForwarderOnlyAssembliesAttribute (string value)
{
if (string.IsNullOrEmpty (value))
throw new ArgumentException ("Value cannot be null or empty.", nameof (value));
}
}
-}
\ No newline at end of file
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/NotATestCaseAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/NotATestCaseAttribute.cs
index 11cd069c32..1fabca3319 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/NotATestCaseAttribute.cs
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/NotATestCaseAttribute.cs
@@ -1,7 +1,7 @@
using System;
namespace Mono.Linker.Tests.Cases.Expectations.Metadata {
- [AttributeUsage (AttributeTargets.Class)]
+ [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct)]
public class NotATestCaseAttribute : BaseMetadataAttribute {
}
}
\ No newline at end of file
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupCompileAfterAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupCompileAfterAttribute.cs
new file mode 100644
index 0000000000..fa580a2f8d
--- /dev/null
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupCompileAfterAttribute.cs
@@ -0,0 +1,18 @@
+using System;
+
+namespace Mono.Linker.Tests.Cases.Expectations.Metadata {
+ ///
+ /// Use to compile an assembly after compiling the main test case executabe
+ ///
+ [AttributeUsage (AttributeTargets.Class, AllowMultiple = true)]
+ public class SetupCompileAfterAttribute : BaseMetadataAttribute {
+ public SetupCompileAfterAttribute (string outputName, string[] sourceFiles, string[] references = null, string[] defines = null)
+ {
+ if (sourceFiles == null)
+ throw new ArgumentNullException (nameof (sourceFiles));
+
+ if (string.IsNullOrEmpty (outputName))
+ throw new ArgumentException ("Value cannot be null or empty.", nameof (outputName));
+ }
+ }
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupCompileBeforeAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupCompileBeforeAttribute.cs
new file mode 100644
index 0000000000..d9a3bd6589
--- /dev/null
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupCompileBeforeAttribute.cs
@@ -0,0 +1,18 @@
+using System;
+
+namespace Mono.Linker.Tests.Cases.Expectations.Metadata {
+ ///
+ /// Use to compile an assembly before compiling the main test case executabe
+ ///
+ [AttributeUsage (AttributeTargets.Class, AllowMultiple = true)]
+ public class SetupCompileBeforeAttribute : BaseMetadataAttribute {
+ public SetupCompileBeforeAttribute (string outputName, string[] sourceFiles, string[] references = null, string[] defines = null, bool addAsReference = true)
+ {
+ if (sourceFiles == null)
+ throw new ArgumentNullException (nameof (sourceFiles));
+
+ if (string.IsNullOrEmpty (outputName))
+ throw new ArgumentException ("Value cannot be null or empty.", nameof (outputName));
+ }
+ }
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupLinkerActionAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupLinkerActionAttribute.cs
new file mode 100644
index 0000000000..d0d68193e8
--- /dev/null
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupLinkerActionAttribute.cs
@@ -0,0 +1,18 @@
+using System;
+
+namespace Mono.Linker.Tests.Cases.Expectations.Metadata
+{
+ [AttributeUsage (AttributeTargets.Class, AllowMultiple = true)]
+ public class SetupLinkerActionAttribute : BaseMetadataAttribute
+ {
+ public SetupLinkerActionAttribute (string action, string assembly)
+ {
+ switch (action) {
+ case "link": case "copy": case "skip":
+ break;
+ default:
+ throw new ArgumentOutOfRangeException (nameof (action));
+ }
+ }
+ }
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupLinkerCoreActionAttribute.cs b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupLinkerCoreActionAttribute.cs
new file mode 100644
index 0000000000..c60bc59b20
--- /dev/null
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Metadata/SetupLinkerCoreActionAttribute.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace Mono.Linker.Tests.Cases.Expectations.Metadata
+{
+ [AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
+ public class SetupLinkerCoreActionAttribute : BaseMetadataAttribute
+ {
+ public SetupLinkerCoreActionAttribute (string action)
+ {
+ switch (action) {
+ case "link":
+ case "copy":
+ case "skip":
+ break;
+ default:
+ throw new ArgumentOutOfRangeException (nameof (action));
+ }
+ }
+ }
+}
diff --git a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj
index 2ae41786a8..5c063734c8 100644
--- a/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj
+++ b/external/linker/linker/Tests/Mono.Linker.Tests.Cases.Expectations/Mono.Linker.Tests.Cases.Expectations.csproj
@@ -37,6 +37,7 @@
+
@@ -48,16 +49,23 @@
+
-
+
+
+
+
+
+
+
+ $(BaseNuGetRuntimeIdentifier)
+
win10
win
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/build/Microsoft.Net.Compilers.props b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/build/Microsoft.Net.Compilers.props
new file mode 100644
index 0000000000..757d21a4eb
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/build/Microsoft.Net.Compilers.props
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ $(MSBuildThisFileDirectory)..\tools\Microsoft.CSharp.Core.targets
+ $(MSBuildThisFileDirectory)..\tools\Microsoft.VisualBasic.Core.targets
+
+
+
+
+ $(MSBuildThisFileDirectory)..\tools
+ csc.exe
+ $(MSBuildThisFileDirectory)..\tools
+ vbc.exe
+
+
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.Build.Tasks.CodeAnalysis.dll.REMOVED.git-id b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.Build.Tasks.CodeAnalysis.dll.REMOVED.git-id
new file mode 100644
index 0000000000..16405b7b6d
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.Build.Tasks.CodeAnalysis.dll.REMOVED.git-id
@@ -0,0 +1 @@
+220bd22af6de84fc52d5db71f03c990520d823c4
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CSharp.Core.targets b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CSharp.Core.targets
new file mode 100644
index 0000000000..f103eaaeda
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CSharp.Core.targets
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(NoWarn);1701;1702
+
+
+
+
+ $(NoWarn);2008
+
+
+
+
+
+
+
+
+
+
+ $(AppConfig)
+
+
+ $(IntermediateOutputPath)$(TargetName).compile.pdb
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+ <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
+
+
+
+
+
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.CSharp.Scripting.dll b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.CSharp.Scripting.dll
new file mode 100644
index 0000000000..26c8511134
Binary files /dev/null and b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.CSharp.Scripting.dll differ
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.CSharp.dll.REMOVED.git-id b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.CSharp.dll.REMOVED.git-id
new file mode 100644
index 0000000000..a4b3a4b0f7
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.CSharp.dll.REMOVED.git-id
@@ -0,0 +1 @@
+f95ba4f8326c450bf58668c9c9c20d3b34a310a0
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.Scripting.dll.REMOVED.git-id b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.Scripting.dll.REMOVED.git-id
new file mode 100644
index 0000000000..32c1ac233c
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.Scripting.dll.REMOVED.git-id
@@ -0,0 +1 @@
+f6a40109489fdfdca476ff07294ff816e80defad
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.VisualBasic.dll.REMOVED.git-id b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.VisualBasic.dll.REMOVED.git-id
new file mode 100644
index 0000000000..b65c2943fa
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.VisualBasic.dll.REMOVED.git-id
@@ -0,0 +1 @@
+bc12eda56350e1d2bd2e13340707556a29342980
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.dll.REMOVED.git-id b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.dll.REMOVED.git-id
new file mode 100644
index 0000000000..3b14481dd3
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.CodeAnalysis.dll.REMOVED.git-id
@@ -0,0 +1 @@
+860ad63f05df210b2711ea4397ffc2cb716da0e6
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.VisualBasic.Core.targets b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.VisualBasic.Core.targets
new file mode 100644
index 0000000000..c72c6c1a69
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/Microsoft.VisualBasic.Core.targets
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ <_NoWarnings Condition="'$(WarningLevel)' == '0'">true
+ <_NoWarnings Condition="'$(WarningLevel)' == '1'">false
+
+
+
+
+ $(IntermediateOutputPath)$(TargetName).compile.pdb
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+ <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
+
+
+
+
+
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/System.Collections.Immutable.dll.REMOVED.git-id b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/System.Collections.Immutable.dll.REMOVED.git-id
new file mode 100644
index 0000000000..f621878df3
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/System.Collections.Immutable.dll.REMOVED.git-id
@@ -0,0 +1 @@
+ce6fc0e8d0d43a3e824b4a844fe5eae4667dd428
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/System.Reflection.Metadata.dll.REMOVED.git-id b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/System.Reflection.Metadata.dll.REMOVED.git-id
new file mode 100644
index 0000000000..469c933c5d
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/System.Reflection.Metadata.dll.REMOVED.git-id
@@ -0,0 +1 @@
+ee68731c052c101cd85d9f4ec976628cf1e224b4
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/VBCSCompiler.exe b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/VBCSCompiler.exe
new file mode 100644
index 0000000000..e225aae63b
Binary files /dev/null and b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/VBCSCompiler.exe differ
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/VBCSCompiler.exe.config b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/VBCSCompiler.exe.config
new file mode 100644
index 0000000000..b722a3a2a9
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/VBCSCompiler.exe.config
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.exe b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.exe
new file mode 100644
index 0000000000..5278855e69
Binary files /dev/null and b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.exe differ
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.exe.config b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.exe.config
new file mode 100644
index 0000000000..4fa345fb5c
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.exe.config
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.rsp b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.rsp
new file mode 100644
index 0000000000..be7661d074
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.rsp
@@ -0,0 +1,46 @@
+# Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+# This file contains command-line options that the C#
+# command line compiler (CSC) will process as part
+# of every compilation, unless the "/noconfig" option
+# is specified.
+
+# Reference the common Framework libraries
+/r:Accessibility.dll
+/r:Microsoft.CSharp.dll
+/r:System.Configuration.dll
+/r:System.Configuration.Install.dll
+/r:System.Core.dll
+/r:System.Data.dll
+/r:System.Data.DataSetExtensions.dll
+/r:System.Data.Linq.dll
+/r:System.Data.OracleClient.dll
+/r:System.Deployment.dll
+/r:System.Design.dll
+/r:System.DirectoryServices.dll
+/r:System.dll
+/r:System.Drawing.Design.dll
+/r:System.Drawing.dll
+/r:System.EnterpriseServices.dll
+/r:System.Management.dll
+/r:System.Messaging.dll
+/r:System.Runtime.Remoting.dll
+/r:System.Runtime.Serialization.dll
+/r:System.Runtime.Serialization.Formatters.Soap.dll
+/r:System.Security.dll
+/r:System.ServiceModel.dll
+/r:System.ServiceModel.Web.dll
+/r:System.ServiceProcess.dll
+/r:System.Transactions.dll
+/r:System.Web.dll
+/r:System.Web.Extensions.Design.dll
+/r:System.Web.Extensions.dll
+/r:System.Web.Mobile.dll
+/r:System.Web.RegularExpressions.dll
+/r:System.Web.Services.dll
+/r:System.Windows.Forms.dll
+/r:System.Workflow.Activities.dll
+/r:System.Workflow.ComponentModel.dll
+/r:System.Workflow.Runtime.dll
+/r:System.Xml.dll
+/r:System.Xml.Linq.dll
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.exe b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.exe
new file mode 100644
index 0000000000..93b234ebe5
Binary files /dev/null and b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.exe differ
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.exe.config b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.exe.config
new file mode 100644
index 0000000000..414e80d3d5
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.exe.config
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.rsp b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.rsp
new file mode 100644
index 0000000000..6089f39f42
--- /dev/null
+++ b/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csi.rsp
@@ -0,0 +1,14 @@
+/r:System
+/r:System.Core
+/r:Microsoft.CSharp
+/r:System.ValueTuple.dll
+/u:System
+/u:System.IO
+/u:System.Collections.Generic
+/u:System.Console
+/u:System.Diagnostics
+/u:System.Dynamic
+/u:System.Linq
+/u:System.Linq.Expressions
+/u:System.Text
+/u:System.Threading.Tasks
\ No newline at end of file
diff --git a/mcs/build/common/Consts.cs b/mcs/build/common/Consts.cs
index 6d271afd8d..3672b2634e 100644
--- a/mcs/build/common/Consts.cs
+++ b/mcs/build/common/Consts.cs
@@ -34,7 +34,7 @@ static class Consts
// Use these assembly version constants to make code more maintainable.
//
- public const string MonoVersion = "5.4.0.167";
+ public const string MonoVersion = "5.4.0.199";
public const string MonoCompany = "Mono development team";
public const string MonoProduct = "Mono Common Language Infrastructure";
public const string MonoCopyright = "(c) Various Mono authors";
diff --git a/mcs/class/System/Mono.AppleTls/AppleCertificateHelper.cs b/mcs/class/System/Mono.AppleTls/AppleCertificateHelper.cs
index d3b29fa272..710433ef07 100644
--- a/mcs/class/System/Mono.AppleTls/AppleCertificateHelper.cs
+++ b/mcs/class/System/Mono.AppleTls/AppleCertificateHelper.cs
@@ -133,28 +133,28 @@ namespace Mono.AppleTls
targetHost = targetHost.Substring (0, pos);
}
- var policy = SecPolicy.CreateSslPolicy (!serverMode, targetHost);
- var trust = new SecTrust (certificates, policy);
+ using (var policy = SecPolicy.CreateSslPolicy (!serverMode, targetHost))
+ using (var trust = new SecTrust (certificates, policy)) {
+ if (validator.Settings.TrustAnchors != null) {
+ var status = trust.SetAnchorCertificates (validator.Settings.TrustAnchors);
+ if (status != SecStatusCode.Success)
+ throw new InvalidOperationException (status.ToString ());
+ trust.SetAnchorCertificatesOnly (false);
+ }
- if (validator.Settings.TrustAnchors != null) {
- var status = trust.SetAnchorCertificates (validator.Settings.TrustAnchors);
- if (status != SecStatusCode.Success)
- throw new InvalidOperationException (status.ToString ());
- trust.SetAnchorCertificatesOnly (false);
+ if (validator.Settings.CertificateValidationTime != null) {
+ var status = trust.SetVerifyDate (validator.Settings.CertificateValidationTime.Value);
+ if (status != SecStatusCode.Success)
+ throw new InvalidOperationException (status.ToString ());
+ }
+
+ var result = trust.Evaluate ();
+ if (result == SecTrustResult.Unspecified)
+ return true;
+
+ errors |= MonoSslPolicyErrors.RemoteCertificateChainErrors;
+ return false;
}
-
- if (validator.Settings.CertificateValidationTime != null) {
- var status = trust.SetVerifyDate (validator.Settings.CertificateValidationTime.Value);
- if (status != SecStatusCode.Success)
- throw new InvalidOperationException (status.ToString ());
- }
-
- var result = trust.Evaluate ();
- if (result == SecTrustResult.Unspecified)
- return true;
-
- errors |= MonoSslPolicyErrors.RemoteCertificateChainErrors;
- return false;
}
}
}
diff --git a/mcs/class/System/Mono.AppleTls/AppleTlsContext.cs b/mcs/class/System/Mono.AppleTls/AppleTlsContext.cs
index 4fa1730df2..2897a7d14a 100644
--- a/mcs/class/System/Mono.AppleTls/AppleTlsContext.cs
+++ b/mcs/class/System/Mono.AppleTls/AppleTlsContext.cs
@@ -235,32 +235,41 @@ namespace Mono.AppleTls
*
*/
- var trust = GetPeerTrust (!IsServer);
- X509CertificateCollection certificates;
-
- if (trust == null || trust.Count == 0) {
- remoteCertificate = null;
- if (!IsServer)
- throw new TlsException (AlertDescription.CertificateUnknown);
- certificates = null;
- } else {
- if (trust.Count > 1)
- Debug ("WARNING: Got multiple certificates in SecTrust!");
-
- certificates = new X509CertificateCollection ();
- for (int i = 0; i < trust.Count; i++)
- certificates.Add (trust [(IntPtr)i].ToX509Certificate ());
-
- remoteCertificate = certificates [0];
- Debug ("Got peer trust: {0}", remoteCertificate);
- }
-
bool ok;
+ SecTrust trust = null;
+ X509CertificateCollection certificates = null;
+
try {
+ trust = GetPeerTrust (!IsServer);
+
+ if (trust == null || trust.Count == 0) {
+ remoteCertificate = null;
+ if (!IsServer)
+ throw new TlsException (AlertDescription.CertificateUnknown);
+ certificates = null;
+ } else {
+ if (trust.Count > 1)
+ Debug ("WARNING: Got multiple certificates in SecTrust!");
+
+ certificates = new X509CertificateCollection ();
+ for (int i = 0; i < trust.Count; i++)
+ certificates.Add (trust.GetCertificate (i));
+
+ remoteCertificate = new X509Certificate (certificates [0]);
+ Debug ("Got peer trust: {0}", remoteCertificate);
+ }
+
ok = ValidateCertificate (certificates);
} catch (Exception ex) {
Debug ("Certificate validation failed: {0}", ex);
throw new TlsException (AlertDescription.CertificateUnknown, "Certificate validation threw exception.");
+ } finally {
+ if (trust != null)
+ trust.Dispose ();
+ if (certificates != null) {
+ for (int i = 0; i < certificates.Count; i++)
+ certificates [i].Dispose ();
+ }
}
if (!ok)
@@ -665,7 +674,7 @@ namespace Mono.AppleTls
if (value == IntPtr.Zero)
throw new TlsException (AlertDescription.CertificateUnknown);
}
- return (value == IntPtr.Zero) ? null : new SecTrust (value);
+ return (value == IntPtr.Zero) ? null : new SecTrust (value, true);
}
#endregion
diff --git a/mcs/class/System/Mono.AppleTls/Trust.cs b/mcs/class/System/Mono.AppleTls/Trust.cs
index 33a505043e..3ec3c4dd60 100644
--- a/mcs/class/System/Mono.AppleTls/Trust.cs
+++ b/mcs/class/System/Mono.AppleTls/Trust.cs
@@ -66,6 +66,8 @@ namespace Mono.AppleTls {
foreach (var certificate in certificates)
array [i++] = new SecCertificate (certificate);
Initialize (array, policy);
+ for (i = 0; i < array.Length; i++)
+ array [i].Dispose ();
}
void Initialize (SecCertificate[] array, SecPolicy policy)
@@ -122,6 +124,17 @@ namespace Mono.AppleTls {
}
}
+ internal X509Certificate GetCertificate (int index)
+ {
+ if (handle == IntPtr.Zero)
+ throw new ObjectDisposedException ("SecTrust");
+ if (index < 0 || index >= Count)
+ throw new ArgumentOutOfRangeException ("index");
+
+ var ptr = SecTrustGetCertificateAtIndex (handle, (IntPtr)index);
+ return new X509Certificate (ptr);
+ }
+
[DllImport (AppleTlsContext.SecurityLibrary)]
extern static SecStatusCode /* OSStatus */ SecTrustSetAnchorCertificates (IntPtr /* SecTrustRef */ trust, IntPtr /* CFArrayRef */ anchorCertificates);
diff --git a/mcs/class/System/ReferenceSources/Win32Exception.cs.REMOVED.git-id b/mcs/class/System/ReferenceSources/Win32Exception.cs.REMOVED.git-id
index 2fb7f3e673..35cc287145 100644
--- a/mcs/class/System/ReferenceSources/Win32Exception.cs.REMOVED.git-id
+++ b/mcs/class/System/ReferenceSources/Win32Exception.cs.REMOVED.git-id
@@ -1 +1 @@
-fe514b868d2ddd7479dee6238a5848350be33611
\ No newline at end of file
+83404914b3bd686a8fb10da985249e69631c4de7
\ No newline at end of file
diff --git a/mcs/class/System/System.Net/WebConnection.cs b/mcs/class/System/System.Net/WebConnection.cs
index e1435f84b6..68c480fa86 100644
--- a/mcs/class/System/System.Net/WebConnection.cs
+++ b/mcs/class/System/System.Net/WebConnection.cs
@@ -56,7 +56,6 @@ namespace System.Net
object socketLock = new object ();
IWebConnectionState state;
WebExceptionStatus status;
- WaitCallback initConn;
bool keepAlive;
byte [] buffer;
EventHandler abortHandler;
diff --git a/mcs/class/corlib/System/Delegate.cs b/mcs/class/corlib/System/Delegate.cs
index 120991b2f7..48d7860514 100644
--- a/mcs/class/corlib/System/Delegate.cs
+++ b/mcs/class/corlib/System/Delegate.cs
@@ -499,7 +499,7 @@ namespace System
m = Method;
- return (m != null ? m.GetHashCode () : GetType ().GetHashCode ()) ^ (m_target != null ? m_target.GetHashCode () : 0);
+ return (m != null ? m.GetHashCode () : GetType ().GetHashCode ()) ^ RuntimeHelpers.GetHashCode (m_target);
}
protected virtual MethodInfo GetMethodImpl ()
diff --git a/mcs/class/corlib/Test/System.Globalization/NumberFormatInfoTest.cs b/mcs/class/corlib/Test/System.Globalization/NumberFormatInfoTest.cs
index a195c28f72..dc8bbdd27e 100644
--- a/mcs/class/corlib/Test/System.Globalization/NumberFormatInfoTest.cs
+++ b/mcs/class/corlib/Test/System.Globalization/NumberFormatInfoTest.cs
@@ -49,9 +49,15 @@ namespace MonoTests.System.Globalization
c = CultureInfo.InvariantCulture;
Assert.AreEqual (2, c.NumberFormat.CurrencyDecimalDigits, "#3");
+ }
+ [Test]
+ public void AllCulturesCanParseNegativeNumber ()
+ {
+ foreach (var c in CultureInfo.GetCultures (CultureTypes.AllCultures))
+ {
+ int.Parse ("-1", c);
+ }
}
}
}
-
-
diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
index 1cf78170bc..2bc45681ce 100644
--- a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
+++ b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
@@ -1258,7 +1258,7 @@ namespace MonoTests.System.Threading.Tasks
{
var t = Task.Delay (300);
Assert.IsTrue (TaskStatus.WaitingForActivation == t.Status || TaskStatus.Running == t.Status, "#1");
- Assert.IsTrue (t.Wait (400), "#2");
+ Assert.IsTrue (t.Wait (1200), "#2");
}
[Test]
diff --git a/mcs/class/lib/monolite-darwin/1050400003/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1050400003/Mono.Security.dll.REMOVED.git-id
index 32fca8f0b0..1b921cfddd 100644
--- a/mcs/class/lib/monolite-darwin/1050400003/Mono.Security.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-darwin/1050400003/Mono.Security.dll.REMOVED.git-id
@@ -1 +1 @@
-10372fbbaaa3df30ee1692ed4ba9d556aa985307
\ No newline at end of file
+be9aa05dcf77e3a678e866b6356372647c1cc13c
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-darwin/1050400003/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1050400003/System.Configuration.dll.REMOVED.git-id
index 78f69dee6d..3f65b53824 100644
--- a/mcs/class/lib/monolite-darwin/1050400003/System.Configuration.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-darwin/1050400003/System.Configuration.dll.REMOVED.git-id
@@ -1 +1 @@
-2572908bbda7335a1fe58da5ee20de4af2f4a08d
\ No newline at end of file
+3af123b023a664cae8e867980a3fac5e1f10be4d
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-darwin/1050400003/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1050400003/System.Numerics.dll.REMOVED.git-id
index fb9502fed5..9c2a97a1a5 100644
--- a/mcs/class/lib/monolite-darwin/1050400003/System.Numerics.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-darwin/1050400003/System.Numerics.dll.REMOVED.git-id
@@ -1 +1 @@
-80b380eeedebaad80b103098ccab73e8b25db610
\ No newline at end of file
+91b45d039180bf17f0320233e15df3127ca1fcd6
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-darwin/1050400003/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1050400003/System.Security.dll.REMOVED.git-id
index 4044e01bf9..87d953065d 100644
--- a/mcs/class/lib/monolite-darwin/1050400003/System.Security.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-darwin/1050400003/System.Security.dll.REMOVED.git-id
@@ -1 +1 @@
-60e047ccaeb1b41abb41b09e6379da97e0f1cfbc
\ No newline at end of file
+1c2d90a445f904d7931338651b4eb30c2f90556c
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-darwin/1050400003/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1050400003/System.Xml.dll.REMOVED.git-id
index e60eeacf14..97a11c76af 100644
--- a/mcs/class/lib/monolite-darwin/1050400003/System.Xml.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-darwin/1050400003/System.Xml.dll.REMOVED.git-id
@@ -1 +1 @@
-8fbf87281f9d4c4e6c8ae070ad256bc3900957af
\ No newline at end of file
+4561c1a91655dbff891faed14271cf5326d69171
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-darwin/1050400003/System.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1050400003/System.dll.REMOVED.git-id
index 6f25a8969d..0911ab55b0 100644
--- a/mcs/class/lib/monolite-darwin/1050400003/System.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-darwin/1050400003/System.dll.REMOVED.git-id
@@ -1 +1 @@
-5191dd468774f918ff5181ff7f4565f7c29a7ab5
\ No newline at end of file
+909321fcb81b10103586630bae2a388b74894f4e
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-darwin/1050400003/mcs.exe.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1050400003/mcs.exe.REMOVED.git-id
index c46470a345..0da109c102 100644
--- a/mcs/class/lib/monolite-darwin/1050400003/mcs.exe.REMOVED.git-id
+++ b/mcs/class/lib/monolite-darwin/1050400003/mcs.exe.REMOVED.git-id
@@ -1 +1 @@
-c44e32c353bd140e9905c9cd07830909994a8023
\ No newline at end of file
+8ef5fe00834d2790dd279a4e3152ed7d3b2cf042
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-darwin/1050400003/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1050400003/mscorlib.dll.REMOVED.git-id
index ad048f8e54..827e8423ed 100644
--- a/mcs/class/lib/monolite-darwin/1050400003/mscorlib.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-darwin/1050400003/mscorlib.dll.REMOVED.git-id
@@ -1 +1 @@
-001965b608d44cc7b030fa2a7b4b87e867b310d7
\ No newline at end of file
+1c9b11fa10eb41cba446db688ad5f32157c7c936
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-linux/1050400003/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1050400003/Mono.Security.dll.REMOVED.git-id
index a0d84d0646..f998cdbaf9 100644
--- a/mcs/class/lib/monolite-linux/1050400003/Mono.Security.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-linux/1050400003/Mono.Security.dll.REMOVED.git-id
@@ -1 +1 @@
-ac6b645d3c086ee485afb35b3b38824a74af56a4
\ No newline at end of file
+949647d93cf97e4425af624028fe259adf0cadc7
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-linux/1050400003/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1050400003/System.Configuration.dll.REMOVED.git-id
index df5def4cff..e460fb6a70 100644
--- a/mcs/class/lib/monolite-linux/1050400003/System.Configuration.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-linux/1050400003/System.Configuration.dll.REMOVED.git-id
@@ -1 +1 @@
-eeb0917fef6a5f871e589bd7ae4562e91ff2da4a
\ No newline at end of file
+c68056663022971dfea97db6fbb1305193515e0f
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-linux/1050400003/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1050400003/System.Numerics.dll.REMOVED.git-id
index 151db27319..3399966ee1 100644
--- a/mcs/class/lib/monolite-linux/1050400003/System.Numerics.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-linux/1050400003/System.Numerics.dll.REMOVED.git-id
@@ -1 +1 @@
-ac0bb14072cc31e58b92cf367da7804001237629
\ No newline at end of file
+5b606e131c5591dc6a772f44ffb045ffb6bf72a9
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-linux/1050400003/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1050400003/System.Security.dll.REMOVED.git-id
index 01957eb1ee..d980fa270e 100644
--- a/mcs/class/lib/monolite-linux/1050400003/System.Security.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-linux/1050400003/System.Security.dll.REMOVED.git-id
@@ -1 +1 @@
-702d60cc4781b6d8d40f245cebbf725f4d7a4ba7
\ No newline at end of file
+3085670584ff3c0cb27fc441778ac7203a549369
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-linux/1050400003/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1050400003/System.Xml.dll.REMOVED.git-id
index f35b43b789..3523845bd1 100644
--- a/mcs/class/lib/monolite-linux/1050400003/System.Xml.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-linux/1050400003/System.Xml.dll.REMOVED.git-id
@@ -1 +1 @@
-b78b085d0b09ab83c4d7692d1a7f10a4344f9360
\ No newline at end of file
+7e596014ea1f6802c2a3c1e42158d1b67dd9639c
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-linux/1050400003/System.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1050400003/System.dll.REMOVED.git-id
index 0d60fb4a20..1630cc4b50 100644
--- a/mcs/class/lib/monolite-linux/1050400003/System.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-linux/1050400003/System.dll.REMOVED.git-id
@@ -1 +1 @@
-324abc41aeef6a99c189e20e9ee3a5211accb9c3
\ No newline at end of file
+b9708b84891d7783816a2c8e0948b1e0d760299b
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-linux/1050400003/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1050400003/mscorlib.dll.REMOVED.git-id
index 9dd59efb3c..b53221059b 100644
--- a/mcs/class/lib/monolite-linux/1050400003/mscorlib.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-linux/1050400003/mscorlib.dll.REMOVED.git-id
@@ -1 +1 @@
-ab7b940ff32a4decf4e0bdab71d4e4bb8406493c
\ No newline at end of file
+f0a5cf9baa7a06afaf0c41a2578d0767a386332b
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-win32/1050400003/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1050400003/Mono.Security.dll.REMOVED.git-id
index 4dad22eed5..e5c4ddf4a1 100644
--- a/mcs/class/lib/monolite-win32/1050400003/Mono.Security.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-win32/1050400003/Mono.Security.dll.REMOVED.git-id
@@ -1 +1 @@
-d19b0a3a5185282ab9c854c4f2728f0ca8b9194e
\ No newline at end of file
+7b26d518a6ed18bf35d5efbfd6ba91a9a961cb60
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-win32/1050400003/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1050400003/System.Configuration.dll.REMOVED.git-id
index e3aeb11d30..b1eb5de477 100644
--- a/mcs/class/lib/monolite-win32/1050400003/System.Configuration.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-win32/1050400003/System.Configuration.dll.REMOVED.git-id
@@ -1 +1 @@
-25ba8e25830502a22c3c2941afc44102aa22ea2e
\ No newline at end of file
+25c0a41aa61e73c95d26f94ade64cc0fb31402b5
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-win32/1050400003/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1050400003/System.Numerics.dll.REMOVED.git-id
index 49ed54707c..8b4f9f0ad9 100644
--- a/mcs/class/lib/monolite-win32/1050400003/System.Numerics.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-win32/1050400003/System.Numerics.dll.REMOVED.git-id
@@ -1 +1 @@
-713e1de2e8fdf233ebe32af8b9df167604004786
\ No newline at end of file
+0511e6c8fd04f83753543eb2f97e7ed6a55f156b
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-win32/1050400003/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1050400003/System.Security.dll.REMOVED.git-id
index 7a0d95006a..94c70ada89 100644
--- a/mcs/class/lib/monolite-win32/1050400003/System.Security.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-win32/1050400003/System.Security.dll.REMOVED.git-id
@@ -1 +1 @@
-180aee3304c58b9dea2cf4d1818e7f354578391b
\ No newline at end of file
+80f4d35af487244016901a92c9ea9335b44a0cde
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-win32/1050400003/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1050400003/System.Xml.dll.REMOVED.git-id
index 90a577b036..53528c2db8 100644
--- a/mcs/class/lib/monolite-win32/1050400003/System.Xml.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-win32/1050400003/System.Xml.dll.REMOVED.git-id
@@ -1 +1 @@
-ea83a4108e1288d3a21593afa17fca126fb4c96b
\ No newline at end of file
+e25627ab12f30575004c4a2ee0c8a3aa0df8664f
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-win32/1050400003/System.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1050400003/System.dll.REMOVED.git-id
index 6ee4a36bf7..768c3269d8 100644
--- a/mcs/class/lib/monolite-win32/1050400003/System.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-win32/1050400003/System.dll.REMOVED.git-id
@@ -1 +1 @@
-2f774c0a9e9d4b8cbc243a766405a029d910c156
\ No newline at end of file
+485153514f4d6e3e0a7f6f79208f9991491d1568
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-win32/1050400003/mcs.exe.REMOVED.git-id b/mcs/class/lib/monolite-win32/1050400003/mcs.exe.REMOVED.git-id
index 3fbca7fb84..65227d7aa8 100644
--- a/mcs/class/lib/monolite-win32/1050400003/mcs.exe.REMOVED.git-id
+++ b/mcs/class/lib/monolite-win32/1050400003/mcs.exe.REMOVED.git-id
@@ -1 +1 @@
-0553766d12c7709207981b4b76fe6a1e603fb117
\ No newline at end of file
+db405ecae016a720f714aa2b160253add697d737
\ No newline at end of file
diff --git a/mcs/class/lib/monolite-win32/1050400003/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1050400003/mscorlib.dll.REMOVED.git-id
index 163a89d724..cb40c87eab 100644
--- a/mcs/class/lib/monolite-win32/1050400003/mscorlib.dll.REMOVED.git-id
+++ b/mcs/class/lib/monolite-win32/1050400003/mscorlib.dll.REMOVED.git-id
@@ -1 +1 @@
-cf922eb520445873324239eb54282a8e37b0f456
\ No newline at end of file
+da5d03672b0a421a04a4c880c1f50ea24f5d6035
\ No newline at end of file
diff --git a/mcs/tools/mono-api-html/ClassComparer.cs b/mcs/tools/mono-api-html/ClassComparer.cs
index f6cf940c9e..721baf1194 100644
--- a/mcs/tools/mono-api-html/ClassComparer.cs
+++ b/mcs/tools/mono-api-html/ClassComparer.cs
@@ -252,7 +252,12 @@ namespace Xamarin.ApiDiff {
public override void Removed (XElement source)
{
- Output.Write ("Removed Type {0}.{1} ", State.Namespace, GetTypeName (source));
+ string name = State.Namespace + "." + GetTypeName (source);
+
+ if (State.IgnoreRemoved.Any (re => re.IsMatch (name)))
+ return;
+
+ Output.Write ("Removed Type {0} ", name);
}
public virtual string GetTypeName (XElement type)
diff --git a/mcs/tools/mono-api-html/NamespaceComparer.cs b/mcs/tools/mono-api-html/NamespaceComparer.cs
index 063e34ecbf..bc369d1906 100644
--- a/mcs/tools/mono-api-html/NamespaceComparer.cs
+++ b/mcs/tools/mono-api-html/NamespaceComparer.cs
@@ -91,6 +91,10 @@ namespace Xamarin.ApiDiff {
public override void Removed (XElement source)
{
var name = source.Attribute ("name").Value;
+
+ if (State.IgnoreRemoved.Any (re => re.IsMatch (name)))
+ return;
+
Output.WriteLine (" ", name);
Output.WriteLine ("
Removed Namespace {0} ", name);
Output.WriteLine ();
diff --git a/mono/metadata/culture-info-tables.h.REMOVED.git-id b/mono/metadata/culture-info-tables.h.REMOVED.git-id
index 7cad45118e..4ec27ff69b 100644
--- a/mono/metadata/culture-info-tables.h.REMOVED.git-id
+++ b/mono/metadata/culture-info-tables.h.REMOVED.git-id
@@ -1 +1 @@
-4d8cab37139d108d86dc723fcd8c0eb72b798b86
\ No newline at end of file
+15ee88d5ccbf6f966af4f5bb8825d3f2b2d0f2d3
\ No newline at end of file
diff --git a/mono/metadata/marshal.c.REMOVED.git-id b/mono/metadata/marshal.c.REMOVED.git-id
index 23e0d8e06e..a92b8267fb 100644
--- a/mono/metadata/marshal.c.REMOVED.git-id
+++ b/mono/metadata/marshal.c.REMOVED.git-id
@@ -1 +1 @@
-bfa88495d01485424d3d37ffbecf95e065015f69
\ No newline at end of file
+3454e9c554e9c6e4c46290d11adfb765d1b6ca06
\ No newline at end of file
diff --git a/mono/metadata/object-internals.h b/mono/metadata/object-internals.h
index 45dd875817..18a491ac0b 100644
--- a/mono/metadata/object-internals.h
+++ b/mono/metadata/object-internals.h
@@ -620,6 +620,7 @@ typedef struct {
gboolean (*mono_current_thread_has_handle_block_guard) (void);
gboolean (*mono_above_abort_threshold) (void);
void (*mono_clear_abort_threshold) (void);
+ void (*mono_reraise_exception) (MonoException *ex);
} MonoRuntimeExceptionHandlingCallbacks;
MONO_COLD void mono_set_pending_exception (MonoException *exc);
diff --git a/mono/metadata/object.c.REMOVED.git-id b/mono/metadata/object.c.REMOVED.git-id
index 21454da551..317cc10fa5 100644
--- a/mono/metadata/object.c.REMOVED.git-id
+++ b/mono/metadata/object.c.REMOVED.git-id
@@ -1 +1 @@
-3f7aff0aa74fee6492b3cc732d3844f2387dc8fc
\ No newline at end of file
+d76bdb5dd624c08405fa3638cf11bdafb1ec5ef8
\ No newline at end of file
diff --git a/mono/metadata/object.h b/mono/metadata/object.h
index c439fda2e8..0454f86d45 100644
--- a/mono/metadata/object.h
+++ b/mono/metadata/object.h
@@ -243,6 +243,9 @@ mono_monitor_exit (MonoObject *obj);
MONO_API void
mono_raise_exception (MonoException *ex);
+MONO_API void
+mono_reraise_exception (MonoException *ex);
+
MONO_RT_EXTERNAL_ONLY
MONO_API void
mono_runtime_object_init (MonoObject *this_obj);
diff --git a/mono/metadata/profiler.c b/mono/metadata/profiler.c
index 4b81e2ebd9..c8484f9fac 100644
--- a/mono/metadata/profiler.c
+++ b/mono/metadata/profiler.c
@@ -897,7 +897,10 @@ mono_profiler_shutdown (void)
prof->shutdown_callback (prof->profiler);
}
- mono_profiler_set_events ((MonoProfileFlags)0);
+ /* Clear all events */
+ for (prof = prof_list; prof; prof = prof->next)
+ prof->events = (MonoProfileFlags)0;
+ mono_profiler_events = (MonoProfileFlags)0;
}
/**
diff --git a/mono/metadata/threadpool-worker-default.c b/mono/metadata/threadpool-worker-default.c
index 6c851db737..ad14450c15 100644
--- a/mono/metadata/threadpool-worker-default.c
+++ b/mono/metadata/threadpool-worker-default.c
@@ -387,7 +387,7 @@ worker_park (void)
gboolean timeout = FALSE;
gboolean interrupted = FALSE;
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] worker parking", mono_native_thread_id_get ());
+ mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] worker parking", mono_native_thread_id_get ());
mono_coop_mutex_lock (&worker.parked_threads_lock);
@@ -430,7 +430,7 @@ done:
mono_coop_mutex_unlock (&worker.parked_threads_lock);
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] worker unparking, timeout? %s interrupted? %s",
+ mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] worker unparking, timeout? %s interrupted? %s",
mono_native_thread_id_get (), timeout ? "yes" : "no", interrupted ? "yes" : "no");
return timeout;
@@ -461,7 +461,7 @@ worker_thread (gpointer unused)
MonoInternalThread *thread;
ThreadPoolWorkerCounter counter;
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] worker starting", mono_native_thread_id_get ());
+ mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] worker starting", mono_native_thread_id_get ());
if (!mono_refcount_tryinc (&worker))
return 0;
@@ -498,7 +498,7 @@ worker_thread (gpointer unused)
counter._.working --;
});
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] worker finishing", mono_native_thread_id_get ());
+ mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] worker finishing", mono_native_thread_id_get ());
mono_refcount_dec (&worker);
diff --git a/mono/metadata/threads.c.REMOVED.git-id b/mono/metadata/threads.c.REMOVED.git-id
index 75116ca851..3dd95d6b45 100644
--- a/mono/metadata/threads.c.REMOVED.git-id
+++ b/mono/metadata/threads.c.REMOVED.git-id
@@ -1 +1 @@
-6f1a34e2dfc46b18eea5a8d7131ff418a934bcba
\ No newline at end of file
+a1727456be14eabc478207fe64c45ccc6d2f3ece
\ No newline at end of file
diff --git a/mono/metadata/w32error-unix.c b/mono/metadata/w32error-unix.c
index df41473dfe..d25681126a 100644
--- a/mono/metadata/w32error-unix.c
+++ b/mono/metadata/w32error-unix.c
@@ -66,6 +66,9 @@ mono_w32error_unix_to_win32 (guint32 error)
case EINTR: return ERROR_IO_PENDING; /* best match I could find */
case EPIPE: return ERROR_WRITE_FAULT;
case ELOOP: return ERROR_CANT_RESOLVE_FILENAME;
+#ifdef ENODEV
+ case ENODEV: return ERROR_DEV_NOT_EXIST;
+#endif
default:
g_error ("%s: unknown error (%d) \"%s\"", __FILE__, error, g_strerror (error));
diff --git a/mono/metadata/w32error.h b/mono/metadata/w32error.h
index 439bdd81a2..328b6731b3 100644
--- a/mono/metadata/w32error.h
+++ b/mono/metadata/w32error.h
@@ -31,6 +31,7 @@
#define ERROR_LOCK_VIOLATION 33
#define ERROR_HANDLE_DISK_FULL 39
#define ERROR_NOT_SUPPORTED 50
+#define ERROR_DEV_NOT_EXIST 55
#define ERROR_FILE_EXISTS 80
#define ERROR_CANNOT_MAKE 82
#define ERROR_INVALID_PARAMETER 87
diff --git a/mono/mini/aot-runtime.c.REMOVED.git-id b/mono/mini/aot-runtime.c.REMOVED.git-id
index 55f0eda40c..a95f585bda 100644
--- a/mono/mini/aot-runtime.c.REMOVED.git-id
+++ b/mono/mini/aot-runtime.c.REMOVED.git-id
@@ -1 +1 @@
-a93776da15a6b4f6a3a024ab68856eb9cfdb8044
\ No newline at end of file
+4038955ec47eec0c44ded4c9d1ed24aae851715a
\ No newline at end of file
diff --git a/mono/mini/cpu-amd64.md b/mono/mini/cpu-amd64.md
index f1dfac557b..c8fc3a8307 100755
--- a/mono/mini/cpu-amd64.md
+++ b/mono/mini/cpu-amd64.md
@@ -99,8 +99,8 @@ long_min_un: dest:i src1:i src2:i len:16 clob:1
long_max: dest:i src1:i src2:i len:16 clob:1
long_max_un: dest:i src1:i src2:i len:16 clob:1
-throw: src1:i len:18
-rethrow: src1:i len:18
+throw: src1:i len:24
+rethrow: src1:i len:24
start_handler: len:16
endfinally: len:9
endfilter: src1:a len:9
diff --git a/mono/mini/mini-amd64.c.REMOVED.git-id b/mono/mini/mini-amd64.c.REMOVED.git-id
index fac9ff5f97..a805280378 100644
--- a/mono/mini/mini-amd64.c.REMOVED.git-id
+++ b/mono/mini/mini-amd64.c.REMOVED.git-id
@@ -1 +1 @@
-2978af64ecb07220ee87c0e7a8af7afb8f30c7f7
\ No newline at end of file
+3b21e414e96f273200213bd72eebbd0ff16b511c
\ No newline at end of file
diff --git a/mono/mini/mini-exceptions.c b/mono/mini/mini-exceptions.c
index 0172baecd5..573e8ef7b6 100644
--- a/mono/mini/mini-exceptions.c
+++ b/mono/mini/mini-exceptions.c
@@ -236,10 +236,13 @@ mono_exceptions_init (void)
cbs.mono_walk_stack_with_state = mono_walk_stack_with_state;
- if (mono_llvm_only)
+ if (mono_llvm_only) {
cbs.mono_raise_exception = mono_llvm_raise_exception;
- else
+ cbs.mono_reraise_exception = mono_llvm_reraise_exception;
+ } else {
cbs.mono_raise_exception = (void (*)(MonoException *))mono_get_throw_exception ();
+ cbs.mono_reraise_exception = (void (*)(MonoException *))mono_get_rethrow_exception ();
+ }
cbs.mono_raise_exception_with_ctx = mono_raise_exception_with_ctx;
cbs.mono_exception_walk_trace = mono_exception_walk_trace;
cbs.mono_install_handler_block_guard = mono_install_handler_block_guard;
@@ -3243,6 +3246,12 @@ mono_llvm_raise_exception (MonoException *e)
mono_llvm_throw_exception ((MonoObject*)e);
}
+void
+mono_llvm_reraise_exception (MonoException *e)
+{
+ mono_llvm_rethrow_exception ((MonoObject*)e);
+}
+
void
mono_llvm_throw_corlib_exception (guint32 ex_token_index)
{
diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c
index 3ef30208cf..31b1d69f4c 100644
--- a/mono/mini/mini-trampolines.c
+++ b/mono/mini/mini-trampolines.c
@@ -567,6 +567,10 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVTable *
vtable_slot = mini_resolve_imt_method (vt, vtable_slot, imt_method, &impl_method, &addr, &need_rgctx_tramp, &variant_iface, error);
return_val_if_nok (error, NULL);
+ /* We must handle magic interfaces on rank 1 arrays of ref types as if they were variant */
+ if (!variant_iface && vt->klass->rank == 1 && !vt->klass->element_class->valuetype && imt_method->klass->is_array_special_interface)
+ variant_iface = imt_method;
+
/* This is the vcall slot which gets called through the IMT trampoline */
vtable_slot_to_patch = vtable_slot;
diff --git a/mono/mini/mini.h.REMOVED.git-id b/mono/mini/mini.h.REMOVED.git-id
index 429be70c4c..125a0ddd9c 100644
--- a/mono/mini/mini.h.REMOVED.git-id
+++ b/mono/mini/mini.h.REMOVED.git-id
@@ -1 +1 @@
-1fcb2f1d892789f35101633f0ec5c7a9f9498535
\ No newline at end of file
+b1cb8790d0d87c75869590dec3c70536c9f81e43
\ No newline at end of file
diff --git a/mono/mini/tramp-amd64.c b/mono/mini/tramp-amd64.c
index 634203bc2e..d3f3fc3419 100644
--- a/mono/mini/tramp-amd64.c
+++ b/mono/mini/tramp-amd64.c
@@ -144,6 +144,7 @@ mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
if (((code [-13] == 0x49) && (code [-12] == 0xbb)) || (code [-5] == 0xe8)) {
if (code [-5] != 0xe8) {
if (can_write) {
+ g_assert ((guint64)(orig_code - 11) % 8 == 0);
InterlockedExchangePointer ((gpointer*)(orig_code - 11), addr);
VALGRIND_DISCARD_TRANSLATIONS (orig_code - 11, sizeof (gpointer));
}
diff --git a/mono/mini/version.h b/mono/mini/version.h
index d5e2b1ca06..3e68d6b940 100644
--- a/mono/mini/version.h
+++ b/mono/mini/version.h
@@ -1 +1 @@
-#define FULL_VERSION "explicit/6b8abfe"
+#define FULL_VERSION "explicit/7d78877"
diff --git a/mono/tests/Makefile.am b/mono/tests/Makefile.am
index 0480225a0f..a4bdf54274 100755
--- a/mono/tests/Makefile.am
+++ b/mono/tests/Makefile.am
@@ -303,6 +303,7 @@ TESTS_CS_SRC= \
delegate-async-exit.cs \
delegate-delegate-exit.cs \
delegate-exit.cs \
+ delegate-disposed-hashcode.cs \
finalizer-abort.cs \
finalizer-exception.cs \
finalizer-exit.cs \
@@ -512,7 +513,9 @@ TESTS_CS_SRC= \
bug-46661.cs \
w32message.cs \
runtime-invoke.gen.cs \
- imt_big_iface_test.cs
+ imt_big_iface_test.cs \
+ bug-58782-plain-throw.cs \
+ bug-58782-capture-and-throw.cs
if AMD64
TESTS_CS_SRC += async-exc-compilation.cs finally_guard.cs finally_block_ending_in_dead_bb.cs
@@ -648,9 +651,15 @@ TESTS_GSHARED_SRC = \
bug-1147.cs \
generic-type-builder.2.cs
+PLATFORM_DISABLED_TESTS=
+
+if HOST_WIN32
+PLATFORM_DISABLED_TESTS += bug-58782-plain-throw.exe bug-58782-capture-and-throw.exe
+endif
+
if AMD64
# #651684
-PLATFORM_DISABLED_TESTS = finally_guard.exe
+PLATFORM_DISABLED_TESTS += finally_guard.exe
if HOST_WIN32
PLATFORM_DISABLED_TESTS += w32message.exe
@@ -661,7 +670,7 @@ endif
if X86
if HOST_WIN32
-PLATFORM_DISABLED_TESTS=async-exc-compilation.exe finally_guard.exe finally_block_ending_in_dead_bb.exe \
+PLATFORM_DISABLED_TESTS += async-exc-compilation.exe finally_guard.exe finally_block_ending_in_dead_bb.exe \
bug-18026.exe monitor.exe threadpool-exceptions5.exe process-unref-race.exe w32message.exe \
unhandled-exception-1.exe unhandled-exception-2.exe unhandled-exception-3.exe unhandled-exception-4.exe \
unhandled-exception-5.exe unhandled-exception-6.exe unhandled-exception-7.exe unhandled-exception-8.exe
@@ -671,12 +680,12 @@ endif
if POWERPC
# bug #71274
-PLATFORM_DISABLED_TESTS=finalizer-abort.exe finalizer-exception.exe finalizer-exit.exe
+PLATFORM_DISABLED_TESTS += finalizer-abort.exe finalizer-exception.exe finalizer-exit.exe
endif
if POWERPC64
# FIXME: These tests hang/fail for unknown reasons
-PLATFORM_DISABLED_TESTS=monitor.exe threadpool-exceptions5.exe appdomain-thread-abort.exe appdomain-unload.exe \
+PLATFORM_DISABLED_TESTS += monitor.exe threadpool-exceptions5.exe appdomain-thread-abort.exe appdomain-unload.exe \
pinvoke2.exe pinvoke3.exe pinvoke11.exe threadpool-exceptions7.exe winx64structs.exe bug-10127.exe pinvoke_ppcc.exe \
pinvoke_ppcs.exe pinvoke_ppci.exe pinvoke_ppcf.exe pinvoke_ppcd.exe abort-cctor.exe load-exceptions.exe \
sgen-domain-unload-2.exe sgen-weakref-stress.exe sgen-cementing-stress.exe sgen-new-threads-dont-join-stw.exe \
@@ -684,7 +693,7 @@ PLATFORM_DISABLED_TESTS=monitor.exe threadpool-exceptions5.exe appdomain-thread-
endif
if ARM
-PLATFORM_DISABLED_TESTS=filter-stack.exe
+PLATFORM_DISABLED_TESTS += filter-stack.exe
INTERP_DISABLED_TESTS_PLATFORM=finalizer-exception.exe main-returns-abort-resetabort.exe block_guard_restore_aligment_on_exit.exe \
delegate-exit.exe delegate-exit.exe delegate-delegate-exit.exe delegate-async-exit.exe delegate3.exe delegate1.exe
endif
@@ -695,11 +704,11 @@ endif
if MIPS
# monitor.exe is racy
-PLATFORM_DISABLED_TESTS=filter-stack.exe monitor.exe
+PLATFORM_DISABLED_TESTS += filter-stack.exe monitor.exe
endif
if S390X
-PLATFORM_DISABLED_TESTS=dynamic-method-resurrection.exe
+PLATFORM_DISABLED_TESTS += dynamic-method-resurrection.exe
#PLATFORM_DISABLED_TESTS=dynamic-method-resurrection.exe exception17.exe
PLATFORM_DISABLED_TESTS += \
@@ -758,7 +767,9 @@ PROFILE_DISABLED_TESTS += \
marshal8.exe \
pinvoke-2.2.exe \
pinvoke3.exe \
- thunks.exe
+ thunks.exe \
+ bug-58782-plain-throw.exe \
+ bug-58782-capture-and-throw.exe
# Tests which load assemblies which are not
# in the testing_aot_full profile
@@ -959,6 +970,8 @@ INTERP_DISABLED_TESTS = \
bug-46661.exe \
bug-47295.exe \
bug-48015.exe \
+ bug-58782-plain-throw.exe \
+ bug-58782-capture-and-throw.exe \
bug-544446.exe \
bug-685908.exe \
bug-80307.exe \
@@ -1692,7 +1705,8 @@ test-unhandled-exception: unhandled-exception-test-runner.2.exe
safehandle.2.exe winx64structs.exe thunks.exe pinvoke3.exe pinvoke2.exe pinvoke-2.2.exe pinvoke17.exe pinvoke13.exe \
pinvoke11.exe pinvoke_ppcs.exe pinvoke_ppci.exe pinvoke_ppcf.exe pinvoke_ppcd.exe pinvoke_ppcc.exe pinvoke.exe \
- marshalbool.exe marshal9.exe marshal5.exe marshal.exe handleref.exe cominterop.exe bug-Xamarin-5278.exe: libtest.la
+ marshalbool.exe marshal9.exe marshal5.exe marshal.exe handleref.exe cominterop.exe bug-Xamarin-5278.exe \
+ bug-58782-plain-throw.exe bug-58782-capture-and-throw.exe: libtest.la
event-get.2.exe$(PLATFORM_AOT_SUFFIX): event-il.exe$(PLATFORM_AOT_SUFFIX)
event-get.2.exe: event-il.exe
diff --git a/mono/tests/Makefile.in.REMOVED.git-id b/mono/tests/Makefile.in.REMOVED.git-id
index 6b54baee44..aa283b9bed 100644
--- a/mono/tests/Makefile.in.REMOVED.git-id
+++ b/mono/tests/Makefile.in.REMOVED.git-id
@@ -1 +1 @@
-8abfd927aa0f5c3b75b05ef90786aa160b932e5e
\ No newline at end of file
+44390123db5c08fc0a14507c0e98641dd1f51915
\ No newline at end of file
diff --git a/mono/tests/bug-58782-capture-and-throw.cs b/mono/tests/bug-58782-capture-and-throw.cs
new file mode 100644
index 0000000000..9a917eea49
--- /dev/null
+++ b/mono/tests/bug-58782-capture-and-throw.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Runtime.InteropServices;
+
+class Driver
+{
+ [DllImport ("libtest")]
+ static extern void mono_test_native_to_managed_exception_rethrow (Action action);
+
+ [DllImport ("libc")]
+ static extern void _exit (int exitCode);
+
+ static int Main (string[] args)
+ {
+ AppDomain.CurrentDomain.UnhandledException += (sender, exception_args) =>
+ {
+ CustomException exc = exception_args.ExceptionObject as CustomException;
+ if (exc == null) {
+ Console.WriteLine ($"FAILED - Unknown exception: {exception_args.ExceptionObject}");
+ _exit (1);
+ }
+
+ Console.WriteLine (exc.StackTrace);
+ if (string.IsNullOrEmpty (exc.StackTrace)) {
+ Console.WriteLine ("FAILED - StackTrace is null for unhandled exception.");
+ _exit (2);
+ } else {
+ Console.WriteLine ("SUCCESS - StackTrace is not null for unhandled exception.");
+ _exit (0);
+ }
+ };
+
+ mono_test_native_to_managed_exception_rethrow (CaptureAndThrow);
+ Console.WriteLine ("Should have exited in the UnhandledException event handler.");
+ return 2;
+ }
+
+ static void CaptureAndThrow ()
+ {
+ try {
+ Throw ();
+ } catch (Exception e) {
+ System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture (e).Throw ();
+ }
+ }
+
+ static void Throw ()
+ {
+ throw new CustomException ("C");
+ }
+
+ class CustomException : Exception
+ {
+ public CustomException(string s) : base(s) {}
+ }
+}
\ No newline at end of file
diff --git a/mono/tests/bug-58782-plain-throw.cs b/mono/tests/bug-58782-plain-throw.cs
new file mode 100644
index 0000000000..72ce01cb16
--- /dev/null
+++ b/mono/tests/bug-58782-plain-throw.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Runtime.InteropServices;
+
+class Driver
+{
+ [DllImport ("libtest")]
+ static extern void mono_test_native_to_managed_exception_rethrow (Action action);
+
+ [DllImport ("libc")]
+ static extern void _exit (int exitCode);
+
+ static int Main (string[] args)
+ {
+ AppDomain.CurrentDomain.UnhandledException += (sender, exception_args) =>
+ {
+ CustomException exc = exception_args.ExceptionObject as CustomException;
+ if (exc == null) {
+ Console.WriteLine ($"FAILED - Unknown exception: {exception_args.ExceptionObject}");
+ _exit (1);
+ }
+
+ Console.WriteLine (exc.StackTrace);
+ if (string.IsNullOrEmpty (exc.StackTrace)) {
+ Console.WriteLine ("FAILED - StackTrace is null for unhandled exception.");
+ _exit (2);
+ } else {
+ Console.WriteLine ("SUCCESS - StackTrace is not null for unhandled exception.");
+ _exit (0);
+ }
+ };
+
+ mono_test_native_to_managed_exception_rethrow (PlainThrow);
+ Console.WriteLine ("Should have exited in the UnhandledException event handler.");
+ return 3;
+ }
+
+ static void PlainThrow ()
+ {
+ Throw ();
+ }
+
+ static void Throw ()
+ {
+ throw new CustomException ("C");
+ }
+
+ class CustomException : Exception
+ {
+ public CustomException(string s) : base(s) {}
+ }
+}
\ No newline at end of file
diff --git a/mono/tests/delegate-disposed-hashcode.cs b/mono/tests/delegate-disposed-hashcode.cs
new file mode 100644
index 0000000000..f90118a54d
--- /dev/null
+++ b/mono/tests/delegate-disposed-hashcode.cs
@@ -0,0 +1,38 @@
+using System;
+
+// Regression test for bug #59235
+
+public static class Program {
+ delegate void MyDel (int i, int j);
+
+ public static void Main (string[] args) {
+ var o = new MyTarget ();
+ Console.WriteLine ("Hashcode1: " + o.GetHashCode ());
+
+ MyDel d = o.DoStuff;
+ Console.WriteLine ("Hashcode2: " + d.GetHashCode ());
+ Console.WriteLine ("Hashcode3: " + o.GetHashCode ());
+
+ o.Dispose ();
+ Console.WriteLine ("Hashcode4: " + d.GetHashCode ());
+ }
+
+ class MyTarget : IDisposable {
+ public int counter = 0;
+ bool avail = true;
+
+ public void DoStuff (int i, int j) {
+ counter += i + j;
+ }
+
+ public void Dispose () {
+ avail = false;
+ }
+
+ public override int GetHashCode () {
+ if (!avail)
+ throw new ObjectDisposedException ("MyTarget is dead");
+ return counter.GetHashCode ();
+ }
+ }
+}
diff --git a/mono/tests/libtest.c.REMOVED.git-id b/mono/tests/libtest.c.REMOVED.git-id
index be580518c4..8b780807e7 100644
--- a/mono/tests/libtest.c.REMOVED.git-id
+++ b/mono/tests/libtest.c.REMOVED.git-id
@@ -1 +1 @@
-b94b29d52fd8eae95c11e0877adcc1269a91093d
\ No newline at end of file
+9540e015385f0aff8fad7c16d40021a9a7bb5496
\ No newline at end of file
diff --git a/po/mcs/de.gmo b/po/mcs/de.gmo
index e8a4d068f2..c3fa7e4ef6 100644
Binary files a/po/mcs/de.gmo and b/po/mcs/de.gmo differ
diff --git a/po/mcs/de.po.REMOVED.git-id b/po/mcs/de.po.REMOVED.git-id
index 618d95037f..d14c45f78e 100644
--- a/po/mcs/de.po.REMOVED.git-id
+++ b/po/mcs/de.po.REMOVED.git-id
@@ -1 +1 @@
-8471cecba3e712a69942b464c4fdf677bb40795d
\ No newline at end of file
+fda9d7a830a207581b4d7af95c0ba266742dc674
\ No newline at end of file
diff --git a/po/mcs/es.gmo b/po/mcs/es.gmo
index f662b6bdcb..f398bbced3 100644
Binary files a/po/mcs/es.gmo and b/po/mcs/es.gmo differ
diff --git a/po/mcs/es.po.REMOVED.git-id b/po/mcs/es.po.REMOVED.git-id
index 531f7f8982..6d013568e8 100644
--- a/po/mcs/es.po.REMOVED.git-id
+++ b/po/mcs/es.po.REMOVED.git-id
@@ -1 +1 @@
-c1bd3dfa865c7895a24029f3316bd042494b3373
\ No newline at end of file
+12a53a10dc14dec78b4abc4815bd7afd92e0e764
\ No newline at end of file
diff --git a/po/mcs/ja.gmo b/po/mcs/ja.gmo
index 8a29ae84fc..6e76920064 100644
Binary files a/po/mcs/ja.gmo and b/po/mcs/ja.gmo differ
diff --git a/po/mcs/ja.po.REMOVED.git-id b/po/mcs/ja.po.REMOVED.git-id
index 151ff32cc2..e856bac082 100644
--- a/po/mcs/ja.po.REMOVED.git-id
+++ b/po/mcs/ja.po.REMOVED.git-id
@@ -1 +1 @@
-debea7109f95296effb23798bab9d3e04658cef9
\ No newline at end of file
+3f52fb4b6afb28f6a5f2cccc0d41bfa11e9c6994
\ No newline at end of file
diff --git a/po/mcs/mcs.pot b/po/mcs/mcs.pot
index 711a83cfc5..ad209bfb74 100644
--- a/po/mcs/mcs.pot
+++ b/po/mcs/mcs.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: mono 5.4.0.167\n"
+"Project-Id-Version: mono 5.4.0.199\n"
"Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
-"POT-Creation-Date: 2017-08-21 15:15+0000\n"
+"POT-Creation-Date: 2017-09-25 16:39+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
diff --git a/po/mcs/pt_BR.gmo b/po/mcs/pt_BR.gmo
index 9ff1219893..0375d7b58d 100644
Binary files a/po/mcs/pt_BR.gmo and b/po/mcs/pt_BR.gmo differ
diff --git a/po/mcs/pt_BR.po.REMOVED.git-id b/po/mcs/pt_BR.po.REMOVED.git-id
index 01722afb97..e58cb791af 100644
--- a/po/mcs/pt_BR.po.REMOVED.git-id
+++ b/po/mcs/pt_BR.po.REMOVED.git-id
@@ -1 +1 @@
-133cc99896d67269ecedf7d798971f7dc4d0c23a
\ No newline at end of file
+c8e7f072ee5743808fb9ac5987dce39f4980c80c
\ No newline at end of file
diff --git a/tools/locale-builder/Driver.cs b/tools/locale-builder/Driver.cs
index b197c84e16..635cef72d1 100644
--- a/tools/locale-builder/Driver.cs
+++ b/tools/locale-builder/Driver.cs
@@ -1177,10 +1177,13 @@ namespace Mono.Tools.LocaleBuilder
if (el != null)
ni.PositiveSign = el.InnerText;
+ // CLDR uses unicode negative sign for some culture (e.g sv, is, lt, don't kwnow why) but .NET always
+ // uses simple "-" sign and what is worse the parsing code cannot deal with non-ASCII values
+ ni.NegativeSign = "-";
+
+ /*
el = node.SelectSingleNode ("minusSign");
if (el != null) {
- // CLDR uses unicode negative sign for some culture (e.g sv, is, lt, don't kwnow why) but .net always
- // uses simple - sign
switch (el.InnerText) {
case "\u2212":
case "\u200F\u002D": // Remove any right-to-left mark characters
@@ -1194,7 +1197,7 @@ namespace Mono.Tools.LocaleBuilder
break;
}
}
-
+ */
el = node.SelectSingleNode ("infinity");
// We cannot use the value from CLDR because many broken
diff --git a/tools/locale-builder/Makefile.am b/tools/locale-builder/Makefile.am
index 14186f1238..909fbc1d42 100644
--- a/tools/locale-builder/Makefile.am
+++ b/tools/locale-builder/Makefile.am
@@ -41,7 +41,7 @@ minimal: locale-builder.exe locale-data
$(RUNTIME) locale-builder.exe --locales '$(MINIMAL_LOCALES)'
locale-data:
- if ! test -d CLDR/common ; then \
+ if ! test -e CLDR/common/supplemental/supplementalData.xml ; then \
curl http://www.unicode.org/Public/cldr/30.0.2/core.zip -o core.zip ; \
unzip core.zip -d CLDR ; \
fi
diff --git a/tools/locale-builder/Makefile.in b/tools/locale-builder/Makefile.in
index 8f6411f29f..2c7696c4b3 100644
--- a/tools/locale-builder/Makefile.in
+++ b/tools/locale-builder/Makefile.in
@@ -559,7 +559,7 @@ minimal: locale-builder.exe locale-data
$(RUNTIME) locale-builder.exe --locales '$(MINIMAL_LOCALES)'
locale-data:
- if ! test -d CLDR/common ; then \
+ if ! test -e CLDR/common/supplemental/supplementalData.xml ; then \
curl http://www.unicode.org/Public/cldr/30.0.2/core.zip -o core.zip ; \
unzip core.zip -d CLDR ; \
fi