diff options
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/inferior.h | 2 | ||||
-rw-r--r-- | gdb/infrun.c | 13 | ||||
-rw-r--r-- | gdb/monitor.c | 2 | ||||
-rw-r--r-- | gdb/remote-sds.c | 7 | ||||
-rw-r--r-- | gdb/remote.c | 22 |
6 files changed, 35 insertions, 23 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4fe939d..da9c8cd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 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. diff --git a/gdb/inferior.h b/gdb/inferior.h index b3a5f55..6160656 100644 --- a/gdb/inferior.h +++ b/gdb/inferior.h @@ -269,7 +269,7 @@ extern int gdb_has_a_terminal (void); /* From infrun.c */ -extern void start_remote (void); +extern void start_remote (int from_tty); extern void normal_stop (void); diff --git a/gdb/infrun.c b/gdb/infrun.c index 61afab2..b9652f6 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2,8 +2,9 @@ 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. @@ -832,7 +833,7 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step) /* 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 (); @@ -854,6 +855,12 @@ start_remote (void) 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 (); } diff --git a/gdb/monitor.c b/gdb/monitor.c index be807bc..80e0cdd 100644 --- a/gdb/monitor.c +++ b/gdb/monitor.c @@ -812,7 +812,7 @@ monitor_open (char *args, struct monitor_ops *mon_ops, int from_tty) monitor_printf (current_monitor->line_term); - start_remote (); + start_remote (from_tty); } /* Close out all files and local state before this target loses diff --git a/gdb/remote-sds.c b/gdb/remote-sds.c index 8394ae5..b788792 100644 --- a/gdb/remote-sds.c +++ b/gdb/remote-sds.c @@ -148,8 +148,9 @@ sds_close (int quitting) /* 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]; @@ -173,7 +174,7 @@ sds_start_remote (void *dummy) immediate_quit--; - start_remote (); /* Initialize gdb process mechanisms */ + start_remote (from_tty); /* Initialize gdb process mechanisms */ return 1; } @@ -224,7 +225,7 @@ device is attached to the remote system (e.g. /dev/ttya)."); /* 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 (); diff --git a/gdb/remote.c b/gdb/remote.c index cf872b1..98fe59d 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1987,20 +1987,13 @@ get_offsets (void) 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. */ @@ -2016,7 +2009,7 @@ remote_start_remote (struct ui_out *uiout, void *dummy) 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. @@ -2458,7 +2451,8 @@ remote_open_1 (char *name, int from_tty, struct target_ops *target, 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 (); @@ -2478,8 +2472,6 @@ remote_open_1 (char *name, int from_tty, struct target_ops *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); } |