Merge branch 'upstream'

Former-commit-id: dc67e52b5b3603c75f3d8c177821db8411103ac2
This commit is contained in:
Xamarin Public Jenkins (auto-signing) 2018-05-26 08:46:03 +00:00
commit 17c03b9cb4
60 changed files with 271 additions and 93 deletions

View File

@ -1 +1 @@
a716110cdcded6f6c9a459907b56b1f4d6eeadbe fe749f40b031bea9c317a0fdd447b7463c1fa428

View File

@ -1 +1 @@
1b47868002d8f5b8e4c85708dc50e855d259353b 7dc767be05a654f669f5fcb931c96a68bb03fc6c

View File

@ -5,9 +5,9 @@
[assembly:System.Reflection.AssemblyVersionAttribute("0.10.0.0")] [assembly:System.Reflection.AssemblyVersionAttribute("0.10.0.0")]
[assembly:System.CLSCompliantAttribute(false)] [assembly:System.CLSCompliantAttribute(false)]
[assembly:System.Diagnostics.DebuggableAttribute((System.Diagnostics.DebuggableAttribute.DebuggingModes)(2))] [assembly:System.Diagnostics.DebuggableAttribute((System.Diagnostics.DebuggableAttribute.DebuggingModes)(2))]
[assembly:System.Reflection.AssemblyCopyrightAttribute("Copyright © 2008 - 2015 Jb Evain")] [assembly:System.Reflection.AssemblyCopyrightAttribute("Copyright © 2008 - 2018 Jb Evain")]
[assembly:System.Reflection.AssemblyFileVersionAttribute("0.10.0.0")] [assembly:System.Reflection.AssemblyFileVersionAttribute("0.10.0.0")]
[assembly:System.Reflection.AssemblyInformationalVersionAttribute("0.10.0.0-beta7")] [assembly:System.Reflection.AssemblyInformationalVersionAttribute("0.10.0.0")]
[assembly:System.Reflection.AssemblyProductAttribute("Mono.Cecil")] [assembly:System.Reflection.AssemblyProductAttribute("Mono.Cecil")]
[assembly:System.Reflection.AssemblyTitleAttribute("Mono.Cecil.Mdb")] [assembly:System.Reflection.AssemblyTitleAttribute("Mono.Cecil.Mdb")]
[assembly:System.Runtime.CompilerServices.CompilationRelaxationsAttribute(8)] [assembly:System.Runtime.CompilerServices.CompilationRelaxationsAttribute(8)]

View File

@ -1 +1 @@
ab7d67e411350069bbfbb253ebf85aaea01ddab9 8d89b5ff7f8c0d7a260c7d6ec5d1b9baf4b22fd2

View File

@ -49,12 +49,13 @@ namespace Mono.Cecil.Cil {
string url; string url;
byte type; Guid type;
byte hash_algorithm; Guid hash_algorithm;
byte language; Guid language;
byte language_vendor; Guid language_vendor;
byte [] hash; byte [] hash;
byte [] embedded_source;
public string Url { public string Url {
get { return url; } get { return url; }
@ -62,23 +63,43 @@ namespace Mono.Cecil.Cil {
} }
public DocumentType Type { public DocumentType Type {
get { return (DocumentType) type; } get { return type.ToType (); }
set { type = (byte) value; } set { type = value.ToGuid (); }
}
public Guid TypeGuid {
get { return type; }
set { type = value; }
} }
public DocumentHashAlgorithm HashAlgorithm { public DocumentHashAlgorithm HashAlgorithm {
get { return (DocumentHashAlgorithm) hash_algorithm; } get { return hash_algorithm.ToHashAlgorithm (); }
set { hash_algorithm = (byte) value; } set { hash_algorithm = value.ToGuid (); }
}
public Guid HashAlgorithmGuid {
get { return hash_algorithm; }
set { hash_algorithm = value; }
} }
public DocumentLanguage Language { public DocumentLanguage Language {
get { return (DocumentLanguage) language; } get { return language.ToLanguage (); }
set { language = (byte) value; } set { language = value.ToGuid (); }
}
public Guid LanguageGuid {
get { return language; }
set { language = value; }
} }
public DocumentLanguageVendor LanguageVendor { public DocumentLanguageVendor LanguageVendor {
get { return (DocumentLanguageVendor) language_vendor; } get { return language_vendor.ToVendor (); }
set { language_vendor = (byte) value; } set { language_vendor = value.ToGuid (); }
}
public Guid LanguageVendorGuid {
get { return language_vendor; }
set { language_vendor = value; }
} }
public byte [] Hash { public byte [] Hash {
@ -86,10 +107,16 @@ namespace Mono.Cecil.Cil {
set { hash = value; } set { hash = value; }
} }
public byte[] EmbeddedSource {
get { return embedded_source; }
set { embedded_source = value; }
}
public Document (string url) public Document (string url)
{ {
this.url = url; this.url = url;
this.hash = Empty<byte>.Array; this.hash = Empty<byte>.Array;
this.embedded_source = Empty<byte>.Array;
this.token = new MetadataToken (TokenType.Document); this.token = new MetadataToken (TokenType.Document);
} }
} }

View File

@ -761,6 +761,44 @@ namespace Mono.Cecil.Cil {
ISymbolReader GetSymbolReader (ModuleDefinition module, Stream symbolStream); ISymbolReader GetSymbolReader (ModuleDefinition module, Stream symbolStream);
} }
#if !NET_CORE
[Serializable]
#endif
public sealed class SymbolsNotFoundException : FileNotFoundException {
public SymbolsNotFoundException (string message) : base (message)
{
}
#if !NET_CORE
SymbolsNotFoundException (
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base (info, context)
{
}
#endif
}
#if !NET_CORE
[Serializable]
#endif
public sealed class SymbolsNotMatchingException : InvalidOperationException {
public SymbolsNotMatchingException (string message) : base (message)
{
}
#if !NET_CORE
SymbolsNotMatchingException (
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base (info, context)
{
}
#endif
}
public class DefaultSymbolReaderProvider : ISymbolReaderProvider { public class DefaultSymbolReaderProvider : ISymbolReaderProvider {
readonly bool throw_if_no_symbol; readonly bool throw_if_no_symbol;
@ -810,7 +848,7 @@ namespace Mono.Cecil.Cil {
} }
if (throw_if_no_symbol) if (throw_if_no_symbol)
throw new FileNotFoundException (string.Format ("No symbol found for file: {0}", fileName)); throw new SymbolsNotFoundException (string.Format ("No symbol found for file: {0}", fileName));
return null; return null;
} }

View File

@ -2,7 +2,7 @@
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<id>Mono.Cecil</id> <id>Mono.Cecil</id>
<version>0.10.0.0-beta7</version> <version>0.10.0.0</version>
<title>Mono.Cecil</title> <title>Mono.Cecil</title>
<authors>Jb Evain</authors> <authors>Jb Evain</authors>
<owners>Jb Evain</owners> <owners>Jb Evain</owners>

View File

@ -105,7 +105,7 @@ namespace Mono.Cecil {
: symbol_reader_provider.GetSymbolReader (module, module.FileName); : symbol_reader_provider.GetSymbolReader (module, module.FileName);
if (reader != null) if (reader != null)
module.ReadSymbols (reader); module.ReadSymbols (reader, parameters.ThrowIfSymbolsAreNotMatching);
} }
if (module.Image.HasDebugTables ()) if (module.Image.HasDebugTables ())
@ -834,6 +834,12 @@ namespace Mono.Cecil {
types [i] = ReadType (i + 1); types [i] = ReadType (i + 1);
} }
if (module.IsWindowsMetadata ()) {
for (uint i = 0; i < length; i++) {
WindowsRuntimeProjections.Project (types [i]);
}
}
} }
static bool IsNested (TypeAttributes attributes) static bool IsNested (TypeAttributes attributes)
@ -945,9 +951,6 @@ namespace Mono.Cecil {
if (IsNested (attributes)) if (IsNested (attributes))
type.DeclaringType = GetNestedTypeDeclaringType (type); type.DeclaringType = GetNestedTypeDeclaringType (type);
if (module.IsWindowsMetadata ())
WindowsRuntimeProjections.Project (type);
return type; return type;
} }
@ -1035,7 +1038,12 @@ namespace Mono.Cecil {
if (type != null) if (type != null)
return type; return type;
return ReadTypeDefinition (rid); type = ReadTypeDefinition (rid);
if (module.IsWindowsMetadata ())
WindowsRuntimeProjections.Project (type);
return type;
} }
TypeDefinition ReadTypeDefinition (uint rid) TypeDefinition ReadTypeDefinition (uint rid)
@ -2812,9 +2820,9 @@ namespace Mono.Cecil {
var name = signature.ReadDocumentName (); var name = signature.ReadDocumentName ();
documents [i - 1] = new Document (name) { documents [i - 1] = new Document (name) {
HashAlgorithm = hash_algorithm.ToHashAlgorithm (), HashAlgorithmGuid = hash_algorithm,
Hash = hash, Hash = hash,
Language = language.ToLanguage (), LanguageGuid = language,
token = new MetadataToken (TokenType.Document, i), token = new MetadataToken (TokenType.Document, i),
}; };
} }

View File

@ -282,6 +282,12 @@ namespace Mono.Cecil {
if (File.Exists (file)) if (File.Exists (file))
return GetAssembly (file, parameters); return GetAssembly (file, parameters);
if (on_mono && Directory.Exists (path + "-api")) {
file = Path.Combine (path + "-api", "mscorlib.dll");
if (File.Exists (file))
return GetAssembly (file, parameters);
}
return null; return null;
} }

View File

@ -177,7 +177,7 @@ namespace Mono.Cecil {
string.Empty, string.Empty,
type.Name, type.Name,
module, module,
ImportScope (type.Assembly ()), ImportScope (type),
type.IsValueType ()); type.IsValueType ());
reference.etype = ImportElementType (type); reference.etype = ImportElementType (type);
@ -193,6 +193,11 @@ namespace Mono.Cecil {
return reference; return reference;
} }
protected virtual IMetadataScope ImportScope (Type type)
{
return ImportScope (type.Assembly ());
}
static bool ImportOpenGenericType (Type type, ImportGenericKind import_kind) static bool ImportOpenGenericType (Type type, ImportGenericKind import_kind)
{ {
return type.IsGenericType () && type.IsGenericTypeDefinition () && import_kind == ImportGenericKind.Open; return type.IsGenericType () && type.IsGenericTypeDefinition () && import_kind == ImportGenericKind.Open;
@ -294,7 +299,7 @@ namespace Mono.Cecil {
return etype; return etype;
} }
AssemblyNameReference ImportScope (SR.Assembly assembly) protected AssemblyNameReference ImportScope (SR.Assembly assembly)
{ {
return ImportReference (assembly.GetName ()); return ImportReference (assembly.GetName ());
} }
@ -504,7 +509,7 @@ namespace Mono.Cecil {
type.Namespace, type.Namespace,
type.Name, type.Name,
module, module,
ImportScope (type.Scope), ImportScope (type),
type.IsValueType); type.IsValueType);
MetadataSystem.TryProcessPrimitiveTypeReference (reference); MetadataSystem.TryProcessPrimitiveTypeReference (reference);
@ -518,7 +523,12 @@ namespace Mono.Cecil {
return reference; return reference;
} }
IMetadataScope ImportScope (IMetadataScope scope) protected virtual IMetadataScope ImportScope (TypeReference type)
{
return ImportScope (type.Scope);
}
protected IMetadataScope ImportScope (IMetadataScope scope)
{ {
switch (scope.MetadataScopeType) { switch (scope.MetadataScopeType) {
case MetadataScopeType.AssemblyNameReference: case MetadataScopeType.AssemblyNameReference:

View File

@ -165,6 +165,8 @@ namespace Mono.Cecil {
// we reset Body to null in ILSpy to save memory; so we need that operation to be thread-safe // we reset Body to null in ILSpy to save memory; so we need that operation to be thread-safe
lock (module.SyncRoot) { lock (module.SyncRoot) {
body = value; body = value;
if (value == null)
this.debug_info = null;
} }
} }
} }

View File

@ -38,6 +38,7 @@ namespace Mono.Cecil {
Stream symbol_stream; Stream symbol_stream;
ISymbolReaderProvider symbol_reader_provider; ISymbolReaderProvider symbol_reader_provider;
bool read_symbols; bool read_symbols;
bool throw_symbols_mismatch;
bool projections; bool projections;
bool in_memory; bool in_memory;
bool read_write; bool read_write;
@ -89,6 +90,11 @@ namespace Mono.Cecil {
set { read_symbols = value; } set { read_symbols = value; }
} }
public bool ThrowIfSymbolsAreNotMatching {
get { return throw_symbols_mismatch; }
set { throw_symbols_mismatch = value; }
}
public bool ReadWrite { public bool ReadWrite {
get { return read_write; } get { return read_write; }
set { read_write = value; } set { read_write = value; }
@ -107,6 +113,7 @@ namespace Mono.Cecil {
public ReaderParameters (ReadingMode readingMode) public ReaderParameters (ReadingMode readingMode)
{ {
this.reading_mode = readingMode; this.reading_mode = readingMode;
this.throw_symbols_mismatch = true;
} }
} }
@ -691,7 +698,7 @@ namespace Mono.Cecil {
public TypeReference GetType (string fullName, bool runtimeName) public TypeReference GetType (string fullName, bool runtimeName)
{ {
return runtimeName return runtimeName
? TypeParser.ParseType (this, fullName) ? TypeParser.ParseType (this, fullName, typeDefinitionOnly: true)
: GetType (fullName); : GetType (fullName);
} }
@ -1077,10 +1084,15 @@ namespace Mono.Cecil {
throw new InvalidOperationException (); throw new InvalidOperationException ();
var provider = new DefaultSymbolReaderProvider (throwIfNoSymbol: true); var provider = new DefaultSymbolReaderProvider (throwIfNoSymbol: true);
ReadSymbols (provider.GetSymbolReader (this, file_name)); ReadSymbols (provider.GetSymbolReader (this, file_name), throwIfSymbolsAreNotMaching: true);
} }
public void ReadSymbols (ISymbolReader reader) public void ReadSymbols (ISymbolReader reader)
{
ReadSymbols(reader, throwIfSymbolsAreNotMaching: true);
}
public void ReadSymbols (ISymbolReader reader, bool throwIfSymbolsAreNotMaching)
{ {
if (reader == null) if (reader == null)
throw new ArgumentNullException ("reader"); throw new ArgumentNullException ("reader");
@ -1089,7 +1101,11 @@ namespace Mono.Cecil {
if (!symbol_reader.ProcessDebugHeader (GetDebugHeader ())) { if (!symbol_reader.ProcessDebugHeader (GetDebugHeader ())) {
symbol_reader = null; symbol_reader = null;
throw new InvalidOperationException ();
if (throwIfSymbolsAreNotMaching)
throw new SymbolsNotMatchingException ("Symbols were found but are not matching the assembly");
return;
} }
if (HasImage && ReadingMode == ReadingMode.Immediate) { if (HasImage && ReadingMode == ReadingMode.Immediate) {

View File

@ -234,20 +234,24 @@ namespace Mono.Cecil {
return fullname.Substring (start, position - start); return fullname.Substring (start, position - start);
} }
public static TypeReference ParseType (ModuleDefinition module, string fullname) public static TypeReference ParseType (ModuleDefinition module, string fullname, bool typeDefinitionOnly = false)
{ {
if (string.IsNullOrEmpty (fullname)) if (string.IsNullOrEmpty (fullname))
return null; return null;
var parser = new TypeParser (fullname); var parser = new TypeParser (fullname);
return GetTypeReference (module, parser.ParseType (true)); return GetTypeReference (module, parser.ParseType (true), typeDefinitionOnly);
} }
static TypeReference GetTypeReference (ModuleDefinition module, Type type_info) static TypeReference GetTypeReference (ModuleDefinition module, Type type_info, bool type_def_only)
{ {
TypeReference type; TypeReference type;
if (!TryGetDefinition (module, type_info, out type)) if (!TryGetDefinition (module, type_info, out type)) {
if (type_def_only)
return null;
type = CreateReference (type_info, module, GetMetadataScope (module, type_info)); type = CreateReference (type_info, module, GetMetadataScope (module, type_info));
}
return CreateSpecs (type, type_info); return CreateSpecs (type, type_info);
} }
@ -296,7 +300,7 @@ namespace Mono.Cecil {
var instance_arguments = instance.GenericArguments; var instance_arguments = instance.GenericArguments;
for (int i = 0; i < generic_arguments.Length; i++) for (int i = 0; i < generic_arguments.Length; i++)
instance_arguments.Add (GetTypeReference (type.Module, generic_arguments [i])); instance_arguments.Add (GetTypeReference (type.Module, generic_arguments [i], false));
return instance; return instance;
} }

View File

@ -11,10 +11,10 @@ using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
[assembly: AssemblyProduct (Consts.AssemblyName)] [assembly: AssemblyProduct (Consts.AssemblyName)]
[assembly: AssemblyCopyright ("Copyright © 2008 - 2015 Jb Evain")] [assembly: AssemblyCopyright ("Copyright © 2008 - 2018 Jb Evain")]
[assembly: ComVisible (false)] [assembly: ComVisible (false)]
[assembly: AssemblyVersion ("0.10.0.0")] [assembly: AssemblyVersion ("0.10.0.0")]
[assembly: AssemblyFileVersion ("0.10.0.0")] [assembly: AssemblyFileVersion ("0.10.0.0")]
[assembly: AssemblyInformationalVersion ("0.10.0.0-beta7")] [assembly: AssemblyInformationalVersion ("0.10.0.0")]

View File

@ -1,6 +1,7 @@
using System; using System;
using Mono.Cecil; using Mono.Cecil;
using Mono.Cecil.Cil;
using NUnit.Framework; using NUnit.Framework;
@ -91,15 +92,16 @@ namespace Mono.Cecil.Tests {
} }
[Test] [Test]
public void MismatchedLibraryAndSymbols_DoNotThrow () public void MismatchedLibraryAndSymbols ()
{ {
// SQLite-net.dll (from nuget) shiped with mismatched symbol files, but throwIfNoSymbol did not prevent it from throwing // SQLite-net.dll (from nuget) shiped with mismatched symbol files, but throwIfNoSymbol did not prevent it from throwing
var readerParms = new ReaderParameters { var parameters = new ReaderParameters {
ReadSymbols = true, ReadSymbols = true,
SymbolReaderProvider = new Cil.DefaultSymbolReaderProvider (throwIfNoSymbol: false) SymbolReaderProvider = new DefaultSymbolReaderProvider (throwIfNoSymbol: false),
ThrowIfSymbolsAreNotMatching = false,
}; };
using (var module = GetResourceModule ("SQLite-net.dll", readerParms)) { using (var module = GetResourceModule ("SQLite-net.dll", parameters)) {
Assert.Null (module.SymbolReader); Assert.Null (module.SymbolReader);
} }
} }

View File

@ -254,6 +254,15 @@ namespace Mono.Cecil.Tests {
} }
} }
[Test]
public void GetNonExistentTypeRuntimeName ()
{
using (var module = GetResourceModule ("libhello.dll")) {
var type = module.GetType ("DoesNotExist", runtimeName: true);
Assert.IsNull (type);
}
}
[Test] [Test]
public void OpenModuleImmediate () public void OpenModuleImmediate ()
{ {

View File

@ -50,6 +50,36 @@ namespace Mono.Cecil.Tests {
Assert.AreEqual (typeof (PortablePdbReader), module.SymbolReader.GetType ()); Assert.AreEqual (typeof (PortablePdbReader), module.SymbolReader.GetType ());
}, symbolReaderProvider: typeof (DefaultSymbolReaderProvider), symbolWriterProvider: typeof (DefaultSymbolWriterProvider), verify: !Platform.OnMono); }, symbolReaderProvider: typeof (DefaultSymbolReaderProvider), symbolWriterProvider: typeof (DefaultSymbolWriterProvider), verify: !Platform.OnMono);
} }
[Test]
public void MdbMismatch ()
{
Assert.Throws<SymbolsNotMatchingException> (() => GetResourceModule ("mdb-mismatch.dll", new ReaderParameters { SymbolReaderProvider = new MdbReaderProvider () }));
}
[Test]
public void MdbIgnoreMismatch()
{
using (var module = GetResourceModule ("mdb-mismatch.dll", new ReaderParameters { SymbolReaderProvider = new MdbReaderProvider (), ThrowIfSymbolsAreNotMatching = false })) {
Assert.IsNull (module.SymbolReader);
Assert.IsFalse (module.HasSymbols);
}
}
[Test]
public void PortablePdbMismatch ()
{
Assert.Throws<SymbolsNotMatchingException> (() => GetResourceModule ("pdb-mismatch.dll", new ReaderParameters { SymbolReaderProvider = new PortablePdbReaderProvider () }));
}
[Test]
public void PortablePdbIgnoreMismatch()
{
using (var module = GetResourceModule ("pdb-mismatch.dll", new ReaderParameters { SymbolReaderProvider = new PortablePdbReaderProvider (), ThrowIfSymbolsAreNotMatching = false })) {
Assert.IsNull (module.SymbolReader);
Assert.IsFalse (module.HasSymbols);
}
}
} }
} }
#endif #endif

Binary file not shown.

Binary file not shown.

View File

@ -25,7 +25,7 @@ namespace Mono.Cecil.Mdb {
Mixin.CheckModule (module); Mixin.CheckModule (module);
Mixin.CheckFileName (fileName); Mixin.CheckFileName (fileName);
return new MdbReader (module, MonoSymbolFile.ReadSymbolFile (Mixin.GetMdbFileName (fileName), module.Mvid)); return new MdbReader (module, MonoSymbolFile.ReadSymbolFile (Mixin.GetMdbFileName (fileName)));
} }
public ISymbolReader GetSymbolReader (ModuleDefinition module, Stream symbolStream) public ISymbolReader GetSymbolReader (ModuleDefinition module, Stream symbolStream)
@ -33,15 +33,7 @@ namespace Mono.Cecil.Mdb {
Mixin.CheckModule (module); Mixin.CheckModule (module);
Mixin.CheckStream (symbolStream); Mixin.CheckStream (symbolStream);
var file = MonoSymbolFile.ReadSymbolFile (symbolStream); return new MdbReader (module, MonoSymbolFile.ReadSymbolFile (symbolStream));
if (module.Mvid != file.Guid) {
var file_stream = symbolStream as FileStream;
if (file_stream != null)
throw new MonoSymbolFileException ("Symbol file `{0}' does not match assembly", file_stream.Name);
throw new MonoSymbolFileException ("Symbol file from stream does not match assembly");
}
return new MdbReader (module, file);
} }
} }

View File

@ -280,7 +280,7 @@ namespace Mono.Cecil.Pdb {
target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = value }; target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = value };
break; break;
case 'T': { case 'T': {
var type = module.GetType (value, runtimeName: true); var type = TypeParser.ParseType (module, value);
if (type != null) if (type != null)
target = new ImportTarget (ImportTargetKind.ImportType) { type = type }; target = new ImportTarget (ImportTargetKind.ImportType) { type = type };
break; break;
@ -298,7 +298,7 @@ namespace Mono.Cecil.Pdb {
target = new ImportTarget (ImportTargetKind.DefineNamespaceAlias) { alias = alias_value, @namespace = alias_target_value }; target = new ImportTarget (ImportTargetKind.DefineNamespaceAlias) { alias = alias_value, @namespace = alias_target_value };
break; break;
case 'T': case 'T':
var type = module.GetType (alias_target_value, runtimeName: true); var type = TypeParser.ParseType (module, alias_target_value);
if (type != null) if (type != null)
target = new ImportTarget (ImportTargetKind.DefineTypeAlias) { alias = alias_value, type = type }; target = new ImportTarget (ImportTargetKind.DefineTypeAlias) { alias = alias_value, type = type };
break; break;

View File

@ -253,9 +253,9 @@ namespace Mono.Cecil.Pdb {
doc_writer = writer.DefineDocument ( doc_writer = writer.DefineDocument (
document.Url, document.Url,
document.Language.ToGuid (), document.LanguageGuid,
document.LanguageVendor.ToGuid (), document.LanguageVendorGuid,
document.Type.ToGuid ()); document.TypeGuid);
documents [document.Url] = doc_writer; documents [document.Url] = doc_writer;
return doc_writer; return doc_writer;

View File

@ -34,7 +34,7 @@ static class Consts
// Use these assembly version constants to make code more maintainable. // Use these assembly version constants to make code more maintainable.
// //
public const string MonoVersion = "5.14.0.103"; public const string MonoVersion = "5.14.0.106";
public const string MonoCompany = "Mono development team"; public const string MonoCompany = "Mono development team";
public const string MonoProduct = "Mono Common Language Infrastructure"; public const string MonoProduct = "Mono Common Language Infrastructure";
public const string MonoCopyright = "(c) Various Mono authors"; public const string MonoCopyright = "(c) Various Mono authors";

View File

@ -1 +1 @@
d7eb5a10aae99a897f8c1b6f49f3df205695cbf3 3559a3e02c5dc456d54813f73b2fe6f3af0bb4d6

View File

@ -1 +1 @@
1fce0633a2a5188d412fa7bed6596cdbf46eed99 129ab913900114a8d0f28d1265f1471ea5ba59eb

View File

@ -1 +1 @@
5df81156024fc164400114fca16e4f834ba26389 5e8e1068810ccefe04b97cf9ca597fab19ac0830

View File

@ -1 +1 @@
e394ddb4f7e90f8160b816ceb2f3ddfd6ec43b20 da08516dbc3be151cf2f5dd377974c12381c4068

View File

@ -1 +1 @@
c9706b15a376f8937072f1dfbd168d1058896a6e 558a00057cc298b354703a620439f584959700b1

View File

@ -1 +1 @@
c34d1c37d97cfc74cfd58b908db37dba0cc12f68 39cae281b4318f17089328b276ac239685617229

View File

@ -1 +1 @@
7df9781615674ecdde80b8234d890a4ff3983533 e033707f206b6be5a0ece88ee123586b50e7df2b

View File

@ -1 +1 @@
45fc2f719b760217c096d2e896ae9a39a2f6c446 83885ee63eb1c49bc8c3668510611bc45a65c00d

View File

@ -1 +1 @@
d7eb5a10aae99a897f8c1b6f49f3df205695cbf3 3559a3e02c5dc456d54813f73b2fe6f3af0bb4d6

View File

@ -1 +1 @@
1fce0633a2a5188d412fa7bed6596cdbf46eed99 129ab913900114a8d0f28d1265f1471ea5ba59eb

View File

@ -1 +1 @@
5df81156024fc164400114fca16e4f834ba26389 5e8e1068810ccefe04b97cf9ca597fab19ac0830

View File

@ -1 +1 @@
e394ddb4f7e90f8160b816ceb2f3ddfd6ec43b20 da08516dbc3be151cf2f5dd377974c12381c4068

View File

@ -1 +1 @@
c9706b15a376f8937072f1dfbd168d1058896a6e 558a00057cc298b354703a620439f584959700b1

View File

@ -1 +1 @@
c34d1c37d97cfc74cfd58b908db37dba0cc12f68 39cae281b4318f17089328b276ac239685617229

View File

@ -1 +1 @@
7df9781615674ecdde80b8234d890a4ff3983533 e033707f206b6be5a0ece88ee123586b50e7df2b

View File

@ -1 +1 @@
45fc2f719b760217c096d2e896ae9a39a2f6c446 83885ee63eb1c49bc8c3668510611bc45a65c00d

View File

@ -1 +1 @@
d7eb5a10aae99a897f8c1b6f49f3df205695cbf3 3559a3e02c5dc456d54813f73b2fe6f3af0bb4d6

View File

@ -1 +1 @@
1fce0633a2a5188d412fa7bed6596cdbf46eed99 129ab913900114a8d0f28d1265f1471ea5ba59eb

View File

@ -1 +1 @@
5df81156024fc164400114fca16e4f834ba26389 5e8e1068810ccefe04b97cf9ca597fab19ac0830

View File

@ -1 +1 @@
e394ddb4f7e90f8160b816ceb2f3ddfd6ec43b20 da08516dbc3be151cf2f5dd377974c12381c4068

View File

@ -1 +1 @@
c9706b15a376f8937072f1dfbd168d1058896a6e 558a00057cc298b354703a620439f584959700b1

View File

@ -1 +1 @@
c34d1c37d97cfc74cfd58b908db37dba0cc12f68 39cae281b4318f17089328b276ac239685617229

View File

@ -1 +1 @@
7df9781615674ecdde80b8234d890a4ff3983533 e033707f206b6be5a0ece88ee123586b50e7df2b

View File

@ -1 +1 @@
45fc2f719b760217c096d2e896ae9a39a2f6c446 83885ee63eb1c49bc8c3668510611bc45a65c00d

View File

@ -1 +1 @@
#define FULL_VERSION "explicit/8c55e41" #define FULL_VERSION "explicit/820bff2"

View File

@ -1 +1 @@
fcdfbcba9993acf7ced4f9ad09252a3629d03d3a a09a131b494cec226ff30b01c801a917449833a0

View File

@ -1676,3 +1676,24 @@ mono_threads_join_unlock (void)
mono_os_mutex_unlock (&join_mutex); mono_os_mutex_unlock (&join_mutex);
#endif #endif
} }
gboolean
mono_thread_info_set_tools_data (void *data)
{
MonoThreadInfo *info = mono_thread_info_current_unchecked ();
if (!info)
return FALSE;
if (info->tools_data)
return FALSE;
info->tools_data = data;
return TRUE;
}
void*
mono_thread_info_get_tools_data (void)
{
MonoThreadInfo *info = mono_thread_info_current_unchecked ();
return info ? info->tools_data : NULL;
}

View File

@ -260,6 +260,12 @@ typedef struct {
gint32 thread_wait_info; gint32 thread_wait_info;
#endif #endif
/*
* This is where we store tools tls data so it follows our lifecycle and doesn't depends on posix tls cleanup ordering
*
* TODO support multiple values by multiple tools
*/
void *tools_data;
} MonoThreadInfo; } MonoThreadInfo;
typedef struct { typedef struct {
@ -374,7 +380,7 @@ mono_threads_get_runtime_callbacks (void);
MONO_API int MONO_API int
mono_thread_info_register_small_id (void); mono_thread_info_register_small_id (void);
THREAD_INFO_TYPE * MONO_API THREAD_INFO_TYPE *
mono_thread_info_attach (void); mono_thread_info_attach (void);
MONO_API void MONO_API void
@ -395,6 +401,13 @@ mono_thread_info_is_exiting (void);
THREAD_INFO_TYPE * THREAD_INFO_TYPE *
mono_thread_info_current (void); mono_thread_info_current (void);
MONO_API gboolean
mono_thread_info_set_tools_data (void *data);
MONO_API void*
mono_thread_info_get_tools_data (void);
THREAD_INFO_TYPE* THREAD_INFO_TYPE*
mono_thread_info_current_unchecked (void); mono_thread_info_current_unchecked (void);

Binary file not shown.

View File

@ -1 +1 @@
7724023d7bbd0c27a29e20cfd192b6f0c87f8e46 993e91d118061cb6c998fd8fd93e0c1f56512878

Binary file not shown.

View File

@ -1 +1 @@
4541123f4a3b60c078f9453b0aee658b5d9f84d8 5a0116507c6e2aca6f921a00369b6f9cfab68606

Binary file not shown.

View File

@ -1 +1 @@
69665d4daa34511c8358f5081b675ed8491a37ed a336321819d17f5fc46f82bff2ebbe6a0a2f139a

View File

@ -6,9 +6,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mono 5.14.0.103\n" "Project-Id-Version: mono 5.14.0.106\n"
"Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n" "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
"POT-Creation-Date: 2018-05-25 08:15+0000\n" "POT-Creation-Date: 2018-05-26 08:15+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

Binary file not shown.

View File

@ -1 +1 @@
8a5f460a338d9e65fe7009b48441ceac63a6fa5d 6d97519d1d89ee8964144aec48af09514b2a223b