X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fpedump.c;h=10ccb106c160d4614efc5af1c69327dbd13af13d;hb=c8229679ca4da20e484349fd02d3e8382c71d282;hp=b52f5d79dbcc50893b9980dadc5a27b7f3bf29e0;hpb=04d1b4116331e3813b8f75304f714a5d61ba1214;p=mono.git diff --git a/mono/metadata/pedump.c b/mono/metadata/pedump.c index b52f5d79dbc..10ccb106c16 100644 --- a/mono/metadata/pedump.c +++ b/mono/metadata/pedump.c @@ -261,6 +261,14 @@ dsh (const char *label, MonoImage *meta, MonoStreamHeader *sh) sh->size, sh->size); } +static void +dump_metadata_header (MonoImage *meta) +{ + printf ("\nMetadata header:\n"); + printf (" Version: %d.%d\n", meta->md_version_major, meta->md_version_minor); + printf (" Version string: %s\n", meta->version); +} + static void dump_metadata_ptrs (MonoImage *meta) { @@ -276,7 +284,9 @@ static void dump_metadata (MonoImage *meta) { int table; - + + dump_metadata_header (meta); + dump_metadata_ptrs (meta); printf ("Rows:\n"); @@ -319,13 +329,13 @@ dump_dotnet_iinfo (MonoImage *image) dump_methoddef (image, iinfo->cli_cli_header.ch_entry_point); } -static void +static int dump_verify_info (MonoImage *image, int flags) { GSList *errors, *tmp; - int count = 0; + int count = 0, verifiable = 0; const char* desc [] = { - "Ok", "Error", "Warning", NULL, "CLS" + "Ok", "Error", "Warning", NULL, "CLS", NULL, NULL, NULL, "Not Verifiable" }; errors = mono_image_verify_tables (image, flags); @@ -344,7 +354,6 @@ dump_verify_info (MonoImage *image, int flags) for (i = 0; i < m->rows; ++i) { MonoMethod *method; - method = mono_get_method (image, MONO_TOKEN_METHOD_DEF | (i+1), NULL); errors = mono_method_verify (method, flags); if (errors) { @@ -358,8 +367,14 @@ dump_verify_info (MonoImage *image, int flags) for (tmp = errors; tmp; tmp = tmp->next) { MonoVerifyInfo *info = tmp->data; g_print ("%s: %s\n", desc [info->status], info->message); - if (info->status == MONO_VERIFY_ERROR) + if (info->status == MONO_VERIFY_ERROR) { count++; + verifiable = 3; + } + if(info->status == MONO_VERIFY_NOT_VERIFIABLE) { + if (verifiable < 2) + verifiable = 2; + } } mono_free_verify_list (errors); } @@ -367,6 +382,7 @@ dump_verify_info (MonoImage *image, int flags) if (count) g_print ("Error count: %d\n", count); + return verifiable; } static void @@ -408,10 +424,10 @@ main (int argc, char *argv []) usage (); mono_metadata_init (); - mono_raw_buffer_init (); - mono_images_init (); - mono_assemblies_init (); - mono_loader_init (); + mono_raw_buffer_init (); + mono_images_init (); + mono_assemblies_init (); + mono_loader_init (); image = mono_image_open (file, NULL); if (!image){ @@ -436,9 +452,15 @@ main (int argc, char *argv []) g_print ("Unknown verify flag %s\n", tok); tok = strtok (NULL, ","); } - mono_init (file); + mono_init_from_assembly (file, file); assembly = mono_assembly_open (file, NULL); - dump_verify_info (assembly->image, f); + + if (!assembly) { + g_print ("Could not open assembly %s\n", file); + return 4; + } + + return dump_verify_info (assembly->image, f); } else mono_image_close (image);