--- ChangeLog.orig 2006-09-07 15:23:19.000000000 +0200 +++ ChangeLog 2006-09-07 15:27:46.000000000 +0200 @@ -1,3 +1,8 @@ +2006-09-07 Ilko Iliev + + * symfile.c (print_transfer_performance): Fix overflow problem + and change bits/sec to KBytes/sec or bytes/sec + 2006-08-28 DJ Delorie * m32c-tdep.c (m32c_decode_srcdest4): Initialize fields in sd --- symfile.c.orig 2006-08-31 15:29:12.000000000 +0200 +++ symfile.c 2006-09-07 17:23:48.000000000 +0200 @@ -1758,27 +1758,36 @@ print_transfer_performance (struct ui_fi unsigned long write_count, const struct timeval *start_time, const struct timeval *end_time) { unsigned long time_count; + unsigned long rr; /* Compute the elapsed time in milliseconds, as a tradeoff between accuracy and overflow. */ time_count = (end_time->tv_sec - start_time->tv_sec) * 1000; time_count += (end_time->tv_usec - start_time->tv_usec) / 1000; 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"); + rr = (unsigned long)((unsigned long long)data_count * 1000 / time_count); + if ( rr < 1024 ) + { + ui_out_field_fmt (uiout, "transfer-rate", "%lu", rr ); + ui_out_text (uiout, " bytes/sec"); + } + else + { + ui_out_field_fmt (uiout, "transfer-rate", "%lu", rr / 1024 ); + ui_out_text (uiout, " Kbytes/sec"); + } } else { - ui_out_field_fmt (uiout, "transferred-bits", "%lu", (data_count * 8)); - ui_out_text (uiout, " bits in <1 sec"); + ui_out_field_fmt (uiout, "transferred-bytes", "%lu", data_count); + ui_out_text (uiout, " bytes in <1 sec"); } if (write_count > 0) { ui_out_text (uiout, ", "); ui_out_field_fmt (uiout, "write-rate", "%lu", data_count / write_count);