Imported Upstream version 5.20.0.208

Former-commit-id: 8fbf7dae6cd486bffb1fa6a52020e8eb23c570b1
This commit is contained in:
Xamarin Public Jenkins (auto-signing) 2019-02-13 08:25:33 +00:00
parent 5d930a31c6
commit 219eec173f
74 changed files with 391 additions and 163 deletions

View File

@ -1 +1 @@
88af1283ee7ed4bfd171ac03a450d09684d3fdb3
a95e320dc816cf245e735ade01aba6ea08cc8dfb

View File

@ -1 +1 @@
e2ff7c6aca9e90849d3f357529d3bbb884829755
7fc911b48686244d25c2890ed5bf73bcc205f10a

View File

@ -2,12 +2,12 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
[assembly:System.Reflection.AssemblyVersionAttribute("0.10.1.0")]
[assembly:System.Reflection.AssemblyVersionAttribute("0.10.3.0")]
[assembly:System.CLSCompliantAttribute(false)]
[assembly:System.Diagnostics.DebuggableAttribute((System.Diagnostics.DebuggableAttribute.DebuggingModes)(2))]
[assembly:System.Reflection.AssemblyCopyrightAttribute("Copyright © 2008 - 2018 Jb Evain")]
[assembly:System.Reflection.AssemblyFileVersionAttribute("0.10.1.0")]
[assembly:System.Reflection.AssemblyInformationalVersionAttribute("0.10.1.0")]
[assembly:System.Reflection.AssemblyFileVersionAttribute("0.10.3.0")]
[assembly:System.Reflection.AssemblyInformationalVersionAttribute("0.10.3.0")]
[assembly:System.Reflection.AssemblyProductAttribute("Mono.Cecil")]
[assembly:System.Reflection.AssemblyTitleAttribute("Mono.Cecil.Mdb")]
[assembly:System.Runtime.CompilerServices.CompilationRelaxationsAttribute(8)]

View File

@ -1 +1 @@
19b503b65f6796fbd03668ae2a73555fcb8fda32
3378e64a4e2dd96212fc88a657abe1ac071ddc16

View File

@ -4,7 +4,7 @@ class FontConfigPackage (Package):
Package.__init__(self, 'fontconfig', '2.10.2',
configure_flags=['--disable-docs'],
sources=[
'http://www.fontconfig.org/release/%{name}-%{version}.tar.gz'
'https://www.freedesktop.org/software/fontconfig/release/%{name}-%{version}.tar.gz'
],
# note: a non-empty DESTDIR keeps fc-cache from running at
# install-time

View File

@ -253,12 +253,7 @@ namespace Mono.Cecil.Cil {
}
}
interface IMetadataSymbolWriter : ISymbolWriter {
void SetMetadata (MetadataBuilder metadata);
void WriteModule ();
}
public sealed class PortablePdbWriter : ISymbolWriter, IMetadataSymbolWriter {
public sealed class PortablePdbWriter : ISymbolWriter {
readonly MetadataBuilder pdb_metadata;
readonly ModuleDefinition module;
@ -272,6 +267,13 @@ namespace Mono.Cecil.Cil {
{
this.pdb_metadata = pdb_metadata;
this.module = module;
this.module_metadata = module.metadata_builder;
if (module_metadata != pdb_metadata)
this.pdb_metadata.metadata_builder = this.module_metadata;
pdb_metadata.AddCustomDebugInformations (module);
}
internal PortablePdbWriter (MetadataBuilder pdb_metadata, ModuleDefinition module, ImageWriter writer)
@ -280,19 +282,6 @@ namespace Mono.Cecil.Cil {
this.writer = writer;
}
void IMetadataSymbolWriter.SetMetadata (MetadataBuilder metadata)
{
this.module_metadata = metadata;
if (module_metadata != pdb_metadata)
this.pdb_metadata.metadata_builder = metadata;
}
void IMetadataSymbolWriter.WriteModule ()
{
pdb_metadata.AddCustomDebugInformations (module);
}
public ISymbolReaderProvider GetReaderProvider ()
{
return new PortablePdbReaderProvider ();
@ -318,11 +307,7 @@ namespace Mono.Cecil.Cil {
// PDB Age
buffer.WriteUInt32 (1);
// PDB Path
var filename = writer.BaseStream.GetFileName ();
if (!string.IsNullOrEmpty (filename))
filename = Path.GetFileName (filename);
buffer.WriteBytes (System.Text.Encoding.UTF8.GetBytes (filename));
buffer.WriteBytes (System.Text.Encoding.UTF8.GetBytes (writer.BaseStream.GetFileName ()));
buffer.WriteByte (0);
var data = new byte [buffer.length];
@ -428,7 +413,7 @@ namespace Mono.Cecil.Cil {
}
}
public sealed class EmbeddedPortablePdbWriter : ISymbolWriter, IMetadataSymbolWriter {
public sealed class EmbeddedPortablePdbWriter : ISymbolWriter {
readonly Stream stream;
readonly PortablePdbWriter writer;
@ -485,16 +470,6 @@ namespace Mono.Cecil.Cil {
public void Dispose ()
{
}
void IMetadataSymbolWriter.SetMetadata (MetadataBuilder metadata)
{
((IMetadataSymbolWriter) writer).SetMetadata (metadata);
}
void IMetadataSymbolWriter.WriteModule ()
{
((IMetadataSymbolWriter) writer).WriteModule ();
}
}
#endif

View File

@ -943,6 +943,11 @@ namespace Mono.Cecil.Cil {
var name = new SR.AssemblyName {
Name = cecil_name.Name + "." + suffix,
Version = cecil_name.Version,
#if NET_CORE
CultureName = cecil_name.CultureName,
#else
CultureInfo = cecil_name.CultureInfo,
#endif
};
name.SetPublicKeyToken (cecil_name.GetPublicKeyToken ());

View File

@ -29,6 +29,8 @@ namespace Mono.Cecil.PE {
public TargetArchitecture Architecture;
public ModuleCharacteristics Characteristics;
public ushort LinkerVersion;
public ushort SubSystemMajor;
public ushort SubSystemMinor;
public ImageDebugHeader DebugHeader;

View File

@ -81,8 +81,8 @@ namespace Mono.Cecil.PE {
// Characteristics 2
ushort characteristics = ReadUInt16 ();
ushort subsystem, dll_characteristics, linker_version;
ReadOptionalHeaders (out subsystem, out dll_characteristics, out linker_version);
ushort subsystem, dll_characteristics;
ReadOptionalHeaders (out subsystem, out dll_characteristics);
ReadSections (sections);
ReadCLIHeader ();
ReadMetadata ();
@ -90,7 +90,6 @@ namespace Mono.Cecil.PE {
image.Kind = GetModuleKind (characteristics, subsystem);
image.Characteristics = (ModuleCharacteristics) dll_characteristics;
image.LinkerVersion = linker_version;
}
TargetArchitecture ReadArchitecture ()
@ -109,7 +108,7 @@ namespace Mono.Cecil.PE {
return ModuleKind.Console;
}
void ReadOptionalHeaders (out ushort subsystem, out ushort dll_characteristics, out ushort linker)
void ReadOptionalHeaders (out ushort subsystem, out ushort dll_characteristics)
{
// - PEOptionalHeader
// - StandardFieldsHeader
@ -119,7 +118,7 @@ namespace Mono.Cecil.PE {
// pe32 || pe64
linker = ReadUInt16 ();
image.LinkerVersion = ReadUInt16 ();
// CodeSize 4
// InitializedDataSize 4
// UninitializedDataSize4
@ -138,11 +137,16 @@ namespace Mono.Cecil.PE {
// UserMinor 2
// SubSysMajor 2
// SubSysMinor 2
Advance(44);
image.SubSystemMajor = ReadUInt16 ();
image.SubSystemMinor = ReadUInt16 ();
// Reserved 4
// ImageSize 4
// HeaderSize 4
// FileChecksum 4
Advance (64);
Advance (16);
// SubSystem 2
subsystem = ReadUInt16 ();

View File

@ -243,8 +243,8 @@ namespace Mono.Cecil.PE {
WriteUInt16 (0); // OSMinor
WriteUInt16 (0); // UserMajor
WriteUInt16 (0); // UserMinor
WriteUInt16 (4); // SubSysMajor
WriteUInt16 (0); // SubSysMinor
WriteUInt16 (module.subsystem_major); // SubSysMajor
WriteUInt16 (module.subsystem_minor); // SubSysMinor
WriteUInt32 (0); // Reserved
var last_section = LastSection();
@ -255,17 +255,22 @@ namespace Mono.Cecil.PE {
WriteUInt16 (GetSubSystem ()); // SubSystem
WriteUInt16 ((ushort) module.Characteristics); // DLLFlags
const ulong stack_reserve = 0x100000;
const ulong stack_commit = 0x1000;
const ulong heap_reserve = 0x100000;
const ulong heap_commit = 0x1000;
if (!pe64) {
WriteUInt32 ((uint) stack_reserve);
WriteUInt32 ((uint) stack_commit);
WriteUInt32 ((uint) heap_reserve);
WriteUInt32 ((uint) heap_commit);
const uint stack_reserve = 0x100000;
const uint stack_commit = 0x1000;
const uint heap_reserve = 0x100000;
const uint heap_commit = 0x1000;
WriteUInt32 (stack_reserve);
WriteUInt32 (stack_commit);
WriteUInt32 (heap_reserve);
WriteUInt32 (heap_commit);
} else {
const ulong stack_reserve = 0x400000;
const ulong stack_commit = 0x4000;
const ulong heap_reserve = 0x100000;
const ulong heap_commit = 0x2000;
WriteUInt64 (stack_reserve);
WriteUInt64 (stack_commit);
WriteUInt64 (heap_reserve);

View File

@ -2,7 +2,7 @@
<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">
<id>Mono.Cecil</id>
<version>0.10.1.0</version>
<version>0.10.3.0</version>
<title>Mono.Cecil</title>
<authors>Jb Evain</authors>
<owners>Jb Evain</owners>

View File

@ -1119,11 +1119,14 @@ namespace Mono.Cecil {
metadata.AddTypeReference (type);
if (scope_token.TokenType == TokenType.TypeRef) {
declaring_type = GetTypeDefOrRef (scope_token);
if (scope_token.RID != rid) {
declaring_type = GetTypeDefOrRef (scope_token);
scope = declaring_type != null
? declaring_type.Scope
: module;
scope = declaring_type != null
? declaring_type.Scope
: module;
} else // obfuscated typeref row pointing to self
scope = module;
} else
scope = GetTypeReferenceScope (scope_token);
@ -3766,7 +3769,7 @@ namespace Mono.Cecil {
if (length == 0)
return string.Empty;
if (position + length >= buffer.Length)
if (position + length > buffer.Length)
return string.Empty;
var @string = Encoding.UTF8.GetString (buffer, position, length);

View File

@ -110,18 +110,25 @@ namespace Mono.Cecil {
}
#endif
using (var symbol_writer = GetSymbolWriter (module, fq_name, symbol_writer_provider, parameters)) {
var metadata = new MetadataBuilder (module, fq_name, timestamp, symbol_writer_provider, symbol_writer);
BuildMetadata (module, metadata);
var metadata = new MetadataBuilder (module, fq_name, timestamp, symbol_writer_provider);
try {
module.metadata_builder = metadata;
var writer = ImageWriter.CreateWriter (module, metadata, stream);
stream.value.SetLength (0);
writer.WriteImage ();
using (var symbol_writer = GetSymbolWriter (module, fq_name, symbol_writer_provider, parameters)) {
metadata.SetSymbolWriter (symbol_writer);
BuildMetadata (module, metadata);
var writer = ImageWriter.CreateWriter (module, metadata, stream);
stream.value.SetLength (0);
writer.WriteImage ();
#if !NET_CORE
if (parameters.StrongNameKeyPair != null)
CryptoService.StrongName (stream.value, writer, parameters.StrongNameKeyPair);
if (parameters.StrongNameKeyPair != null)
CryptoService.StrongName (stream.value, writer, parameters.StrongNameKeyPair);
#endif
}
} finally {
module.metadata_builder = null;
}
}
@ -209,10 +216,10 @@ namespace Mono.Cecil {
public sealed override void Sort ()
{
Array.Sort (rows, 0, length, this);
MergeSort<TRow>.Sort (rows, 0, this.length, this);
}
protected int Compare (uint x, uint y)
protected static int Compare (uint x, uint y)
{
return x == y ? 0 : x > y ? 1 : -1;
}
@ -796,7 +803,7 @@ namespace Mono.Cecil {
readonly internal ModuleDefinition module;
readonly internal ISymbolWriterProvider symbol_writer_provider;
readonly internal ISymbolWriter symbol_writer;
internal ISymbolWriter symbol_writer;
readonly internal TextMap text_map;
readonly internal string fq_name;
readonly internal uint timestamp;
@ -846,8 +853,6 @@ namespace Mono.Cecil {
readonly TypeSpecTable typespec_table;
readonly MethodSpecTable method_spec_table;
readonly bool portable_pdb;
internal MetadataBuilder metadata_builder;
readonly DocumentTable document_table;
@ -862,7 +867,7 @@ namespace Mono.Cecil {
readonly Dictionary<ImportScopeRow, MetadataToken> import_scope_map;
readonly Dictionary<string, MetadataToken> document_map;
public MetadataBuilder (ModuleDefinition module, string fq_name, uint timestamp, ISymbolWriterProvider symbol_writer_provider, ISymbolWriter symbol_writer)
public MetadataBuilder (ModuleDefinition module, string fq_name, uint timestamp, ISymbolWriterProvider symbol_writer_provider)
{
this.module = module;
this.text_map = CreateTextMap ();
@ -870,18 +875,6 @@ namespace Mono.Cecil {
this.timestamp = timestamp;
this.symbol_writer_provider = symbol_writer_provider;
if (symbol_writer == null && module.HasImage && module.Image.HasDebugTables ()) {
symbol_writer = new PortablePdbWriter (this, module);
}
this.symbol_writer = symbol_writer;
var pdb_writer = symbol_writer as IMetadataSymbolWriter;
if (pdb_writer != null) {
portable_pdb = true;
pdb_writer.SetMetadata (this);
}
this.code = new CodeWriter (this);
this.data = new DataBuffer ();
this.resources = new ResourceBuffer ();
@ -916,9 +909,6 @@ namespace Mono.Cecil {
method_spec_map = new Dictionary<MethodSpecRow, MetadataToken> (row_equality_comparer);
generic_parameters = new Collection<GenericParameter> ();
if (!portable_pdb)
return;
this.document_table = GetTable<DocumentTable> (Table.Document);
this.method_debug_information_table = GetTable<MethodDebugInformationTable> (Table.MethodDebugInformation);
this.local_scope_table = GetTable<LocalScopeTable> (Table.LocalScope);
@ -937,7 +927,6 @@ namespace Mono.Cecil {
this.module = module;
this.text_map = new TextMap ();
this.symbol_writer_provider = writer_provider;
this.portable_pdb = true;
this.string_heap = new StringHeapBuffer ();
this.guid_heap = new GuidHeapBuffer ();
@ -961,6 +950,14 @@ namespace Mono.Cecil {
this.import_scope_map = new Dictionary<ImportScopeRow, MetadataToken> (row_equality_comparer);
}
public void SetSymbolWriter (ISymbolWriter writer)
{
symbol_writer = writer;
if (symbol_writer == null && module.HasImage && module.Image.HasDebugTables ())
symbol_writer = new PortablePdbWriter (this, module);
}
TextMap CreateTextMap ()
{
var map = new TextMap ();
@ -1050,10 +1047,6 @@ namespace Mono.Cecil {
if (module.EntryPoint != null)
entry_point = LookupToken (module.EntryPoint);
var pdb_writer = symbol_writer as IMetadataSymbolWriter;
if (pdb_writer != null)
pdb_writer.WriteModule ();
}
void BuildAssembly ()

View File

@ -265,7 +265,7 @@ namespace Mono.Cecil {
if (version.MajorRevision == 3300)
path = Path.Combine (path, "v1.0.3705");
else
path = Path.Combine (path, "v1.0.5000.0");
path = Path.Combine (path, "v1.1.4322");
break;
case 2:
path = Path.Combine (path, "v2.0.50727");

View File

@ -180,6 +180,9 @@ namespace Mono.Cecil {
return debug_info ?? (debug_info = new MethodDebugInformation (this));
}
set {
debug_info = value;
}
}
public bool HasPInvokeInfo {

View File

@ -183,7 +183,7 @@ namespace Mono.Cecil {
public static bool IsVarArg (this IMethodSignature self)
{
return (self.CallingConvention & MethodCallingConvention.VarArg) != 0;
return self.CallingConvention == MethodCallingConvention.VarArg;
}
public static int GetSentinelPosition (this IMethodSignature self)

View File

@ -283,8 +283,11 @@ namespace Mono.Cecil {
TargetArchitecture architecture;
ModuleAttributes attributes;
ModuleCharacteristics characteristics;
internal ushort linker_version = 8;
Guid mvid;
internal ushort linker_version = 8;
internal ushort subsystem_major = 4;
internal ushort subsystem_minor = 0;
internal uint timestamp;
internal AssemblyDefinition assembly;
@ -304,6 +307,10 @@ namespace Mono.Cecil {
internal Collection<CustomDebugInformation> custom_infos;
#if !READ_ONLY
internal MetadataBuilder metadata_builder;
#endif
public bool IsMain {
get { return kind != ModuleKind.NetModule; }
}
@ -616,6 +623,8 @@ namespace Mono.Cecil {
this.attributes = image.Attributes;
this.characteristics = image.Characteristics;
this.linker_version = image.LinkerVersion;
this.subsystem_major = image.SubSystemMajor;
this.subsystem_minor = image.SubSystemMinor;
this.file_name = image.FileName;
this.timestamp = image.Timestamp;

66
external/cecil/Mono/MergeSort.cs vendored Normal file
View File

@ -0,0 +1,66 @@
//
// Author:
// Jb Evain (jbevain@gmail.com)
//
// Copyright (c) 2008 - 2015 Jb Evain
// Copyright (c) 2008 - 2011 Novell, Inc.
//
// Licensed under the MIT/X11 license.
//
using System;
using System.Collections.Generic;
namespace Mono {
class MergeSort<T> {
private readonly T [] elements;
private readonly T [] buffer;
private readonly IComparer<T> comparer;
private MergeSort (T [] elements, IComparer<T> comparer)
{
this.elements = elements;
this.buffer = new T [elements.Length];
Array.Copy (this.elements, this.buffer, elements.Length);
this.comparer = comparer;
}
public static void Sort (T [] source, IComparer<T> comparer)
{
Sort (source, 0, source.Length, comparer);
}
public static void Sort (T [] source, int start, int length, IComparer<T> comparer)
{
new MergeSort<T> (source, comparer).Sort (start, length);
}
private void Sort (int start, int length)
{
TopDownSplitMerge (this.buffer, this.elements, start, length);
}
private void TopDownSplitMerge (T [] a, T [] b, int start, int end)
{
if (end - start < 2)
return;
int middle = (end + start) / 2;
TopDownSplitMerge (b, a, start, middle);
TopDownSplitMerge (b, a, middle, end);
TopDownMerge (a, b, start, middle, end);
}
private void TopDownMerge (T [] a, T [] b, int start, int middle, int end)
{
for (int i = start, j = middle, k = start; k < end; k++) {
if (i < middle && (j >= end || comparer.Compare (a [i], a [j]) <= 0)) {
b [k] = a [i++];
} else {
b [k] = a [j++];
}
}
}
}
}

View File

@ -15,6 +15,6 @@ using System.Runtime.InteropServices;
[assembly: ComVisible (false)]
[assembly: AssemblyVersion ("0.10.1.0")]
[assembly: AssemblyFileVersion ("0.10.1.0")]
[assembly: AssemblyInformationalVersion ("0.10.1.0")]
[assembly: AssemblyVersion ("0.10.3.0")]
[assembly: AssemblyFileVersion ("0.10.3.0")]
[assembly: AssemblyInformationalVersion ("0.10.3.0")]

View File

@ -464,6 +464,35 @@ namespace Mono.Cecil.Tests {
});
}
[Test]
public void OrderedAttributes ()
{
TestModule ("ordered-attrs.exe", module => {
var type = module.GetType ("Program");
var method = type.GetMethod ("Main");
var attributes = method.CustomAttributes;
Assert.AreEqual (6, attributes.Count);
Assert.AreEqual ("AAttribute", attributes [0].AttributeType.Name);
Assert.AreEqual ("Main.A1", attributes [0].Fields [0].Argument.Value as string);
Assert.AreEqual ("AAttribute", attributes [1].AttributeType.Name);
Assert.AreEqual ("Main.A2", attributes [1].Fields [0].Argument.Value as string);
Assert.AreEqual ("BAttribute", attributes [2].AttributeType.Name);
Assert.AreEqual ("Main.B1", attributes [2].Fields [0].Argument.Value as string);
Assert.AreEqual ("AAttribute", attributes [3].AttributeType.Name);
Assert.AreEqual ("Main.A3", attributes [3].Fields [0].Argument.Value as string);
Assert.AreEqual ("BAttribute", attributes [4].AttributeType.Name);
Assert.AreEqual ("Main.B2", attributes [4].Fields [0].Argument.Value as string);
Assert.AreEqual ("BAttribute", attributes [5].AttributeType.Name);
Assert.AreEqual ("Main.B3", attributes [5].Fields [0].Argument.Value as string);
});
}
#if !READ_ONLY
[Test]
public void DefineCustomAttributeFromBlob ()

View File

@ -180,6 +180,8 @@ namespace Mono.Cecil.Tests {
TestModule("winrtcomp.winmd", module => {
Assert.IsTrue (module.Assembly.Name.IsWindowsRuntime);
Assert.AreEqual (6, module.Image.SubSystemMajor);
Assert.AreEqual (2, module.Image.SubSystemMinor);
}, verify: false, assemblyResolver: resolver);
}
#endif
@ -196,6 +198,15 @@ namespace Mono.Cecil.Tests {
});
}
[Test]
public void Net471TargetingAssembly ()
{
TestModule ("net471.exe", module => {
Assert.AreEqual (6, module.Image.SubSystemMajor);
Assert.AreEqual (0, module.Image.SubSystemMinor);
});
}
#if !READ_ONLY
[Test]
public void ExternalPdbDeterministicAssembly ()

View File

@ -6,6 +6,7 @@ using System.Text;
using NUnit.Framework;
using Mono.Cecil.Cil;
using Mono.Cecil.PE;
namespace Mono.Cecil.Tests {
@ -347,7 +348,6 @@ namespace Mono.Cecil.Tests {
});
}
#if !READ_ONLY
[Test]
public void EmbeddedCompressedPortablePdb ()
{
@ -373,7 +373,7 @@ namespace Mono.Cecil.Tests {
{
TestModule ("PdbTarget.exe", test, symbolReaderProvider: typeof (PortablePdbReaderProvider), symbolWriterProvider: typeof (PortablePdbWriterProvider));
TestModule ("EmbeddedPdbTarget.exe", test, verify: !Platform.OnMono);
TestModule("EmbeddedCompressedPdbTarget.exe", test, symbolReaderProvider: typeof(EmbeddedPortablePdbReaderProvider), symbolWriterProvider: typeof(EmbeddedPortablePdbWriterProvider));
TestModule ("EmbeddedCompressedPdbTarget.exe", test, symbolReaderProvider: typeof(EmbeddedPortablePdbReaderProvider), symbolWriterProvider: typeof(EmbeddedPortablePdbWriterProvider));
}
[Test]
@ -553,7 +553,123 @@ class Program
IL_0001: ret", main);
}, symbolReaderProvider: typeof (PortablePdbReaderProvider), symbolWriterProvider: typeof (PortablePdbWriterProvider));
}
#endif
public sealed class SymbolWriterProvider : ISymbolWriterProvider {
readonly DefaultSymbolWriterProvider writer_provider = new DefaultSymbolWriterProvider ();
public ISymbolWriter GetSymbolWriter (ModuleDefinition module, string fileName)
{
return new SymbolWriter (writer_provider.GetSymbolWriter (module, fileName));
}
public ISymbolWriter GetSymbolWriter (ModuleDefinition module, Stream symbolStream)
{
return new SymbolWriter (writer_provider.GetSymbolWriter (module, symbolStream));
}
}
public sealed class SymbolWriter : ISymbolWriter {
readonly ISymbolWriter symbol_writer;
public SymbolWriter (ISymbolWriter symbolWriter)
{
this.symbol_writer = symbolWriter;
}
public ImageDebugHeader GetDebugHeader ()
{
var header = symbol_writer.GetDebugHeader ();
if (!header.HasEntries)
return header;
for (int i = 0; i < header.Entries.Length; i++) {
header.Entries [i] = ProcessEntry (header.Entries [i]);
}
return header;
}
private static ImageDebugHeaderEntry ProcessEntry (ImageDebugHeaderEntry entry)
{
if (entry.Directory.Type != ImageDebugType.CodeView)
return entry;
var reader = new ByteBuffer (entry.Data);
var writer = new ByteBuffer ();
var sig = reader.ReadUInt32 ();
if (sig != 0x53445352)
return entry;
writer.WriteUInt32 (sig); // RSDS
writer.WriteBytes (reader.ReadBytes (16)); // MVID
writer.WriteUInt32 (reader.ReadUInt32 ()); // Age
var length = Array.IndexOf (entry.Data, (byte) 0, reader.position) - reader.position;
var fullPath = Encoding.UTF8.GetString (reader.ReadBytes (length));
writer.WriteBytes (Encoding.UTF8.GetBytes (Path.GetFileName (fullPath)));
writer.WriteByte (0);
var newData = new byte [writer.length];
Buffer.BlockCopy (writer.buffer, 0, newData, 0, writer.length);
var directory = entry.Directory;
directory.SizeOfData = newData.Length;
return new ImageDebugHeaderEntry (directory, newData);
}
public ISymbolReaderProvider GetReaderProvider ()
{
return symbol_writer.GetReaderProvider ();
}
public void Write (MethodDebugInformation info)
{
symbol_writer.Write (info);
}
public void Dispose ()
{
symbol_writer.Dispose ();
}
}
static string GetDebugHeaderPdbPath (ModuleDefinition module)
{
var header = module.GetDebugHeader ();
var cv = Mixin.GetCodeViewEntry (header);
Assert.IsNotNull (cv);
var length = Array.IndexOf (cv.Data, (byte)0, 24) - 24;
var bytes = new byte [length];
Buffer.BlockCopy (cv.Data, 24, bytes, 0, length);
return Encoding.UTF8.GetString (bytes);
}
[Test]
public void UseCustomSymbolWriterToChangeDebugHeaderPdbPath ()
{
const string resource = "mylib.dll";
string debug_header_pdb_path;
string dest = Path.Combine (Path.GetTempPath (), resource);
using (var module = GetResourceModule (resource, new ReaderParameters { SymbolReaderProvider = new PortablePdbReaderProvider () })) {
debug_header_pdb_path = GetDebugHeaderPdbPath (module);
Assert.IsTrue (Path.IsPathRooted (debug_header_pdb_path));
module.Write (dest, new WriterParameters { SymbolWriterProvider = new SymbolWriterProvider () });
}
using (var module = ModuleDefinition.ReadModule (dest, new ReaderParameters { SymbolReaderProvider = new PortablePdbReaderProvider () })) {
var pdb_path = GetDebugHeaderPdbPath (module);
Assert.IsFalse (Path.IsPathRooted (pdb_path));
Assert.AreEqual (Path.GetFileName (debug_header_pdb_path), pdb_path);
}
}
}
}
#endif

View File

@ -30,6 +30,8 @@ namespace Mono.Cecil.Tests {
});
}
#if !READ_ONLY
[Test]
public void EmptyStructLayout ()
{
@ -43,6 +45,8 @@ namespace Mono.Cecil.Tests {
}) ;
}
#endif
[Test]
public void SimpleInterfaces ()
{
@ -287,5 +291,12 @@ namespace Mono.Cecil.Tests {
Assert.AreEqual (MetadataType.Object, type.BaseType.MetadataType);
}
}
[Test]
public void SelfReferencingTypeRef ()
{
TestModule ("self-ref-typeref.dll", module => {
}, verify: false);
}
}
}

View File

@ -183,12 +183,12 @@ namespace Mono.Cecil.Pdb {
parent.variables = new Collection<VariableDebugInformation> (scope.slots.Length);
foreach (PdbSlot slot in scope.slots) {
if (slot.flags == 1) // parameter names
if ((slot.flags & 1) != 0) // parameter names
continue;
var index = (int) slot.slot;
var variable = new VariableDebugInformation (index, slot.name);
if (slot.flags == 4)
if ((slot.flags & 4) != 0)
variable.IsDebuggerHidden = true;
parent.variables.Add (variable);
}

View File

@ -22,18 +22,18 @@ using Mono.Collections.Generic;
namespace Mono.Cecil.Pdb {
public class NativePdbWriter : ISymbolWriter, IMetadataSymbolWriter {
public class NativePdbWriter : ISymbolWriter {
readonly ModuleDefinition module;
readonly MetadataBuilder metadata;
readonly SymWriter writer;
readonly Dictionary<string, SymDocumentWriter> documents;
readonly Dictionary<ImportDebugInformation, MetadataToken> import_info_to_parent;
MetadataBuilder metadata;
internal NativePdbWriter (ModuleDefinition module, SymWriter writer)
{
this.module = module;
this.metadata = module.metadata_builder;
this.writer = writer;
this.documents = new Dictionary<string, SymDocumentWriter> ();
this.import_info_to_parent = new Dictionary<ImportDebugInformation, MetadataToken> ();
@ -75,15 +75,6 @@ namespace Mono.Cecil.Pdb {
writer.CloseMethod ();
}
void IMetadataSymbolWriter.SetMetadata (MetadataBuilder metadata)
{
this.metadata = metadata;
}
void IMetadataSymbolWriter.WriteModule ()
{
}
void DefineCustomMetadata (MethodDebugInformation info, MetadataToken import_parent)
{
var metadata = new CustomMetadataWriter (this.writer);

View File

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

View File

@ -6,6 +6,6 @@ using System.Runtime.InteropServices;
internal static partial class Interop
{
[DllImport("__Internal")]
[DllImport("System.Native")]
internal static extern void mono_pal_init ();
}

View File

@ -13,3 +13,8 @@
../../../external/corefx/src/System.Net.Security/tests/UnitTests/Fakes/*.cs
../../../external/corefx/src/System.Text.RegularExpressions/tests/*.cs
System/RemoteExecutorTests.cs
# FileSystemWatcher_Path fails with "System.ArgumentException : The directory name is invalid"
../../../external/corefx/src/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.unit.cs

View File

@ -1 +1 @@
ac4040e2d669b15a51f36831721a799b30c9d9d8
ec92e2d26b2a065c44d46ddd58a6635a7a1d7410

View File

@ -1 +1 @@
0f75e4f8390e4bdc479ec1f677778a687fde86f5
ce9f6695f80917a3792dc8b3e0ab228d4f026b77

View File

@ -1 +1 @@
4c77f8350549d6bd4e462e2c6d9b54c9c8b8fc0c
e09358a1f156c34e495f035b21e98ad237432941

View File

@ -1 +1 @@
be1d05d050de6a4f697f1a317e38487f1dbd5d00
c2b5880df60f97dc434825f9741f338c9a389075

View File

@ -1 +1 @@
7521665fcd4d32a880a4e31f4ca3d99b041c44a4
144dfb17552321f1fc324baa2705072eadf4631a

View File

@ -1 +1 @@
33fbf9921b98825d625ab7f59c4dcb9497a58199
a04f70ae72cbd0e9fdbb28a9ae3ebc94644d61f3

View File

@ -1 +1 @@
f882d57297a4d6a2084f5cdfe09f95873e90c3b6
de944a8ca0f53d9beb831441bf670918d99eb0b7

View File

@ -1 +1 @@
73252d2aa0f1283520c252f37b07c2f39ec29a0a
740468bc8aba58f74f0b51b864be1d9ab1a12b57

View File

@ -1 +1 @@
ac4040e2d669b15a51f36831721a799b30c9d9d8
ec92e2d26b2a065c44d46ddd58a6635a7a1d7410

View File

@ -1 +1 @@
0f75e4f8390e4bdc479ec1f677778a687fde86f5
ce9f6695f80917a3792dc8b3e0ab228d4f026b77

View File

@ -1 +1 @@
4c77f8350549d6bd4e462e2c6d9b54c9c8b8fc0c
e09358a1f156c34e495f035b21e98ad237432941

View File

@ -1 +1 @@
be1d05d050de6a4f697f1a317e38487f1dbd5d00
c2b5880df60f97dc434825f9741f338c9a389075

View File

@ -1 +1 @@
7521665fcd4d32a880a4e31f4ca3d99b041c44a4
144dfb17552321f1fc324baa2705072eadf4631a

View File

@ -1 +1 @@
33fbf9921b98825d625ab7f59c4dcb9497a58199
a04f70ae72cbd0e9fdbb28a9ae3ebc94644d61f3

View File

@ -1 +1 @@
f882d57297a4d6a2084f5cdfe09f95873e90c3b6
de944a8ca0f53d9beb831441bf670918d99eb0b7

View File

@ -1 +1 @@
73252d2aa0f1283520c252f37b07c2f39ec29a0a
740468bc8aba58f74f0b51b864be1d9ab1a12b57

View File

@ -1 +1 @@
ac4040e2d669b15a51f36831721a799b30c9d9d8
ec92e2d26b2a065c44d46ddd58a6635a7a1d7410

View File

@ -1 +1 @@
0f75e4f8390e4bdc479ec1f677778a687fde86f5
ce9f6695f80917a3792dc8b3e0ab228d4f026b77

View File

@ -1 +1 @@
4c77f8350549d6bd4e462e2c6d9b54c9c8b8fc0c
e09358a1f156c34e495f035b21e98ad237432941

View File

@ -1 +1 @@
be1d05d050de6a4f697f1a317e38487f1dbd5d00
c2b5880df60f97dc434825f9741f338c9a389075

View File

@ -1 +1 @@
7521665fcd4d32a880a4e31f4ca3d99b041c44a4
144dfb17552321f1fc324baa2705072eadf4631a

View File

@ -1 +1 @@
33fbf9921b98825d625ab7f59c4dcb9497a58199
a04f70ae72cbd0e9fdbb28a9ae3ebc94644d61f3

View File

@ -1 +1 @@
f882d57297a4d6a2084f5cdfe09f95873e90c3b6
de944a8ca0f53d9beb831441bf670918d99eb0b7

View File

@ -1 +1 @@
73252d2aa0f1283520c252f37b07c2f39ec29a0a
740468bc8aba58f74f0b51b864be1d9ab1a12b57

View File

@ -1 +1 @@
ac4040e2d669b15a51f36831721a799b30c9d9d8
ec92e2d26b2a065c44d46ddd58a6635a7a1d7410

View File

@ -1 +1 @@
0f75e4f8390e4bdc479ec1f677778a687fde86f5
ce9f6695f80917a3792dc8b3e0ab228d4f026b77

View File

@ -1 +1 @@
4c77f8350549d6bd4e462e2c6d9b54c9c8b8fc0c
e09358a1f156c34e495f035b21e98ad237432941

View File

@ -1 +1 @@
be1d05d050de6a4f697f1a317e38487f1dbd5d00
c2b5880df60f97dc434825f9741f338c9a389075

View File

@ -1 +1 @@
7521665fcd4d32a880a4e31f4ca3d99b041c44a4
144dfb17552321f1fc324baa2705072eadf4631a

View File

@ -1 +1 @@
33fbf9921b98825d625ab7f59c4dcb9497a58199
a04f70ae72cbd0e9fdbb28a9ae3ebc94644d61f3

View File

@ -1 +1 @@
f882d57297a4d6a2084f5cdfe09f95873e90c3b6
de944a8ca0f53d9beb831441bf670918d99eb0b7

View File

@ -1 +1 @@
73252d2aa0f1283520c252f37b07c2f39ec29a0a
740468bc8aba58f74f0b51b864be1d9ab1a12b57

View File

@ -1 +1 @@
#define FULL_VERSION "explicit/2e7daaa"
#define FULL_VERSION "explicit/a5f5870"

Binary file not shown.

View File

@ -1 +1 @@
e83d18c42bf6f46f8583f99f88a920750bfc5f99
1e32347f121ae5150cd307e5861db70857226acc

Binary file not shown.

View File

@ -1 +1 @@
5e76b393a820e022814be58713599066fd4562a2
d3313606474d6b10f322bc7764f8ac25bd1ddb2c

Binary file not shown.

View File

@ -1 +1 @@
0929cffcf97adb47ce0707020cc83ff05fc2ff59
39addc88d6353d2c3a6ca19af5d8074c6c3dacba

View File

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: mono 5.20.0.203\n"
"Project-Id-Version: mono 5.20.0.208\n"
"Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
"POT-Creation-Date: 2019-02-12 08:09+0000\n"
"POT-Creation-Date: 2019-02-13 08:08+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

Binary file not shown.

View File

@ -1 +1 @@
1f493e1f79f3a383eaece83f315dfeba4df61823
f0789def8d8e2288bb54a50e8f1a50aba9bcc187