#include "serial.h"
#include "remote-utils.h"
#include "symfile.h"
+#include <time.h>
+
#if 0
#define HARD_BREAKPOINTS
#define BC_BREAKPOINTS 0
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));
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
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, ':'))
{
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");
fptr = 0;
+ data_count += section_size;
+
while (section_size > 0)
{
int count;
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");
expect_prompt ();
+ end_time = time (NULL);
+
/* Finally, make the PC point at the start address */
if (exec_bfd)
/* start_routine (entry);*/
}
+ report_transfer_performance (data_count, start_time, end_time);
+
do_cleanups (old_chain);
}
extern int info_verbose;
+extern void report_transfer_performance PARAMS ((unsigned long,
+ time_t, time_t));
+
/* Functions this file defines */
-static void
-set_initial_language PARAMS ((void));
+static void set_initial_language PARAMS ((void));
-static void
-load_command PARAMS ((char *, int));
+static void load_command PARAMS ((char *, int));
-static void
-add_symbol_file_command PARAMS ((char *, int));
+static void add_symbol_file_command PARAMS ((char *, int));
-static void
-add_shared_symbol_files_command PARAMS ((char *, int));
+static void add_shared_symbol_files_command PARAMS ((char *, int));
-static void
-cashier_psymtab PARAMS ((struct partial_symtab *));
+static void cashier_psymtab PARAMS ((struct partial_symtab *));
-static int
-compare_psymbols PARAMS ((const void *, const void *));
+static int compare_psymbols PARAMS ((const void *, const void *));
-static int
-compare_symbols PARAMS ((const void *, const void *));
+static int compare_symbols PARAMS ((const void *, const void *));
-static bfd *
-symfile_bfd_open PARAMS ((char *));
+static bfd *symfile_bfd_open PARAMS ((char *));
-static void
-find_sym_fns PARAMS ((struct objfile *));
+static void find_sym_fns PARAMS ((struct objfile *));
/* List of all available sym_fns. On gdb startup, each object file reader
calls add_symtab_fns() to register information on each format it is
loaded in. remote-nindy.c had no call to symbol_file_add, but remote-vx.c
does. */
- if (end_time != start_time)
- printf_filtered ("Transfer rate: %d bits/sec.\n",
- (data_count * 8)/(end_time - start_time));
+ report_transfer_performance (data_count, start_time, end_time);
do_cleanups (old_cleanups);
}
+/* Report how fast the transfer went. */
+
+void
+report_transfer_performance (data_count, start_time, end_time)
+unsigned long data_count;
+time_t start_time, end_time;
+{
+ printf_filtered ("Transfer rate: ");
+ if (end_time != start_time)
+ printf_filtered ("%d bits/sec",
+ (data_count * 8) / (end_time - start_time));
+ else
+ printf_filtered ("%d bits in <1 sec", (data_count * 8));
+ printf_filtered (".\n");
+}
+
/* This function allows the addition of incrementally linked object files.
It does not modify any state in the target, only in the debugger. */