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:
authorJb Evain <jb@evain.net>2015-03-19 23:47:24 +0300
committerJb Evain <jbevain@gmail.com>2015-04-30 12:22:13 +0300
commit9fd92b50e1ed1f0e9e78231736dc117c34b50852 (patch)
tree9fe11fa7c0042ccb7034d61070bac7cf594dab6c
parent4ff484b061eb1a1b77284eb9f8c90ddcb6e05dae (diff)
Add support for reading System.Runtime as corlib
-rw-r--r--Mono.Cecil/AssemblyReader.cs3
-rw-r--r--Mono.Cecil/MetadataSystem.cs2
-rw-r--r--Mono.Cecil/ModuleDefinition.cs10
-rw-r--r--Mono.Cecil/TypeSystem.cs3
4 files changed, 16 insertions, 2 deletions
diff --git a/Mono.Cecil/AssemblyReader.cs b/Mono.Cecil/AssemblyReader.cs
index ee440cf..853c593 100644
--- a/Mono.Cecil/AssemblyReader.cs
+++ b/Mono.Cecil/AssemblyReader.cs
@@ -849,6 +849,9 @@ namespace Mono.Cecil {
metadata.AddTypeDefinition (type);
+ if (type.IsTypeOf ("System", "Object"))
+ metadata.HasSystemObject = true;
+
this.context = type;
type.BaseType = GetTypeDefOrRef (ReadMetadataToken (CodedIndex.TypeDefOrRef));
diff --git a/Mono.Cecil/MetadataSystem.cs b/Mono.Cecil/MetadataSystem.cs
index 15922b6..b5c620b 100644
--- a/Mono.Cecil/MetadataSystem.cs
+++ b/Mono.Cecil/MetadataSystem.cs
@@ -34,6 +34,8 @@ namespace Mono.Cecil {
internal TypeDefinition [] Types;
internal TypeReference [] TypeReferences;
+ internal bool HasSystemObject;
+
internal FieldDefinition [] Fields;
internal MethodDefinition [] Methods;
internal MemberReference [] MemberReferences;
diff --git a/Mono.Cecil/ModuleDefinition.cs b/Mono.Cecil/ModuleDefinition.cs
index f887789..deb0098 100644
--- a/Mono.Cecil/ModuleDefinition.cs
+++ b/Mono.Cecil/ModuleDefinition.cs
@@ -1112,7 +1112,15 @@ namespace Mono.Cecil {
if (module.Assembly == null)
return false;
- return module.Assembly.Name.Name == "mscorlib";
+ var assembly_name = module.Assembly.Name.Name;
+
+ if (assembly_name != "mscorlib" && assembly_name != "System.Runtime")
+ return false;
+
+ if (module.HasImage && !module.MetadataSystem.HasSystemObject)
+ return false;
+
+ return true;
}
public static string GetFullyQualifiedName (this Stream self)
diff --git a/Mono.Cecil/TypeSystem.cs b/Mono.Cecil/TypeSystem.cs
index 57b611e..da807e7 100644
--- a/Mono.Cecil/TypeSystem.cs
+++ b/Mono.Cecil/TypeSystem.cs
@@ -96,12 +96,13 @@ namespace Mono.Cecil {
return corlib;
const string mscorlib = "mscorlib";
+ const string system_runtime = "System.Runtime";
var references = module.AssemblyReferences;
for (int i = 0; i < references.Count; i++) {
var reference = references [i];
- if (reference.Name == mscorlib)
+ if (reference.Name == mscorlib || reference.Name == system_runtime)
return corlib = reference;
}