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:
Diffstat (limited to 'symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs')
-rw-r--r--symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs29
1 files changed, 24 insertions, 5 deletions
diff --git a/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs b/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs
index b07191d..964f4ad 100644
--- a/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs
+++ b/symbols/pdb/Mono.Cecil.Pdb/NativePdbReader.cs
@@ -137,9 +137,15 @@ namespace Mono.Cecil.Pdb {
}
}
- if (function.iteratorScopes != null)
- foreach (var iterator_scope in function.iteratorScopes)
- symbol.CustomDebugInformations.Add (new StateMachineScopeDebugInformation ((int) iterator_scope.Offset, (int) (iterator_scope.Offset + iterator_scope.Length + 1)));
+ if (function.iteratorScopes != null) {
+ var state_machine = new StateMachineScopeDebugInformation ();
+
+ foreach (var iterator_scope in function.iteratorScopes) {
+ state_machine.Scopes.Add (new StateMachineScope ((int) iterator_scope.Offset, (int) (iterator_scope.Offset + iterator_scope.Length + 1)));
+ }
+
+ symbol.CustomDebugInformations.Add (state_machine);
+ }
if (function.synchronizationInformation != null) {
var async_debug_info = new AsyncMethodBodyDebugInformation ((int) function.synchronizationInformation.GeneratedCatchHandlerOffset);
@@ -147,11 +153,11 @@ namespace Mono.Cecil.Pdb {
foreach (var synchronization_point in function.synchronizationInformation.synchronizationPoints) {
async_debug_info.Yields.Add (new InstructionOffset ((int) synchronization_point.SynchronizeOffset));
async_debug_info.Resumes.Add (new InstructionOffset ((int) synchronization_point.ContinuationOffset));
+ async_debug_info.ResumeMethods.Add (method);
}
symbol.CustomDebugInformations.Add (async_debug_info);
- async_debug_info.MoveNextMethod = method;
symbol.StateMachineKickOffMethod = (MethodDefinition) method.Module.LookupToken ((int) function.synchronizationInformation.kickoffMethodToken);
}
@@ -280,7 +286,11 @@ namespace Mono.Cecil.Pdb {
break;
}
case 'A':
- var index = used_namespace.IndexOf(' ');
+ var index = used_namespace.IndexOf (' ');
+ if (index < 0) {
+ target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = used_namespace };
+ break;
+ }
var alias_value = used_namespace.Substring (1, index - 1);
var alias_target_value = used_namespace.Substring (index + 2);
switch (used_namespace [index + 1]) {
@@ -294,6 +304,15 @@ namespace Mono.Cecil.Pdb {
break;
}
break;
+ case '*':
+ target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = value };
+ break;
+ case '@':
+ if (!value.StartsWith ("P:"))
+ continue;
+
+ target = new ImportTarget (ImportTargetKind.ImportNamespace) { @namespace = value.Substring (2) };
+ break;
}
if (target != null)