internal ModuleGroup GetModuleGroup(SymbolFile symfile)
{
foreach (ModuleGroup group in module_groups.Values) {
if (group.Regexp == null)
continue;
try {
if (Regex.IsMatch (symfile.FullName, group.Regexp))
return group;
} catch {
}
}
if (symfile.IsNative) {
if (symfile.FullName.EndsWith ("/mono"))
return GetModuleGroup ("runtime");
else if (symfile.HasDebuggingInfo)
return GetModuleGroup ("dll");
else
return GetModuleGroup ("native");
} else {
string assembly_name = symfile.FullName;
int pos = assembly_name.IndexOf (',');
if (pos > 0)
assembly_name = assembly_name.Substring (0, pos);
string[] corlib_assemblies = { "mscorlib", "System" };
foreach (string name in corlib_assemblies) {
if (assembly_name == name)
return GetModuleGroup ("corlib");
}
return GetModuleGroup ("managed");
}
}