mono_meta_table_name (table),
meta->tables [table].rows,
meta->tables [table].row_size,
- meta->tables [table].base - meta->raw_data
+ (unsigned int)(meta->tables [table].base - meta->raw_data)
);
}
}
/**/
}
- if (run_new_metadata_verifier) {
- mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
+ if (verify_pe || run_new_metadata_verifier) {
+ mono_install_assembly_load_hook (pedump_assembly_load_hook, NULL);
+ mono_install_assembly_search_hook (pedump_assembly_search_hook, NULL);
+
+ mono_init_version ("pedump", "v2.0.50727");
- mono_init ("pedump");
+ mono_install_assembly_preload_hook (pedump_preload, GUINT_TO_POINTER (FALSE));
mono_marshal_init ();
+ run_new_metadata_verifier = 1;
+ }
+
+ if (run_new_metadata_verifier) {
+ int res;
+ mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
- return verify_image_file (file);
+ res = verify_image_file (file);
+ if (res || !verify_code)
+ return res;
}
image = mono_image_open (file, NULL);
dump_dotnet_iinfo (image);
if (verify_pe) {
MonoAssembly *assembly;
+ MonoImage *image;
+ MonoImageOpenStatus status;
- mono_install_assembly_load_hook (pedump_assembly_load_hook, NULL);
- mono_install_assembly_search_hook (pedump_assembly_search_hook, NULL);
-
- mono_init_from_assembly (file, file);
-
- mono_install_assembly_preload_hook (pedump_preload, GUINT_TO_POINTER (FALSE));
-
- mono_marshal_init ();
+ mono_verifier_set_mode (verifier_mode);
assembly = mono_assembly_open (file, NULL);
+ /*fake an assembly for netmodules so the verifier works*/
+ if (!assembly && (image = mono_image_open (file, &status)) && image->tables [MONO_TABLE_ASSEMBLY].rows == 0) {
+ assembly = g_new0 (MonoAssembly, 1);
+ assembly->in_gac = FALSE;
+ assembly->image = image;
+ image->assembly = assembly;
+ }
if (!assembly) {
g_print ("Could not open assembly %s\n", file);