You've already forked linux-packaging-mono
Imported Upstream version 5.4.0.167
Former-commit-id: 5624ac747d633e885131e8349322922b6a59baaa
This commit is contained in:
parent
e49d6f06c0
commit
536cd135cc
@@ -34,7 +34,7 @@ namespace Mono.Cecil.Cil {
|
||||
Mixin.CheckModule (module);
|
||||
Mixin.CheckStream (symbolStream);
|
||||
|
||||
return GetSymbolReader (module, Disposable.NotOwned (symbolStream), "");
|
||||
return GetSymbolReader (module, Disposable.NotOwned (symbolStream), symbolStream.GetFileName ());
|
||||
}
|
||||
|
||||
ISymbolReader GetSymbolReader (ModuleDefinition module, Disposable<Stream> symbolStream, string fileName)
|
||||
@@ -301,7 +301,11 @@ namespace Mono.Cecil.Cil {
|
||||
// PDB Age
|
||||
buffer.WriteUInt32 (1);
|
||||
// PDB Path
|
||||
buffer.WriteBytes (System.Text.Encoding.UTF8.GetBytes (writer.BaseStream.GetFileName ()));
|
||||
var filename = writer.BaseStream.GetFileName ();
|
||||
if (!string.IsNullOrEmpty (filename))
|
||||
filename = Path.GetFileName (filename);
|
||||
|
||||
buffer.WriteBytes (System.Text.Encoding.UTF8.GetBytes (filename));
|
||||
buffer.WriteByte (0);
|
||||
|
||||
var data = new byte [buffer.length];
|
||||
|
@@ -2986,13 +2986,13 @@ namespace Mono.Cecil {
|
||||
value = Encoding.Unicode.GetString (bytes, 0, bytes.Length);
|
||||
} else
|
||||
value = null;
|
||||
} else if (type.etype == ElementType.Object) {
|
||||
value = null;
|
||||
} else if (type.IsTypeOf ("System", "Decimal")) {
|
||||
var b = signature.ReadByte ();
|
||||
value = new decimal (signature.ReadInt32 (), signature.ReadInt32 (), signature.ReadInt32 (), (b & 0x80) != 0, (byte) (b & 0x7f));
|
||||
} else if (type.IsTypeOf ("System", "DateTime")) {
|
||||
value = new DateTime (signature.ReadInt64());
|
||||
} else if (type.etype == ElementType.Object || type.etype == ElementType.None || type.etype == ElementType.Class) {
|
||||
value = null;
|
||||
} else
|
||||
value = signature.ReadConstantSignature (type.etype);
|
||||
|
||||
|
@@ -122,9 +122,8 @@ namespace Mono.Cecil {
|
||||
#if !NET_CORE
|
||||
if (parameters.StrongNameKeyPair != null)
|
||||
CryptoService.StrongName (stream.value, writer, parameters.StrongNameKeyPair);
|
||||
|
||||
stream.Dispose ();
|
||||
#endif
|
||||
stream.Dispose ();
|
||||
}
|
||||
|
||||
static void BuildMetadata (ModuleDefinition module, MetadataBuilder metadata)
|
||||
@@ -2152,6 +2151,7 @@ namespace Mono.Cecil {
|
||||
case ElementType.SzArray:
|
||||
case ElementType.Class:
|
||||
case ElementType.Object:
|
||||
case ElementType.None:
|
||||
case ElementType.Var:
|
||||
case ElementType.MVar:
|
||||
signature.WriteInt32 (0);
|
||||
|
@@ -995,19 +995,7 @@ namespace Mono.Cecil {
|
||||
|
||||
public ImageDebugHeader GetDebugHeader ()
|
||||
{
|
||||
if (!HasDebugHeader)
|
||||
throw new InvalidOperationException ();
|
||||
|
||||
return Image.DebugHeader;
|
||||
}
|
||||
|
||||
void ProcessDebugHeader ()
|
||||
{
|
||||
if (!HasDebugHeader)
|
||||
return;
|
||||
|
||||
if (!symbol_reader.ProcessDebugHeader (GetDebugHeader ()))
|
||||
throw new InvalidOperationException ();
|
||||
return Image.DebugHeader ?? new ImageDebugHeader ();
|
||||
}
|
||||
|
||||
#if !READ_ONLY
|
||||
@@ -1084,7 +1072,10 @@ namespace Mono.Cecil {
|
||||
|
||||
symbol_reader = reader;
|
||||
|
||||
ProcessDebugHeader ();
|
||||
if (!symbol_reader.ProcessDebugHeader (GetDebugHeader ())) {
|
||||
symbol_reader = null;
|
||||
throw new InvalidOperationException ();
|
||||
}
|
||||
|
||||
if (HasImage && ReadingMode == ReadingMode.Immediate) {
|
||||
var immediate_reader = new ImmediateModuleReader (Image);
|
||||
@@ -1135,7 +1126,7 @@ namespace Mono.Cecil {
|
||||
Mixin.CheckStream (stream);
|
||||
Mixin.CheckReadSeek (stream);
|
||||
|
||||
return ReadModule (Disposable.NotOwned (stream), "", parameters);
|
||||
return ReadModule (Disposable.NotOwned (stream), stream.GetFileName (), parameters);
|
||||
}
|
||||
|
||||
static ModuleDefinition ReadModule (Disposable<Stream> stream, string fileName, ReaderParameters parameters)
|
||||
|
@@ -263,6 +263,20 @@ namespace Mono.Cecil.Tests {
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void OwnedStreamModuleFileName ()
|
||||
{
|
||||
var path = GetAssemblyResourcePath ("hello.exe", GetType ().Assembly);
|
||||
using (var file = File.Open (path, FileMode.Open))
|
||||
{
|
||||
using (var module = ModuleDefinition.ReadModule (file))
|
||||
{
|
||||
Assert.IsNotNullOrEmpty (module.FileName);
|
||||
Assert.AreEqual (path, module.FileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ReadAndWriteFile ()
|
||||
{
|
||||
|
@@ -387,6 +387,22 @@ namespace Mono.Cecil.Tests {
|
||||
}, symbolReaderProvider: typeof (PortablePdbReaderProvider), symbolWriterProvider: typeof (PortablePdbWriterProvider));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void NullClassConstant ()
|
||||
{
|
||||
TestModule ("xattr.dll", module => {
|
||||
var type = module.GetType ("Library");
|
||||
var method = type.GetMethod ("NullXAttributeConstant");
|
||||
var symbol = method.DebugInformation;
|
||||
|
||||
Assert.IsNotNull (symbol);
|
||||
Assert.AreEqual(1, symbol.Scope.Constants.Count);
|
||||
|
||||
var a = symbol.Scope.Constants [0];
|
||||
Assert.AreEqual ("a", a.Name);
|
||||
}, symbolReaderProvider: typeof (PortablePdbReaderProvider), symbolWriterProvider: typeof (PortablePdbWriterProvider));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PortablePdbLineInfo ()
|
||||
{
|
||||
|
BIN
external/linker/cecil/Test/Resources/assemblies/xattr.pdb
vendored
Normal file
BIN
external/linker/cecil/Test/Resources/assemblies/xattr.pdb
vendored
Normal file
Binary file not shown.
Reference in New Issue
Block a user