aboutsummaryrefslogtreecommitdiff
path: root/gdb/remote-e7000.c
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>1996-04-04 23:57:02 +0000
committerStan Shebs <shebs@codesourcery.com>1996-04-04 23:57:02 +0000
commit72158e714e53d17f1888c645abf5140076338270 (patch)
treec69ce538a065d711b29277a6f75e80c00a6dd646 /gdb/remote-e7000.c
parent997f0ee96726488b7b9a5c0026455ebbceedba4a (diff)
downloadgdb-72158e714e53d17f1888c645abf5140076338270.zip
gdb-72158e714e53d17f1888c645abf5140076338270.tar.gz
gdb-72158e714e53d17f1888c645abf5140076338270.tar.bz2
* symfile.c (report_transfer_performance): New function.
(generic_load): Call it to report transfer rate. * remote-e7000.c (e7000_load): Ditto. PR 9353
Diffstat (limited to 'gdb/remote-e7000.c')
-rw-r--r--gdb/remote-e7000.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/gdb/remote-e7000.c b/gdb/remote-e7000.c
index 01c9856..e0f54b2 100644
--- a/gdb/remote-e7000.c
+++ b/gdb/remote-e7000.c
@@ -44,6 +44,8 @@
#include "serial.h"
#include "remote-utils.h"
#include "symfile.h"
+#include <time.h>
+
#if 0
#define HARD_BREAKPOINTS
#define BC_BREAKPOINTS 0
@@ -56,6 +58,9 @@
extern void notice_quit PARAMS ((void));
+extern void report_transfer_performance PARAMS ((unsigned long,
+ time_t, time_t));
+
/* Local function declarations. */
static void e7000_close PARAMS ((int));
@@ -580,8 +585,12 @@ or \t\ttarget e7000 pc\n");
expect_prompt ();
+ puts_e7000debug ("b -\r");
+
+ expect_prompt ();
+
if (from_tty)
- printf_filtered ("Remote %s connected to %s\n", target_shortname,
+ printf_filtered ("Remote target %s connected to %s\n", target_shortname,
dev_name);
#ifdef GDB_TARGET_IS_H8300
@@ -1391,6 +1400,8 @@ e7000_load (args, from_tty)
char *filename;
int quiet;
int nostart;
+ time_t start_time, end_time; /* Start and end times of download */
+ unsigned long data_count; /* Number of bytes transferred to memory */
if (!strchr (dev_name, ':'))
{
@@ -1442,6 +1453,9 @@ e7000_load (args, from_tty)
error ("\"%s\" is not an object file: %s", filename,
bfd_errmsg (bfd_get_error ()));
+ start_time = time (NULL);
+ data_count = 0;
+
puts_e7000debug ("mw\r");
expect ("\nOK");
@@ -1465,6 +1479,8 @@ e7000_load (args, from_tty)
fptr = 0;
+ data_count += section_size;
+
while (section_size > 0)
{
int count;
@@ -1488,7 +1504,9 @@ e7000_load (args, from_tty)
bfd_get_section_contents (pbfd, section, buf + 10, fptr, count);
if (SERIAL_WRITE (e7000_desc, buf, count + 10))
- fprintf_unfiltered (gdb_stderr, "e7000_load: SERIAL_WRITE failed: %s\n", safe_strerror(errno));
+ fprintf_unfiltered (gdb_stderr,
+ "e7000_load: SERIAL_WRITE failed: %s\n",
+ safe_strerror(errno));
expect ("OK");
@@ -1509,6 +1527,8 @@ e7000_load (args, from_tty)
expect_prompt ();
+ end_time = time (NULL);
+
/* Finally, make the PC point at the start address */
if (exec_bfd)
@@ -1534,6 +1554,8 @@ e7000_load (args, from_tty)
/* start_routine (entry);*/
}
+ report_transfer_performance (data_count, start_time, end_time);
+
do_cleanups (old_chain);
}