| Index: gdb/dsrec.c
|
| diff --git a/gdb/dsrec.c b/gdb/dsrec.c
|
| index d2c99b2c53e954d24981aa9fb0af274405a3e153..162fc6477c0abf5855c24ca23c94b48521496d9e 100644
|
| --- a/gdb/dsrec.c
|
| +++ b/gdb/dsrec.c
|
| @@ -1,6 +1,5 @@
|
| /* S-record download support for GDB, the GNU debugger.
|
| - Copyright (C) 1995-1997, 1999-2001, 2003-2004, 2007-2012 Free
|
| - Software Foundation, Inc.
|
| + Copyright (C) 1995-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -20,11 +19,11 @@
|
| #include "defs.h"
|
| #include "serial.h"
|
| #include "srec.h"
|
| +#include <sys/time.h>
|
| #include <time.h>
|
| #include "gdb_assert.h"
|
| -#include "gdb_string.h"
|
| -
|
| -extern void report_transfer_performance (unsigned long, time_t, time_t);
|
| +#include <string.h>
|
| +#include "gdb_bfd.h"
|
|
|
| extern int remote_debug;
|
|
|
| @@ -54,25 +53,28 @@ load_srec (struct serial *desc, const char *file, bfd_vma load_offset,
|
| char *srec;
|
| int i;
|
| int reclen;
|
| - time_t start_time, end_time;
|
| + struct timeval start_time, end_time;
|
| unsigned long data_count = 0;
|
| + struct cleanup *cleanup;
|
|
|
| srec = (char *) alloca (maxrecsize + 1);
|
|
|
| - abfd = bfd_openr (file, 0);
|
| + abfd = gdb_bfd_open (file, NULL, -1);
|
| if (!abfd)
|
| {
|
| printf_filtered (_("Unable to open file %s\n"), file);
|
| return;
|
| }
|
|
|
| + cleanup = make_cleanup_bfd_unref (abfd);
|
| if (bfd_check_format (abfd, bfd_object) == 0)
|
| {
|
| printf_filtered (_("File is not an object file\n"));
|
| + do_cleanups (cleanup);
|
| return;
|
| }
|
|
|
| - start_time = time (NULL);
|
| + gettimeofday (&start_time, NULL);
|
|
|
| /* Write a type 0 header record. no data for a type 0, and there
|
| is no data, so len is 0. */
|
| @@ -100,8 +102,8 @@ load_srec (struct serial *desc, const char *file, bfd_vma load_offset,
|
| have also been used. cagney 1999-09-01 */
|
| printf_filtered ("%s\t: %s .. %s ",
|
| section_name,
|
| - paddress (target_gdbarch, addr),
|
| - paddress (target_gdbarch, addr + size));
|
| + paddress (target_gdbarch (), addr),
|
| + paddress (target_gdbarch (), addr + size));
|
| gdb_flush (gdb_stdout);
|
|
|
| data_count += size;
|
| @@ -147,7 +149,7 @@ load_srec (struct serial *desc, const char *file, bfd_vma load_offset,
|
| if (hashmark)
|
| putchar_unfiltered ('\n');
|
|
|
| - end_time = time (NULL);
|
| + gettimeofday (&end_time, NULL);
|
|
|
| /* Write a terminator record. */
|
|
|
| @@ -169,7 +171,9 @@ load_srec (struct serial *desc, const char *file, bfd_vma load_offset,
|
|
|
| serial_flush_input (desc);
|
|
|
| - report_transfer_performance (data_count, start_time, end_time);
|
| + print_transfer_performance (gdb_stdout, data_count, 0,
|
| + &start_time, &end_time);
|
| + do_cleanups (cleanup);
|
| }
|
|
|
| /*
|
| @@ -222,10 +226,10 @@ make_srec (char *srec, CORE_ADDR targ_addr, bfd *abfd, asection *sect,
|
| {
|
| unsigned char checksum;
|
| int tmp;
|
| - const static char hextab[] = "0123456789ABCDEF";
|
| - const static char data_code_table[] = "123";
|
| - const static char term_code_table[] = "987";
|
| - const static char header_code_table[] = "000";
|
| + static const char hextab[] = "0123456789ABCDEF";
|
| + static const char data_code_table[] = "123";
|
| + static const char term_code_table[] = "987";
|
| + static const char header_code_table[] = "000";
|
| char const *code_table;
|
| int addr_size;
|
| int payload_size;
|
| @@ -254,7 +258,7 @@ make_srec (char *srec, CORE_ADDR targ_addr, bfd *abfd, asection *sect,
|
| else
|
| internal_error (__FILE__, __LINE__,
|
| _("make_srec: Bad address (%s), or bad flags (0x%x)."),
|
| - paddress (target_gdbarch, targ_addr), flags);
|
| + paddress (target_gdbarch (), targ_addr), flags);
|
|
|
| /* Now that we know the address size, we can figure out how much
|
| data this record can hold. */
|
|
|