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:
authorMarek Safar <marek.safar@gmail.com>2022-10-06 12:15:52 +0300
committerMarek Safar <marek.safar@gmail.com>2022-10-06 12:15:52 +0300
commit186a05b95879dd6f546bf2e21aaa54680d3d4711 (patch)
treecda666d27eb727e45cfbff127e2b06d9156050ca
parent1840b7410d37a613e684b6f9650e39e2d4950bbb (diff)
parente052ab52e44fd2a6564964e47e79929068731916 (diff)
Merge remote-tracking branch 'upstream/master' into sync
-rw-r--r--.editorconfig14
-rw-r--r--Mono.Cecil.Cil/Instruction.cs3
-rw-r--r--Mono.Cecil/AssemblyReader.cs19
-rw-r--r--Mono.Cecil/AssemblyWriter.cs1
-rw-r--r--Mono.Cecil/MetadataSystem.cs50
-rw-r--r--Mono.Cecil/MethodCallingConvention.cs1
-rw-r--r--Mono.Cecil/MethodDefinition.cs5
-rw-r--r--Mono.Cecil/MethodImplAttributes.cs33
-rw-r--r--Test/Mono.Cecil.Tests/ILProcessorTests.cs3
-rw-r--r--Test/Mono.Cecil.Tests/PortablePdbTests.cs17
-rw-r--r--Test/Resources/assemblies/NullConst.dllbin0 -> 5120 bytes
-rw-r--r--Test/Resources/assemblies/NullConst.pdbbin0 -> 10424 bytes
-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
17 files changed, 82 insertions, 98 deletions
diff --git a/.editorconfig b/.editorconfig
index 6868a57..e1d9b64 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -8,4 +8,16 @@ csharp_space_between_method_call_name_and_opening_parenthesis = true
csharp_space_before_open_square_brackets = true
csharp_new_line_before_open_brace = methods
csharp_new_line_before_else = false
-csharp_indent_switch_labels = false \ No newline at end of file
+csharp_indent_switch_labels = false
+
+trim_trailing_whitespace = false
+
+dotnet_naming_symbols.fields_locals_and_parameters.applicable_kinds = field, local, parameter
+dotnet_naming_symbols.fields_locals_and_parameters.applicable_accessibilities = *
+
+dotnet_naming_style.snake_case.capitalization = all_lower
+dotnet_naming_style.snake_case.word_separator = _
+
+dotnet_naming_rule.fields_locals_and_parameters_use_snake_case.symbols = fields_locals_and_parameters
+dotnet_naming_rule.fields_locals_and_parameters_use_snake_case.style = snake_case
+dotnet_naming_rule.fields_locals_and_parameters_use_snake_case.severity = suggestion
diff --git a/Mono.Cecil.Cil/Instruction.cs b/Mono.Cecil.Cil/Instruction.cs
index d0d0081..4b5eea9 100644
--- a/Mono.Cecil.Cil/Instruction.cs
+++ b/Mono.Cecil.Cil/Instruction.cs
@@ -9,6 +9,7 @@
//
using System;
+using System.Globalization;
using System.Text;
namespace Mono.Cecil.Cil {
@@ -131,7 +132,7 @@ namespace Mono.Cecil.Cil {
instruction.Append ('\"');
break;
default:
- instruction.Append (operand);
+ instruction.Append (Convert.ToString(operand, CultureInfo.InvariantCulture));
break;
}
diff --git a/Mono.Cecil/AssemblyReader.cs b/Mono.Cecil/AssemblyReader.cs
index 4180d78..0756fa8 100644
--- a/Mono.Cecil/AssemblyReader.cs
+++ b/Mono.Cecil/AssemblyReader.cs
@@ -899,8 +899,6 @@ namespace Mono.Cecil {
nested_types.Add (nested_type);
}
- metadata.RemoveNestedTypeMapping (type);
-
return nested_types;
}
@@ -975,7 +973,6 @@ namespace Mono.Cecil {
if (!metadata.TryGetReverseNestedTypeMapping (type, out declaring_rid))
return null;
- metadata.RemoveReverseNestedTypeMapping (type);
return GetTypeDefinition (declaring_rid);
}
@@ -1242,8 +1239,6 @@ namespace Mono.Cecil {
new MetadataToken(TokenType.InterfaceImpl, mapping [i].Col1)));
}
- metadata.RemoveInterfaceMapping (type);
-
return interfaces;
}
@@ -1466,8 +1461,6 @@ namespace Mono.Cecil {
var events = new MemberDefinitionCollection<EventDefinition> (type, (int) range.Length);
- metadata.RemoveEventsRange (type);
-
if (range.Length == 0)
return events;
@@ -1536,8 +1529,6 @@ namespace Mono.Cecil {
if (!metadata.TryGetPropertiesRange (type, out range))
return new MemberDefinitionCollection<PropertyDefinition> (type);
- metadata.RemovePropertiesRange (type);
-
var properties = new MemberDefinitionCollection<PropertyDefinition> (type, (int) range.Length);
if (range.Length == 0)
@@ -1912,8 +1903,6 @@ namespace Mono.Cecil {
if (!metadata.TryGetGenericParameterRanges (provider, out ranges))
return new GenericParameterCollection (provider);
- metadata.RemoveGenericParameterRange (provider);
-
var generic_parameters = new GenericParameterCollection (provider, RangesSize (ranges));
for (int i = 0; i < ranges.Length; i++)
@@ -2029,8 +2018,6 @@ namespace Mono.Cecil {
new MetadataToken (TokenType.GenericParamConstraint, mapping [i].Col1)));
}
- metadata.RemoveGenericConstraintMapping (generic_parameter);
-
return constraints;
}
@@ -2083,8 +2070,6 @@ namespace Mono.Cecil {
for (int i = 0; i < mapping.Count; i++)
overrides.Add ((MethodReference) LookupToken (mapping [i]));
- metadata.RemoveOverrideMapping (method);
-
return overrides;
}
@@ -2521,8 +2506,6 @@ namespace Mono.Cecil {
for (int i = 0; i < ranges.Length; i++)
ReadCustomAttributeRange (ranges [i], custom_attributes);
- metadata.RemoveCustomAttributeRange (owner);
-
if (module.IsWindowsMetadata ())
foreach (var custom_attribute in custom_attributes)
WindowsRuntimeProjections.Project (owner, custom_attribute);
@@ -2676,8 +2659,6 @@ namespace Mono.Cecil {
for (int i = 0; i < ranges.Length; i++)
ReadSecurityDeclarationRange (ranges [i], security_declarations);
- metadata.RemoveSecurityDeclarationRange (owner);
-
return security_declarations;
}
diff --git a/Mono.Cecil/AssemblyWriter.cs b/Mono.Cecil/AssemblyWriter.cs
index b8b2b14..91edba0 100644
--- a/Mono.Cecil/AssemblyWriter.cs
+++ b/Mono.Cecil/AssemblyWriter.cs
@@ -2198,6 +2198,7 @@ namespace Mono.Cecil {
case ElementType.None:
case ElementType.Var:
case ElementType.MVar:
+ case ElementType.GenericInst:
signature.WriteInt32 (0);
break;
case ElementType.String:
diff --git a/Mono.Cecil/MetadataSystem.cs b/Mono.Cecil/MetadataSystem.cs
index 749a39c..a877771 100644
--- a/Mono.Cecil/MetadataSystem.cs
+++ b/Mono.Cecil/MetadataSystem.cs
@@ -243,11 +243,6 @@ namespace Mono.Cecil {
NestedTypes [type_rid] = mapping;
}
- public void RemoveNestedTypeMapping (TypeDefinition type)
- {
- NestedTypes.Remove (type.token.RID);
- }
-
public bool TryGetReverseNestedTypeMapping (TypeDefinition type, out uint declaring)
{
return ReverseNestedTypes.TryGetValue (type.token.RID, out declaring);
@@ -258,11 +253,6 @@ namespace Mono.Cecil {
ReverseNestedTypes [nested] = declaring;
}
- public void RemoveReverseNestedTypeMapping (TypeDefinition type)
- {
- ReverseNestedTypes.Remove (type.token.RID);
- }
-
public bool TryGetInterfaceMapping (TypeDefinition type, out Collection<Row<uint, MetadataToken>> mapping)
{
return Interfaces.TryGetValue (type.token.RID, out mapping);
@@ -273,11 +263,6 @@ namespace Mono.Cecil {
Interfaces [type_rid] = mapping;
}
- public void RemoveInterfaceMapping (TypeDefinition type)
- {
- Interfaces.Remove (type.token.RID);
- }
-
public void AddPropertiesRange (uint type_rid, Range range)
{
Properties.Add (type_rid, range);
@@ -288,11 +273,6 @@ namespace Mono.Cecil {
return Properties.TryGetValue (type.token.RID, out range);
}
- public void RemovePropertiesRange (TypeDefinition type)
- {
- Properties.Remove (type.token.RID);
- }
-
public void AddEventsRange (uint type_rid, Range range)
{
Events.Add (type_rid, range);
@@ -303,41 +283,21 @@ namespace Mono.Cecil {
return Events.TryGetValue (type.token.RID, out range);
}
- public void RemoveEventsRange (TypeDefinition type)
- {
- Events.Remove (type.token.RID);
- }
-
public bool TryGetGenericParameterRanges (IGenericParameterProvider owner, out Range [] ranges)
{
return GenericParameters.TryGetValue (owner.MetadataToken, out ranges);
}
- public void RemoveGenericParameterRange (IGenericParameterProvider owner)
- {
- GenericParameters.Remove (owner.MetadataToken);
- }
-
public bool TryGetCustomAttributeRanges (ICustomAttributeProvider owner, out Range [] ranges)
{
return CustomAttributes.TryGetValue (owner.MetadataToken, out ranges);
}
- public void RemoveCustomAttributeRange (ICustomAttributeProvider owner)
- {
- CustomAttributes.Remove (owner.MetadataToken);
- }
-
public bool TryGetSecurityDeclarationRanges (ISecurityDeclarationProvider owner, out Range [] ranges)
{
return SecurityDeclarations.TryGetValue (owner.MetadataToken, out ranges);
}
- public void RemoveSecurityDeclarationRange (ISecurityDeclarationProvider owner)
- {
- SecurityDeclarations.Remove (owner.MetadataToken);
- }
-
public bool TryGetGenericConstraintMapping (GenericParameter generic_parameter, out Collection<Row<uint, MetadataToken>> mapping)
{
return GenericConstraints.TryGetValue (generic_parameter.token.RID, out mapping);
@@ -348,11 +308,6 @@ namespace Mono.Cecil {
GenericConstraints [gp_rid] = mapping;
}
- public void RemoveGenericConstraintMapping (GenericParameter generic_parameter)
- {
- GenericConstraints.Remove (generic_parameter.token.RID);
- }
-
public bool TryGetOverrideMapping (MethodDefinition method, out Collection<MetadataToken> mapping)
{
return Overrides.TryGetValue (method.token.RID, out mapping);
@@ -363,11 +318,6 @@ namespace Mono.Cecil {
Overrides [rid] = mapping;
}
- public void RemoveOverrideMapping (MethodDefinition method)
- {
- Overrides.Remove (method.token.RID);
- }
-
public Document GetDocument (uint rid)
{
if (rid < 1 || rid > Documents.Length)
diff --git a/Mono.Cecil/MethodCallingConvention.cs b/Mono.Cecil/MethodCallingConvention.cs
index f9c0e0c..80f3e97 100644
--- a/Mono.Cecil/MethodCallingConvention.cs
+++ b/Mono.Cecil/MethodCallingConvention.cs
@@ -17,6 +17,7 @@ namespace Mono.Cecil {
ThisCall = 0x3,
FastCall = 0x4,
VarArg = 0x5,
+ Unmanaged = 0x9,
Generic = 0x10,
}
}
diff --git a/Mono.Cecil/MethodDefinition.cs b/Mono.Cecil/MethodDefinition.cs
index b4b88d9..b4e4376 100644
--- a/Mono.Cecil/MethodDefinition.cs
+++ b/Mono.Cecil/MethodDefinition.cs
@@ -440,6 +440,11 @@ namespace Mono.Cecil {
set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.AggressiveInlining, value); }
}
+ public bool AggressiveOptimization {
+ get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.AggressiveOptimization); }
+ set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.AggressiveOptimization, value); }
+ }
+
#endregion
#region MethodSemanticsAttributes
diff --git a/Mono.Cecil/MethodImplAttributes.cs b/Mono.Cecil/MethodImplAttributes.cs
index 2f1f018..23e857b 100644
--- a/Mono.Cecil/MethodImplAttributes.cs
+++ b/Mono.Cecil/MethodImplAttributes.cs
@@ -14,23 +14,24 @@ namespace Mono.Cecil {
[Flags]
public enum MethodImplAttributes : ushort {
- CodeTypeMask = 0x0003,
- IL = 0x0000, // Method impl is CIL
- Native = 0x0001, // Method impl is native
- OPTIL = 0x0002, // Reserved: shall be zero in conforming implementations
- Runtime = 0x0003, // Method impl is provided by the runtime
+ CodeTypeMask = 0x0003,
+ IL = 0x0000, // Method impl is CIL
+ Native = 0x0001, // Method impl is native
+ OPTIL = 0x0002, // Reserved: shall be zero in conforming implementations
+ Runtime = 0x0003, // Method impl is provided by the runtime
- ManagedMask = 0x0004, // Flags specifying whether the code is managed or unmanaged
- Unmanaged = 0x0004, // Method impl is unmanaged, otherwise managed
- Managed = 0x0000, // Method impl is managed
+ ManagedMask = 0x0004, // Flags specifying whether the code is managed or unmanaged
+ Unmanaged = 0x0004, // Method impl is unmanaged, otherwise managed
+ Managed = 0x0000, // Method impl is managed
- // Implementation info and interop
- ForwardRef = 0x0010, // Indicates method is defined; used primarily in merge scenarios
- PreserveSig = 0x0080, // Reserved: conforming implementations may ignore
- InternalCall = 0x1000, // Reserved: shall be zero in conforming implementations
- Synchronized = 0x0020, // Method is single threaded through the body
- NoOptimization = 0x0040, // Method is not optimized by the JIT.
- NoInlining = 0x0008, // Method may not be inlined
- AggressiveInlining = 0x0100, // Method should be inlined, if possible.
+ ForwardRef = 0x0010, // The method is declared, but its implementation is provided elsewhere.
+ PreserveSig = 0x0080, // The method signature is exported exactly as declared.
+ InternalCall = 0x1000, // The call is internal, that is, it calls a method that's implemented within the CLR.
+ Synchronized = 0x0020, // The method can be executed by only one thread at a time.
+ // Static methods lock on the type, whereas instance methods lock on the instance.
+ NoOptimization = 0x0040, // The method is not optimized by the just-in-time (JIT) compiler or by native codegen.
+ NoInlining = 0x0008, // The method cannot be inlined.
+ AggressiveInlining = 0x0100, // The method should be inlined if possible.
+ AggressiveOptimization = 0x0200, // The method contains code that should always be optimized by the JIT compiler.
}
}
diff --git a/Test/Mono.Cecil.Tests/ILProcessorTests.cs b/Test/Mono.Cecil.Tests/ILProcessorTests.cs
index 09b17a6..fd462c3 100644
--- a/Test/Mono.Cecil.Tests/ILProcessorTests.cs
+++ b/Test/Mono.Cecil.Tests/ILProcessorTests.cs
@@ -470,7 +470,8 @@ namespace Mono.Cecil.Tests {
};
// For some reason the Native PDB reader/writer store the custom info on the method.DebugInfo.CustomInfo, while portable PDB stores it on method.CustomInfo.
- var customDebugInfo = roundtripType == RoundtripType.Pdb ? method.DebugInformation.CustomDebugInformations : method.CustomDebugInformations;
+ var customDebugInfo = (roundtripType == RoundtripType.Pdb && Platform.HasNativePdbSupport)
+ ? method.DebugInformation.CustomDebugInformations : method.CustomDebugInformations;
customDebugInfo.Add (new StateMachineScopeDebugInformation () {
Scopes = {
new StateMachineScope(instructions[1], instructions[6])
diff --git a/Test/Mono.Cecil.Tests/PortablePdbTests.cs b/Test/Mono.Cecil.Tests/PortablePdbTests.cs
index 3aa0ffc..a89f79d 100644
--- a/Test/Mono.Cecil.Tests/PortablePdbTests.cs
+++ b/Test/Mono.Cecil.Tests/PortablePdbTests.cs
@@ -454,6 +454,23 @@ namespace Mono.Cecil.Tests {
}
[Test]
+ public void NullGenericInstConstant ()
+ {
+ TestModule ("NullConst.dll", module => {
+ var type = module.GetType ("NullConst.Program");
+ var method = type.GetMethod ("MakeConst");
+ var symbol = method.DebugInformation;
+
+ Assert.IsNotNull (symbol);
+ Assert.AreEqual (1, symbol.Scope.Constants.Count);
+
+ var a = symbol.Scope.Constants [0];
+ Assert.AreEqual ("thing", a.Name);
+ Assert.AreEqual (null, a.Value);
+ }, verify: false, symbolReaderProvider: typeof (PortablePdbReaderProvider), symbolWriterProvider: typeof (PortablePdbWriterProvider));
+ }
+
+ [Test]
public void InvalidConstantRecord ()
{
using (var module = GetResourceModule ("mylib.dll", new ReaderParameters { SymbolReaderProvider = new PortablePdbReaderProvider () })) {
diff --git a/Test/Resources/assemblies/NullConst.dll b/Test/Resources/assemblies/NullConst.dll
new file mode 100644
index 0000000..7c58453
--- /dev/null
+++ b/Test/Resources/assemblies/NullConst.dll
Binary files differ
diff --git a/Test/Resources/assemblies/NullConst.pdb b/Test/Resources/assemblies/NullConst.pdb
new file mode 100644
index 0000000..e70f2c2
--- /dev/null
+++ b/Test/Resources/assemblies/NullConst.pdb
Binary files differ
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