Imported Upstream version 5.4.0.167

Former-commit-id: 5624ac747d633e885131e8349322922b6a59baaa
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2017-08-21 15:34:15 +00:00
parent e49d6f06c0
commit 536cd135cc
12856 changed files with 563812 additions and 223249 deletions

View File

@@ -94,7 +94,11 @@ namespace Mono.Cecil.Cil {
var pdb_guid = new Guid (buffer);
return module_guid == pdb_guid;
if (module_guid != pdb_guid)
return false;
ReadModule ();
return true;
}
static int ReadInt32 (byte [] bytes, int start)
@@ -105,6 +109,11 @@ namespace Mono.Cecil.Cil {
| (bytes [start + 3] << 24));
}
void ReadModule ()
{
module.custom_infos = debug_reader.GetCustomDebugInformation (module);
}
public MethodDebugInformation Read (MethodDefinition method)
{
var info = new MethodDebugInformation (method);
@@ -247,6 +256,7 @@ namespace Mono.Cecil.Cil {
interface IMetadataSymbolWriter : ISymbolWriter {
void SetMetadata (MetadataBuilder metadata);
void WriteModule ();
}
public sealed class PortablePdbWriter : ISymbolWriter, IMetadataSymbolWriter {
@@ -279,6 +289,11 @@ namespace Mono.Cecil.Cil {
this.pdb_metadata.metadata_builder = metadata;
}
void IMetadataSymbolWriter.WriteModule ()
{
pdb_metadata.AddCustomDebugInformations (module);
}
public ISymbolReaderProvider GetReaderProvider ()
{
return new PortablePdbReaderProvider ();
@@ -474,6 +489,11 @@ namespace Mono.Cecil.Cil {
{
((IMetadataSymbolWriter) writer).SetMetadata (metadata);
}
void IMetadataSymbolWriter.WriteModule ()
{
((IMetadataSymbolWriter) writer).WriteModule ();
}
}
#endif

View File

@@ -433,6 +433,8 @@ namespace Mono.Cecil.Cil {
DynamicVariable,
DefaultNamespace,
AsyncMethodBody,
EmbeddedSource,
SourceLink,
}
public abstract class CustomDebugInformation : DebugInformation {
@@ -558,6 +560,57 @@ namespace Mono.Cecil.Cil {
}
}
public sealed class EmbeddedSourceDebugInformation : CustomDebugInformation {
internal byte [] content;
internal bool compress;
public byte [] Content {
get { return content; }
set { content = value; }
}
public bool Compress {
get { return compress; }
set { compress = value; }
}
public override CustomDebugInformationKind Kind {
get { return CustomDebugInformationKind.EmbeddedSource; }
}
public static Guid KindIdentifier = new Guid ("{0E8A571B-6926-466E-B4AD-8AB04611F5FE}");
public EmbeddedSourceDebugInformation (byte [] content, bool compress)
: base (KindIdentifier)
{
this.content = content;
this.compress = compress;
}
}
public sealed class SourceLinkDebugInformation : CustomDebugInformation {
internal string content;
public string Content {
get { return content; }
set { content = value; }
}
public override CustomDebugInformationKind Kind {
get { return CustomDebugInformationKind.SourceLink; }
}
public static Guid KindIdentifier = new Guid ("{CC110556-A091-4D38-9FEC-25AB9A351A6A}");
public SourceLinkDebugInformation (string content)
: base (KindIdentifier)
{
this.content = content;
}
}
public sealed class MethodDebugInformation : DebugInformation {
internal MethodDefinition method;