diff options
-rw-r--r-- | Test/Mono.Cecil.Tests/PortablePdbTests.cs | 28 | ||||
-rw-r--r-- | symbols/pdb/Mono.Cecil.Pdb/PdbHelper.cs | 3 |
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) |