int n;
char *p, *q;
- extern int strtol();
-
/* if no args, then nothing to do. */
if (args == NULL || *args == '\0')
return;
/* check for missing or empty baud rate. */
CHECKDONE(p, q);
- sr_set_baud_rate(n);
+ baud_rate = n;
/* look for debug value. */
n = strtol(p, &q, 10);
if (!sr_get_desc())
perror_with_name((char *) sr_get_device());
- if (SERIAL_SETBAUDRATE(sr_get_desc(), sr_get_baud_rate()) != 0)
+ if (baud_rate != -1)
{
- SERIAL_CLOSE(sr_get_desc());
- perror_with_name(sr_get_device());
+ if (SERIAL_SETBAUDRATE(sr_get_desc(), baud_rate) != 0)
+ {
+ SERIAL_CLOSE(sr_get_desc());
+ perror_with_name(sr_get_device());
+ }
}
SERIAL_RAW (sr_get_desc());
gr_settings->clear_all_breakpoints = remove_breakpoints;
if (from_tty)
- printf_filtered ("Remote debugging using `%s' at baud rate of %d\n",
- sr_get_device(), sr_get_baud_rate());
+ {
+ printf_filtered ("Remote debugging using `%s'", sr_get_device ());
+ if (baud_rate != -1)
+ printf_filtered (" at baud rate of %d",
+ baud_rate);
+ printf_filtered ("\n");
+ }
push_target(gr->ops);
gr_checkin();
sr_write_cr (args);
sr_write ("\030", 1);
+ registers_changed ();
gr_expect_prompt ();
}
#ifdef __GO32__
printf_filtered ("\tAttached to DOS asynctsr\n");
#else
- printf_filtered ("\tAttached to %s at %d baud\n",
- sr_get_device(), sr_get_baud_rate());
+ printf_filtered ("\tAttached to %s", sr_get_device());
+ if (baud_rate != -1)
+ printf_filtered ("at %d baud", baud_rate);
+ printf_filtered ("\n");
#endif
if (exec_bfd)
abfd = bfd_openr (args, (char *) 0);
if (!abfd)
+ /* FIXME: should be using bfd_errmsg, not assuming it was
+ bfd_error_system_call. */
perror_with_name (args);
+ /* FIXME: should be checking for errors from bfd_close (for one thing,
+ on error it does not free all the storage associated with the
+ bfd). */
old_cleanups = make_cleanup (bfd_close, abfd);
QUIT;
free (buffer);
write_pc (bfd_get_start_address (abfd));
- bfd_close (abfd);
+ if (!bfd_close (abfd))
+ warning ("cannot close \"%s\": %s",
+ args, bfd_errmsg (bfd_get_error ()));
discard_cleanups (old_cleanups);
}