Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Test/Mono.Cecil.Tests/PortablePdbTests.cs28
-rw-r--r--symbols/pdb/Mono.Cecil.Pdb/PdbHelper.cs3
2 files changed, 30 insertions, 1 deletions
diff --git a/Test/Mono.Cecil.Tests/PortablePdbTests.cs b/Test/Mono.Cecil.Tests/PortablePdbTests.cs
index e741865..fe60dc8 100644
--- a/Test/Mono.Cecil.Tests/PortablePdbTests.cs
+++ b/Test/Mono.Cecil.Tests/PortablePdbTests.cs
@@ -5,6 +5,7 @@ using System.Text;
using NUnit.Framework;
using Mono.Cecil.Cil;
+using Mono.Cecil.Pdb;
using Mono.Cecil.PE;
namespace Mono.Cecil.Tests {
@@ -368,6 +369,33 @@ namespace Mono.Cecil.Tests {
}, symbolReaderProvider: typeof (EmbeddedPortablePdbReaderProvider), symbolWriterProvider: typeof (EmbeddedPortablePdbWriterProvider));
}
+ [Test]
+ public void EmbeddedCompressedPortablePdbFromStream ()
+ {
+ var bytes = File.ReadAllBytes (GetAssemblyResourcePath ("EmbeddedCompressedPdbTarget.exe"));
+ var parameters = new ReaderParameters {
+ ReadSymbols = true,
+ SymbolReaderProvider = new PdbReaderProvider ()
+ };
+
+ var module = ModuleDefinition.ReadModule (new MemoryStream(bytes), parameters);
+ Assert.IsTrue (module.HasDebugHeader);
+
+ var header = module.GetDebugHeader ();
+
+ Assert.IsNotNull (header);
+ Assert.AreEqual (2, header.Entries.Length);
+
+ var cv = header.Entries [0];
+ Assert.AreEqual (ImageDebugType.CodeView, cv.Directory.Type);
+
+ var eppdb = header.Entries [1];
+ Assert.AreEqual (ImageDebugType.EmbeddedPortablePdb, eppdb.Directory.Type);
+ Assert.AreEqual (0x0100, eppdb.Directory.MajorVersion);
+ Assert.AreEqual (0x0100, eppdb.Directory.MinorVersion);
+ }
+
+
void TestPortablePdbModule (Action<ModuleDefinition> test)
{
TestModule ("PdbTarget.exe", test, symbolReaderProvider: typeof (PortablePdbReaderProvider), symbolWriterProvider: typeof (PortablePdbWriterProvider));
diff --git a/symbols/pdb/Mono.Cecil.Pdb/PdbHelper.cs b/symbols/pdb/Mono.Cecil.Pdb/PdbHelper.cs
index 2008eb0..2b513cd 100644
--- a/symbols/pdb/Mono.Cecil.Pdb/PdbHelper.cs
+++ b/symbols/pdb/Mono.Cecil.Pdb/PdbHelper.cs
@@ -39,7 +39,6 @@ namespace Mono.Cecil.Pdb {
public ISymbolReader GetSymbolReader (ModuleDefinition module, string fileName)
{
Mixin.CheckModule (module);
- Mixin.CheckFileName (fileName);
if (module.HasDebugHeader) {
var header = module.GetDebugHeader ();
@@ -47,6 +46,8 @@ namespace Mono.Cecil.Pdb {
if (entry != null)
return new EmbeddedPortablePdbReaderProvider ().GetSymbolReader (module, fileName);
}
+
+ Mixin.CheckFileName (fileName);
return Mixin.IsPortablePdb (Mixin.GetPdbFileName (fileName))
? new PortablePdbReaderProvider ().GetSymbolReader (module, fileName)