Init the right runtime version.
authorRodrigo Kumpera <kumpera@gmail.com>
Wed, 3 Nov 2010 19:35:17 +0000 (17:35 -0200)
committerRodrigo Kumpera <kumpera@gmail.com>
Wed, 3 Nov 2010 19:43:05 +0000 (17:43 -0200)
* pedump.c (verify_image_file): Finish initializing the
runtime here since at this point we can safely query
what version the supplied image requires.

Fixes #650916

mono/metadata/pedump.c

index 19b6f6698daddd2d175ccac63293bd1b90826c4f..d6c159dcf300fd2eb5e69f45d392edf4280a7ed5 100644 (file)
@@ -39,6 +39,10 @@ gboolean verify_metadata = FALSE;
 gboolean verify_code = FALSE;
 gboolean verify_partial_md = FALSE;
 
+static MonoAssembly *pedump_preload (MonoAssemblyName *aname, gchar **assemblies_path, gpointer user_data);
+static void pedump_assembly_load_hook (MonoAssembly *assembly, gpointer user_data);
+static MonoAssembly *pedump_assembly_search_hook (MonoAssemblyName *aname, gpointer user_data);
+
 /* unused
 static void
 hex_dump (const char *buffer, int base, int count)
@@ -451,6 +455,17 @@ verify_image_file (const char *fname)
        assembly->image = image;
        image->assembly = assembly;
 
+       /*Finish initializing the runtime*/
+       mono_install_assembly_load_hook (pedump_assembly_load_hook, NULL);
+       mono_install_assembly_search_hook (pedump_assembly_search_hook, NULL);
+
+       mono_init_version ("pedump", image->version);
+
+       mono_install_assembly_preload_hook (pedump_preload, GUINT_TO_POINTER (FALSE));
+
+       mono_marshal_init ();
+
+
        if (!verify_partial_md && !mono_verifier_verify_full_table_data (image, &errors))
                goto invalid_image;
 
@@ -676,14 +691,6 @@ main (int argc, char *argv [])
        }
 
        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_install_assembly_preload_hook (pedump_preload, GUINT_TO_POINTER (FALSE));
-
-               mono_marshal_init ();
                run_new_metadata_verifier = 1;
        }