2007-07-03 Ilko Iliev <iliev@ronetix.at>
authorDaniel Jacobowitz <drow@false.org>
Tue, 3 Jul 2007 15:32:20 +0000 (15:32 +0000)
committerDaniel Jacobowitz <drow@false.org>
Tue, 3 Jul 2007 15:32:20 +0000 (15:32 +0000)
    Daniel Jacobowitz  <dan@codesourcery.com>

* symfile.c (print_transfer_performance): Avoid integer overflow.
Use larger units.

gdb/ChangeLog
gdb/symfile.c

index 4848e0f474143e0a0db48d321efaf47ff65bf433..069c376254e0ba114ae156eec6f10bdf62efaa6b 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-03  Ilko Iliev  <iliev@ronetix.at>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * symfile.c (print_transfer_performance): Avoid integer overflow.
+       Use larger units.
+
 2007-07-03  Markus Deuling  <deuling@de.ibm.com>
 
        * cp-namespace.c (lookup_symbol_file): Add block to
index f513dfa6f1b52208de59cffe024a63c80d2ef0f1..8e4e03d8aa454dc5ee2ebf50f21410aea1f6282c 100644 (file)
@@ -1947,7 +1947,7 @@ print_transfer_performance (struct ui_file *stream,
                            const struct timeval *start_time,
                            const struct timeval *end_time)
 {
-  unsigned long time_count;
+  ULONGEST time_count;
 
   /* Compute the elapsed time in milliseconds, as a tradeoff between
      accuracy and overflow.  */
@@ -1957,9 +1957,23 @@ print_transfer_performance (struct ui_file *stream,
   ui_out_text (uiout, "Transfer rate: ");
   if (time_count > 0)
     {
-      ui_out_field_fmt (uiout, "transfer-rate", "%lu",
-                       1000 * (data_count * 8) / time_count);
-      ui_out_text (uiout, " bits/sec");
+      unsigned long rate = ((ULONGEST) data_count * 1000) / time_count;
+
+      if (ui_out_is_mi_like_p (uiout))
+       {
+         ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate * 8);
+         ui_out_text (uiout, " bits/sec");
+       }
+      else if (rate < 1024)
+       {
+         ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate);
+         ui_out_text (uiout, " bytes/sec");
+       }
+      else
+       {
+         ui_out_field_fmt (uiout, "transfer-rate", "%lu", rate / 1024);
+         ui_out_text (uiout, " KB/sec");
+       }
     }
   else
     {