Author: jbevain
Date: 2007-11-20 16:06:11 -0500 (Tue, 20 Nov 2007)
New Revision: 90035

Modified:
   trunk/mono/mono/dis/ChangeLog
   trunk/mono/mono/dis/main.c
Log:
2007-11-20  Jb Evain  <[EMAIL PROTECTED]>

        * main.c: support for uninitialized .data.



Modified: trunk/mono/mono/dis/ChangeLog
===================================================================
--- trunk/mono/mono/dis/ChangeLog       2007-11-20 20:58:30 UTC (rev 90034)
+++ trunk/mono/mono/dis/ChangeLog       2007-11-20 21:06:11 UTC (rev 90035)
@@ -1,3 +1,7 @@
+2007-11-20  Jb Evain  <[EMAIL PROTECTED]>
+
+       * main.c: support for uninitialized .data.
+
 2007-11-06  Jb Evain  <[EMAIL PROTECTED]>
 
        * main.c: Don't crash when a referenced assembly cannot be

Modified: trunk/mono/mono/dis/main.c
===================================================================
--- trunk/mono/mono/dis/main.c  2007-11-20 20:58:30 UTC (rev 90034)
+++ trunk/mono/mono/dis/main.c  2007-11-20 21:06:11 UTC (rev 90035)
@@ -717,7 +717,7 @@
        }
 
        mh = mono_metadata_parse_mh_full (m, container, ptr);
-       if ((entry_point = mono_image_get_entry_point (m))){
+       if ((entry_point = mono_image_get_entry_point (m)) && 
mono_metadata_token_index (entry_point)){
                loc = mono_metadata_locate_token (m, entry_point);
                if (rva == read32 (loc))
                        fprintf (output, "\t.entrypoint\n");
@@ -1386,6 +1386,23 @@
        }
 }
 
+static char *
+get_uninitialized_data_type (guint32 size)
+{
+       switch (size) {
+       case 1:
+               return "int8";
+       case 2:
+               return "int16";
+       case 4:
+               return "int32";
+       case 8:
+               return "int64";
+       default:
+               g_error ("get_uninitialized_data_type for size: %d\n", size);
+       }               
+}
+
 /**
  * dis_data:
  * @m: metadata context
@@ -1414,13 +1431,18 @@
                type = mono_metadata_parse_field_type (m, 0, sig + 1, &sig);
                mono_class_init (mono_class_from_mono_type (type));
                size = mono_type_size (type, &align);
-               fprintf (output, ".data D_%08x = bytearray (", cols 
[MONO_FIELD_RVA_RVA]);
-               for (b = 0; b < size; ++b) {
-                       if (!(b % 16))
-                               fprintf (output, "\n\t");
-                       fprintf (output, " %02X", rva [b] & 0xff);
-               }
-               fprintf (output, ") // size: %d\n", size);
+
+               if (rva) {
+                       fprintf (output, ".data D_%08x = bytearray (", cols 
[MONO_FIELD_RVA_RVA]);
+                       for (b = 0; b < size; ++b) {
+                               if (!(b % 16))
+                                       fprintf (output, "\n\t");
+                               fprintf (output, " %02X", rva [b] & 0xff);
+                       }
+                       fprintf (output, ") // size: %d\n", size);
+               } else
+                       fprintf (output, ".data D_%08x = %s [%d]\n",
+                               cols [MONO_FIELD_RVA_RVA], 
get_uninitialized_data_type (size), size);
        }
 }
 

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to