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:
authorMarco Rossignoli <marco.rossignoli@gmail.com>2022-06-15 06:12:52 +0300
committerGitHub <noreply@github.com>2022-06-15 06:12:52 +0300
commit2c6892705c20294859da5bc36f9b82f60aa333c7 (patch)
tree510656de4dba9f9f72dcdadd77d761bc1513c802
parentf7b64f756021c546d303e55413f10967728ad8ba (diff)
Fix mixed module ReadSymbols() (#851)
Fix reading some pdb generated by the C++ compiler for mixed mode assemblies. Co-authored-by: Marco Rossignoli <mrossignol@microsoft.com>
-rw-r--r--symbols/pdb/Microsoft.Cci.Pdb/PdbFile.cs6
-rw-r--r--symbols/pdb/Test/Mono.Cecil.Tests/PdbTests.cs23
-rw-r--r--symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.exebin0 -> 34816 bytes
-rw-r--r--symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.exe.metagen5
-rw-r--r--symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.pdbbin0 -> 847872 bytes
5 files changed, 24 insertions, 10 deletions
diff --git a/symbols/pdb/Microsoft.Cci.Pdb/PdbFile.cs b/symbols/pdb/Microsoft.Cci.Pdb/PdbFile.cs
index b4d4705..6c18b88 100644
--- a/symbols/pdb/Microsoft.Cci.Pdb/PdbFile.cs
+++ b/symbols/pdb/Microsoft.Cci.Pdb/PdbFile.cs
@@ -68,9 +68,9 @@ namespace Microsoft.Cci.Pdb {
BitSet present = new BitSet(bits);
BitSet deleted = new BitSet(bits);
- if (!deleted.IsEmpty) {
- throw new PdbDebugException("Unsupported PDB deleted bitset is not empty.");
- }
+ //if (!deleted.IsEmpty) {
+ // throw new PdbDebugException("Unsupported PDB deleted bitset is not empty.");
+ //}
int j = 0;
for (int i = 0; i < max; i++) {
diff --git a/symbols/pdb/Test/Mono.Cecil.Tests/PdbTests.cs b/symbols/pdb/Test/Mono.Cecil.Tests/PdbTests.cs
index 6f2d2fa..86dfb3d 100644
--- a/symbols/pdb/Test/Mono.Cecil.Tests/PdbTests.cs
+++ b/symbols/pdb/Test/Mono.Cecil.Tests/PdbTests.cs
@@ -1,6 +1,5 @@
using System.IO;
using System.Linq;
-
using Mono.Cecil.Cil;
using Mono.Cecil.Pdb;
@@ -56,7 +55,7 @@ namespace Mono.Cecil.Tests {
IL_0020: ldloc.1
IL_0021: ret
", main);
- }, readOnly: !Platform.HasNativePdbSupport, symbolReaderProvider: typeof(PdbReaderProvider), symbolWriterProvider: typeof(PdbWriterProvider));
+ }, readOnly: !Platform.HasNativePdbSupport, symbolReaderProvider: typeof (PdbReaderProvider), symbolWriterProvider: typeof (PdbWriterProvider));
}
[Test]
@@ -82,7 +81,7 @@ namespace Mono.Cecil.Tests {
Assert.AreEqual ("i", variables [0].Name);
Assert.IsFalse (variables [0].IsDebuggerHidden);
- }, readOnly: !Platform.HasNativePdbSupport, symbolReaderProvider: typeof(PdbReaderProvider), symbolWriterProvider: typeof(PdbWriterProvider));
+ }, readOnly: !Platform.HasNativePdbSupport, symbolReaderProvider: typeof (PdbReaderProvider), symbolWriterProvider: typeof (PdbWriterProvider));
}
[Test]
@@ -103,7 +102,7 @@ namespace Mono.Cecil.Tests {
Assert.AreEqual (new byte [] { 228, 176, 152, 54, 82, 238, 238, 68, 237, 156, 5, 142, 118, 160, 118, 245 }, document.Hash);
Assert.AreEqual (DocumentLanguage.CSharp, document.Language);
Assert.AreEqual (DocumentLanguageVendor.Microsoft, document.LanguageVendor);
- }, readOnly: !Platform.HasNativePdbSupport, symbolReaderProvider: typeof(PdbReaderProvider), symbolWriterProvider: typeof(PdbWriterProvider));
+ }, readOnly: !Platform.HasNativePdbSupport, symbolReaderProvider: typeof (PdbReaderProvider), symbolWriterProvider: typeof (PdbWriterProvider));
}
[Test]
@@ -124,7 +123,7 @@ namespace Mono.Cecil.Tests {
Assert.AreEqual (new byte [] { 184, 188, 100, 23, 27, 123, 187, 201, 175, 206, 110, 198, 242, 139, 154, 119 }, document.Hash);
Assert.AreEqual (DocumentLanguage.Basic, document.Language);
Assert.AreEqual (DocumentLanguageVendor.Microsoft, document.LanguageVendor);
- }, readOnly: !Platform.HasNativePdbSupport, symbolReaderProvider: typeof(PdbReaderProvider), symbolWriterProvider: typeof(PdbWriterProvider));
+ }, readOnly: !Platform.HasNativePdbSupport, symbolReaderProvider: typeof (PdbReaderProvider), symbolWriterProvider: typeof (PdbWriterProvider));
}
[Test]
@@ -248,7 +247,7 @@ namespace Mono.Cecil.Tests {
constant = scope.Constants [1];
Assert.AreEqual ("c", constant.Name);
- Assert.AreEqual ((decimal) 74, constant.Value);
+ Assert.AreEqual ((decimal)74, constant.Value);
Assert.AreEqual (MetadataType.ValueType, constant.ConstantType.MetadataType);
method = type.GetMethod ("Foo");
@@ -448,7 +447,7 @@ namespace Mono.Cecil.Tests {
method.DebugInformation.SequencePoints.Add (sequence_point);
- method.DebugInformation.Scope = new ScopeDebugInformation (body.Instructions [0], null) {
+ method.DebugInformation.Scope = new ScopeDebugInformation (body.Instructions [0], null) {
Variables = { new VariableDebugInformation (temp, "temp") }
};
@@ -476,5 +475,15 @@ namespace Mono.Cecil.Tests {
Assert.IsTrue (module.HasSymbols);
}, symbolReaderProvider: typeof (NativePdbReaderProvider), symbolWriterProvider: typeof (NativePdbWriterProvider));
}
+
+ [Test]
+ public void ReadPdbMixedNativeCLIModule ()
+ {
+ // MixedNativeCLI.exe was copy/pasted from from https://docs.microsoft.com/en-us/cpp/preprocessor/managed-unmanaged?view=msvc-170#example
+ TestModule ("MixedNativeCLI.exe", module => {
+ module.ReadSymbols ();
+ }, readOnly: true);
+ }
+
}
}
diff --git a/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.exe b/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.exe
new file mode 100644
index 0000000..b2fbecb
--- /dev/null
+++ b/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.exe
Binary files differ
diff --git a/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.exe.metagen b/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.exe.metagen
new file mode 100644
index 0000000..ef3c1a8
--- /dev/null
+++ b/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.exe.metagen
@@ -0,0 +1,5 @@
+ImageRuntimeVersion: v4.0.30319
+Assembly MixedNativeCLI, Version=0.0.*, Culture=Invariant Language (Invariant Country):
+ hash=SHA1, flags=PublicKey
+Assembly mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:
+ hash=None, flags=None
diff --git a/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.pdb b/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.pdb
new file mode 100644
index 0000000..2bb2e08
--- /dev/null
+++ b/symbols/pdb/Test/Resources/assemblies/MixedNativeCLI.pdb
Binary files differ