2006-10-18 Daniel Jacobowitz <dan@codesourcery.com>
+ * inferior.h (start_remote): Update prototype.
+ * infrun.c (start_remote): Take FROM_TTY. Call
+ post_create_inferior.
+ * monitor.c (monitor_open): Update call to start_remote.
+ * remote-sds.c (sds_start_remote, sds_open): Likewise.
+ * remote.c (remote_start_remote): Likewise.
+ (remote_start_remote_dummy): Removed.
+ (remote_open): Update call to remote_start_remote. Do not call
+ post_create_inferior here.
+
+2006-10-18 Daniel Jacobowitz <dan@codesourcery.com>
+
* solib-svr4.c (debug_loader_offset_p, debug_loader_offset)
(debug_loader_name, svr4_default_sos): New.
(svr4_current_sos): Call svr4_default_sos.
/* From infrun.c */
-extern void start_remote (void);
+extern void start_remote (int from_tty);
extern void normal_stop (void);
process.
Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
- Software Foundation, Inc.
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ 2006
+ Free Software Foundation, Inc.
This file is part of GDB.
/* Start remote-debugging of a machine over a serial link. */
void
-start_remote (void)
+start_remote (int from_tty)
{
init_thread_list ();
init_wait_for_inferior ();
is currently running and GDB state should be set to the same as
for an async run. */
wait_for_inferior ();
+
+ /* Now that the inferior has stopped, do any bookkeeping like
+ loading shared libraries. We want to do this before normal_stop,
+ so that the displayed frame is up to date. */
+ post_create_inferior (¤t_target, from_tty);
+
normal_stop ();
}
monitor_printf (current_monitor->line_term);
- start_remote ();
+ start_remote (from_tty);
}
/* Close out all files and local state before this target loses
/* Stub for catch_errors. */
static int
-sds_start_remote (void *dummy)
+sds_start_remote (void *from_tty_p)
{
+ int from_tty = * (int *) from_tty;
int c;
unsigned char buf[200];
immediate_quit--;
- start_remote (); /* Initialize gdb process mechanisms */
+ start_remote (from_tty); /* Initialize gdb process mechanisms */
return 1;
}
/* Start the remote connection; if error (0), discard this target.
In particular, if the user quits, be sure to discard it (we'd be
in an inconsistent state otherwise). */
- if (!catch_errors (sds_start_remote, NULL,
+ if (!catch_errors (sds_start_remote, &from_tty,
"Couldn't establish connection to remote target\n",
RETURN_MASK_ALL))
pop_target ();
objfile_relocate (symfile_objfile, offs);
}
-/* Stub for catch_errors. */
-
-static int
-remote_start_remote_dummy (struct ui_out *uiout, void *dummy)
-{
- start_remote (); /* Initialize gdb process mechanisms. */
- /* NOTE: Return something >=0. A -ve value is reserved for
- catch_exceptions. */
- return 1;
-}
+/* Stub for catch_exception. */
static void
-remote_start_remote (struct ui_out *uiout, void *dummy)
+remote_start_remote (struct ui_out *uiout, void *from_tty_p)
{
+ int from_tty = * (int *) from_tty_p;
+
immediate_quit++; /* Allow user to interrupt it. */
/* Ack any packet which the remote side has already sent. */
putpkt ("?"); /* Initiate a query from remote machine. */
immediate_quit--;
- remote_start_remote_dummy (uiout, dummy);
+ start_remote (from_tty); /* Initialize gdb process mechanisms. */
}
/* Open a connection to a remote debugger.
function. See cli-dump.c. */
{
struct gdb_exception ex
- = catch_exception (uiout, remote_start_remote, NULL, RETURN_MASK_ALL);
+ = catch_exception (uiout, remote_start_remote, &from_tty,
+ RETURN_MASK_ALL);
if (ex.reason < 0)
{
pop_target ();
getpkt (&rs->buf, &rs->buf_size, 0);
}
- post_create_inferior (¤t_target, from_tty);
-
if (exec_bfd) /* No use without an exec file. */
remote_check_symbols (symfile_objfile);
}