You've already forked linux-packaging-mono
Imported Upstream version 5.8.0.22
Former-commit-id: df344e34b07851d296efb3e6604c8db42b6f7aa3
This commit is contained in:
parent
5f4a27cc8a
commit
7d05485754
@@ -671,8 +671,10 @@ namespace Mono.Cecil.Cil {
|
||||
|
||||
var offset_mapping = new Dictionary<int, SequencePoint> (sequence_points.Count);
|
||||
|
||||
for (int i = 0; i < sequence_points.Count; i++)
|
||||
offset_mapping.Add (sequence_points [i].Offset, sequence_points [i]);
|
||||
for (int i = 0; i < sequence_points.Count; i++) {
|
||||
if (!offset_mapping.ContainsKey (sequence_points [i].Offset))
|
||||
offset_mapping.Add (sequence_points [i].Offset, sequence_points [i]);
|
||||
}
|
||||
|
||||
var instructions = method.Body.Instructions;
|
||||
|
||||
|
||||
1
external/linker/cecil/Mono.Cecil.PE/Image.cs
vendored
1
external/linker/cecil/Mono.Cecil.PE/Image.cs
vendored
@@ -39,6 +39,7 @@ namespace Mono.Cecil.PE {
|
||||
public uint Timestamp;
|
||||
public ModuleAttributes Attributes;
|
||||
|
||||
public DataDirectory Win32Resources;
|
||||
public DataDirectory Debug;
|
||||
public DataDirectory Resources;
|
||||
public DataDirectory StrongName;
|
||||
|
||||
@@ -160,12 +160,18 @@ namespace Mono.Cecil.PE {
|
||||
|
||||
// ExportTable 8
|
||||
// ImportTable 8
|
||||
|
||||
Advance (pe64 ? 56 : 40);
|
||||
|
||||
// ResourceTable 8
|
||||
|
||||
image.Win32Resources = ReadDataDirectory ();
|
||||
|
||||
// ExceptionTable 8
|
||||
// CertificateTable 8
|
||||
// BaseRelocationTable 8
|
||||
|
||||
Advance (pe64 ? 88 : 72);
|
||||
Advance (24);
|
||||
|
||||
// Debug 8
|
||||
image.Debug = ReadDataDirectory ();
|
||||
|
||||
@@ -87,21 +87,15 @@ namespace Mono.Cecil.PE {
|
||||
|
||||
void GetWin32Resources ()
|
||||
{
|
||||
var rsrc = GetImageResourceSection ();
|
||||
if (rsrc == null)
|
||||
if (!module.HasImage)
|
||||
return;
|
||||
|
||||
win32_resources = module.Image.GetReaderAt (rsrc.VirtualAddress, rsrc.SizeOfRawData, (s, reader) => new ByteBuffer (reader.ReadBytes ((int) s)));
|
||||
}
|
||||
DataDirectory win32_resources_directory = module.Image.Win32Resources;
|
||||
var size = win32_resources_directory.Size;
|
||||
|
||||
Section GetImageResourceSection ()
|
||||
{
|
||||
if (!module.HasImage)
|
||||
return null;
|
||||
|
||||
const string rsrc_section = ".rsrc";
|
||||
|
||||
return module.Image.GetSection (rsrc_section);
|
||||
if (size > 0) {
|
||||
win32_resources = module.Image.GetReaderAt (win32_resources_directory.VirtualAddress, size, (s, reader) => new ByteBuffer (reader.ReadBytes ((int) s)));
|
||||
}
|
||||
}
|
||||
|
||||
public static ImageWriter CreateWriter (ModuleDefinition module, MetadataBuilder metadata, Disposable<Stream> stream)
|
||||
@@ -846,10 +840,10 @@ namespace Mono.Cecil.PE {
|
||||
|
||||
void PatchResourceDataEntry (ByteBuffer resources)
|
||||
{
|
||||
var old_rsrc = GetImageResourceSection ();
|
||||
var rva = resources.ReadUInt32 ();
|
||||
resources.position -= 4;
|
||||
resources.WriteUInt32 (rva - old_rsrc.VirtualAddress + rsrc.VirtualAddress);
|
||||
|
||||
resources.WriteUInt32 (rva - module.Image.Win32Resources.VirtualAddress + rsrc.VirtualAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -943,8 +943,8 @@ namespace Mono.Cecil {
|
||||
|
||||
type.BaseType = GetTypeDefOrRef (ReadMetadataToken (CodedIndex.TypeDefOrRef));
|
||||
|
||||
type.fields_range = ReadFieldsRange (rid);
|
||||
type.methods_range = ReadMethodsRange (rid);
|
||||
type.fields_range = ReadListRange (rid, Table.TypeDef, Table.Field);
|
||||
type.methods_range = ReadListRange (rid, Table.TypeDef, Table.Method);
|
||||
|
||||
if (IsNested (attributes))
|
||||
type.DeclaringType = GetNestedTypeDeclaringType (type);
|
||||
@@ -965,21 +965,13 @@ namespace Mono.Cecil {
|
||||
return GetTypeDefinition (declaring_rid);
|
||||
}
|
||||
|
||||
Range ReadFieldsRange (uint type_index)
|
||||
{
|
||||
return ReadListRange (type_index, Table.TypeDef, Table.Field);
|
||||
}
|
||||
|
||||
Range ReadMethodsRange (uint type_index)
|
||||
{
|
||||
return ReadListRange (type_index, Table.TypeDef, Table.Method);
|
||||
}
|
||||
|
||||
Range ReadListRange (uint current_index, Table current, Table target)
|
||||
{
|
||||
var list = new Range ();
|
||||
|
||||
list.Start = ReadTableIndex (target);
|
||||
var start = ReadTableIndex (target);
|
||||
if (start == 0)
|
||||
return list;
|
||||
|
||||
uint next_index;
|
||||
var current_table = image.TableHeap [current];
|
||||
@@ -993,7 +985,8 @@ namespace Mono.Cecil {
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
list.Length = next_index - list.Start;
|
||||
list.Start = start;
|
||||
list.Length = next_index - start;
|
||||
|
||||
return list;
|
||||
}
|
||||
@@ -1496,16 +1489,11 @@ namespace Mono.Cecil {
|
||||
|
||||
for (uint i = 1; i <= length; i++) {
|
||||
var type_rid = ReadTableIndex (Table.TypeDef);
|
||||
Range events_range = ReadEventsRange (i);
|
||||
Range events_range = ReadListRange (i, Table.EventMap, Table.Event);
|
||||
metadata.AddEventsRange (type_rid, events_range);
|
||||
}
|
||||
}
|
||||
|
||||
Range ReadEventsRange (uint rid)
|
||||
{
|
||||
return ReadListRange (rid, Table.EventMap, Table.Event);
|
||||
}
|
||||
|
||||
public bool HasProperties (TypeDefinition type)
|
||||
{
|
||||
InitializeProperties ();
|
||||
@@ -1585,16 +1573,11 @@ namespace Mono.Cecil {
|
||||
|
||||
for (uint i = 1; i <= length; i++) {
|
||||
var type_rid = ReadTableIndex (Table.TypeDef);
|
||||
var properties_range = ReadPropertiesRange (i);
|
||||
var properties_range = ReadListRange (i, Table.PropertyMap, Table.Property);
|
||||
metadata.AddPropertiesRange (type_rid, properties_range);
|
||||
}
|
||||
}
|
||||
|
||||
Range ReadPropertiesRange (uint rid)
|
||||
{
|
||||
return ReadListRange (rid, Table.PropertyMap, Table.Property);
|
||||
}
|
||||
|
||||
MethodSemanticsAttributes ReadMethodSemantics (MethodDefinition method)
|
||||
{
|
||||
InitializeMethodSemantics ();
|
||||
@@ -1729,11 +1712,6 @@ namespace Mono.Cecil {
|
||||
}
|
||||
}
|
||||
|
||||
Range ReadParametersRange (uint method_rid)
|
||||
{
|
||||
return ReadListRange (method_rid, Table.Method, Table.Param);
|
||||
}
|
||||
|
||||
public Collection<MethodDefinition> ReadMethods (TypeDefinition type)
|
||||
{
|
||||
var methods_range = type.methods_range;
|
||||
@@ -1794,7 +1772,7 @@ namespace Mono.Cecil {
|
||||
methods.Add (method); // attach method
|
||||
|
||||
var signature = ReadBlobIndex ();
|
||||
var param_range = ReadParametersRange (method_rid);
|
||||
var param_range = ReadListRange (method_rid, Table.Method, Table.Param);
|
||||
|
||||
this.context = method;
|
||||
|
||||
|
||||
@@ -189,10 +189,10 @@ namespace Mono.Cecil.Rocks {
|
||||
var instruction = self.Instructions [i];
|
||||
if (instruction.OpCode.Code != Code.Ldc_I8)
|
||||
continue;
|
||||
var l = (long)instruction.Operand;
|
||||
if (l >= uint.MaxValue)
|
||||
var l = (long) instruction.Operand;
|
||||
if (l >= int.MaxValue || l <= int.MinValue)
|
||||
continue;
|
||||
ExpandMacro (instruction, OpCodes.Ldc_I4, (uint)l);
|
||||
ExpandMacro (instruction, OpCodes.Ldc_I4, (int) l);
|
||||
self.Instructions.Insert (++i, Instruction.Create (OpCodes.Conv_I8));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ namespace Mono.CompilerServices.SymbolWriter
|
||||
|
||||
public override string ToString ()
|
||||
{
|
||||
return String.Format ("[Line {0}:{1,2}-{3,4}:{5}]", File, Row, Column, EndRow, EndColumn, Offset);
|
||||
return String.Format ("[Line {0}:{1},{2}-{3},{4}:{5}]", File, Row, Column, EndRow, EndColumn, Offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -280,7 +280,11 @@ namespace Mono.Cecil.Pdb {
|
||||
break;
|
||||
}
|
||||
case 'A':
|
||||
var index = used_namespace.IndexOf(' ');
|
||||
var index = used_namespace.IndexOf (' ');
|
||||
if (index < 0) {
|
||||
target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = used_namespace };
|
||||
break;
|
||||
}
|
||||
var alias_value = used_namespace.Substring (1, index - 1);
|
||||
var alias_target_value = used_namespace.Substring (index + 2);
|
||||
switch (used_namespace [index + 1]) {
|
||||
@@ -294,6 +298,15 @@ namespace Mono.Cecil.Pdb {
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case '*':
|
||||
target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = value };
|
||||
break;
|
||||
case '@':
|
||||
if (!value.StartsWith ("P:"))
|
||||
continue;
|
||||
|
||||
target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = value.Substring (2) };
|
||||
break;
|
||||
}
|
||||
|
||||
if (target != null)
|
||||
|
||||
@@ -143,7 +143,7 @@ namespace Mono.Cecil.Tests {
|
||||
Assert.AreEqual (DocumentHashAlgorithm.None, document.HashAlgorithm);
|
||||
Assert.AreEqual (DocumentLanguage.FSharp, document.Language);
|
||||
Assert.AreEqual (DocumentLanguageVendor.Microsoft, document.LanguageVendor);
|
||||
}, readOnly: Platform.OnMono, symbolReaderProvider: typeof(PdbReaderProvider), symbolWriterProvider: typeof(PdbWriterProvider));
|
||||
}, readOnly: Platform.OnMono, symbolReaderProvider: typeof (PdbReaderProvider), symbolWriterProvider: typeof (PdbWriterProvider));
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -157,7 +157,15 @@ namespace Mono.Cecil.Tests {
|
||||
public void EmptyRootNamespace ()
|
||||
{
|
||||
TestModule ("EmptyRootNamespace.dll", module => {
|
||||
}, readOnly: Platform.OnMono, symbolReaderProvider: typeof(PdbReaderProvider), symbolWriterProvider: typeof(PdbWriterProvider));
|
||||
}, readOnly: Platform.OnMono, symbolReaderProvider: typeof (PdbReaderProvider), symbolWriterProvider: typeof (PdbWriterProvider));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void VisualBasicNamespace ()
|
||||
{
|
||||
TestModule ("AVbTest.exe", module => {
|
||||
}, readOnly: Platform.OnMono, symbolReaderProvider: typeof (PdbReaderProvider), symbolWriterProvider: typeof (PdbWriterProvider));
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
BIN
external/linker/cecil/symbols/pdb/Test/Resources/assemblies/AVbTest.pdb
vendored
Normal file
BIN
external/linker/cecil/symbols/pdb/Test/Resources/assemblies/AVbTest.pdb
vendored
Normal file
Binary file not shown.
Reference in New Issue
Block a user