Make the stop_soon global be per-inferior instead.

* infcmd.c (attach_command_post_wait): Adjust.
	(attach_command): Likewise.

	* inferior.h (stop_soon): Delete.
	(struct inferior): Add stop_soon member.

	* infrun.c (stop_soon): Delete.
	(clear_proceed_status, start_remote)
	(fetch_inferior_event, handle_inferior_event): Adjust.
	(signal_stop_state): Don't check stop_soon here.  Check in callers
	instead.
	(save_inferior_status, restore_inferior_status): Adjust.

	* linux-nat.c (linux_nat_resume, linux_nat_wait): Always pass
	signals to common code if starting up the inferior.

	* inferior.h (struct inferior_info): Added stop_soon member.
	* inferior.c (add_inferior) Clear stop_soon.

	* mips-tdep.c (heuristic_proc_start): Adjust.
	* nto-procfs.c (procfs_create_inferior): Adjust.
	* solib-irix.c (irix_solib_create_inferior_hook): Adjust.
	* solib-osf.c (osf_solib_create_inferior_hook): Adjust.
	* solib-sunos.c (sunos_solib_create_inferior_hook): Adjust.
	* solib-svr4.c (svr4_solib_create_inferior_hook): Adjust.

	* win32-nat.c (do_initial_win32_stuff): Adjust.

	* alpha-tdep.c (alpha_heuristic_proc_start): Adjust.
This commit is contained in:
Pedro Alves 2008-09-22 15:20:08 +00:00
parent 82f7388440
commit d6b48e9c8b
15 changed files with 137 additions and 42 deletions

View file

@ -1,3 +1,37 @@
2008-09-22 Pedro Alves <pedro@codesourcery.com>
Make the stop_soon global be per-inferior instead.
* infcmd.c (attach_command_post_wait): Adjust.
(attach_command): Likewise.
* inferior.h (stop_soon): Delete.
(struct inferior): Add stop_soon member.
* infrun.c (stop_soon): Delete.
(clear_proceed_status, start_remote)
(fetch_inferior_event, handle_inferior_event): Adjust.
(signal_stop_state): Don't check stop_soon here. Check in callers
instead.
(save_inferior_status, restore_inferior_status): Adjust.
* linux-nat.c (linux_nat_resume, linux_nat_wait): Always pass
signals to common code if starting up the inferior.
* inferior.h (struct inferior_info): Added stop_soon member.
* inferior.c (add_inferior) Clear stop_soon.
* mips-tdep.c (heuristic_proc_start): Adjust.
* nto-procfs.c (procfs_create_inferior): Adjust.
* solib-irix.c (irix_solib_create_inferior_hook): Adjust.
* solib-osf.c (osf_solib_create_inferior_hook): Adjust.
* solib-sunos.c (sunos_solib_create_inferior_hook): Adjust.
* solib-svr4.c (svr4_solib_create_inferior_hook): Adjust.
* win32-nat.c (do_initial_win32_stuff): Adjust.
* alpha-tdep.c (alpha_heuristic_proc_start): Adjust.
2008-09-22 Pedro Alves <pedro@codesourcery.com> 2008-09-22 Pedro Alves <pedro@codesourcery.com>
Implement remote multi-process extensions. Implement remote multi-process extensions.

View file

@ -909,6 +909,7 @@ alpha_heuristic_proc_start (struct gdbarch *gdbarch, CORE_ADDR pc)
CORE_ADDR fence = pc - heuristic_fence_post; CORE_ADDR fence = pc - heuristic_fence_post;
CORE_ADDR orig_pc = pc; CORE_ADDR orig_pc = pc;
CORE_ADDR func; CORE_ADDR func;
struct inferior *inf;
if (pc == 0) if (pc == 0)
return 0; return 0;
@ -946,10 +947,12 @@ alpha_heuristic_proc_start (struct gdbarch *gdbarch, CORE_ADDR pc)
} }
} }
inf = current_inferior ();
/* It's not clear to me why we reach this point when stopping quietly, /* It's not clear to me why we reach this point when stopping quietly,
but with this test, at least we don't print out warnings for every but with this test, at least we don't print out warnings for every
child forked (eg, on decstation). 22apr93 rich@cygnus.com. */ child forked (eg, on decstation). 22apr93 rich@cygnus.com. */
if (stop_soon == NO_STOP_QUIETLY) if (inf->stop_soon == NO_STOP_QUIETLY)
{ {
static int blurb_printed = 0; static int blurb_printed = 0;

View file

@ -1956,8 +1956,10 @@ attach_command_post_wait (char *args, int from_tty, int async_exec)
{ {
char *exec_file; char *exec_file;
char *full_exec_path = NULL; char *full_exec_path = NULL;
struct inferior *inferior;
stop_soon = NO_STOP_QUIETLY; inferior = current_inferior ();
inferior->stop_soon = NO_STOP_QUIETLY;
/* If no exec file is yet known, try to determine it from the /* If no exec file is yet known, try to determine it from the
process itself. */ process itself. */
@ -2087,12 +2089,14 @@ attach_command (char *args, int from_tty)
E.g. Mach 3 or GNU hurd. */ E.g. Mach 3 or GNU hurd. */
if (!target_attach_no_wait) if (!target_attach_no_wait)
{ {
struct inferior *inferior = current_inferior ();
/* Careful here. See comments in inferior.h. Basically some /* Careful here. See comments in inferior.h. Basically some
OSes don't ignore SIGSTOPs on continue requests anymore. We OSes don't ignore SIGSTOPs on continue requests anymore. We
need a way for handle_inferior_event to reset the stop_signal need a way for handle_inferior_event to reset the stop_signal
variable after an attach, and this is what variable after an attach, and this is what
STOP_QUIETLY_NO_SIGSTOP is for. */ STOP_QUIETLY_NO_SIGSTOP is for. */
stop_soon = STOP_QUIETLY_NO_SIGSTOP; inferior->stop_soon = STOP_QUIETLY_NO_SIGSTOP;
if (target_can_async_p ()) if (target_can_async_p ())
{ {

View file

@ -76,6 +76,8 @@ add_inferior_silent (int pid)
memset (inf, 0, sizeof (*inf)); memset (inf, 0, sizeof (*inf));
inf->pid = pid; inf->pid = pid;
inf->stop_soon = NO_STOP_QUIETLY;
inf->num = ++highest_inferior_num; inf->num = ++highest_inferior_num;
inf->next = inferior_list; inf->next = inferior_list;
inferior_list = inf; inferior_list = inf;

View file

@ -339,8 +339,6 @@ enum stop_kind
STOP_QUIETLY_NO_SIGSTOP STOP_QUIETLY_NO_SIGSTOP
}; };
extern enum stop_kind stop_soon;
/* Nonzero if proceed is being used for a "finish" command or a similar /* Nonzero if proceed is being used for a "finish" command or a similar
situation when stop_registers should be saved. */ situation when stop_registers should be saved. */
@ -423,6 +421,9 @@ struct inferior
the ptid_t.pid member of threads of this inferior. */ the ptid_t.pid member of threads of this inferior. */
int pid; int pid;
/* See the definition of stop_kind above. */
enum stop_kind stop_soon;
/* Private data used by the target vector implementation. */ /* Private data used by the target vector implementation. */
struct private_inferior *private; struct private_inferior *private;
}; };

View file

@ -230,13 +230,6 @@ show_stop_on_solib_events (struct ui_file *file, int from_tty,
int stop_after_trap; int stop_after_trap;
/* Nonzero means expecting a trap and caller will handle it themselves.
It is used after attach, due to attaching to a process;
when running in the shell before the child program has been exec'd;
and when running some kinds of remote stuff (FIXME?). */
enum stop_kind stop_soon;
/* Save register contents here when about to pop a stack dummy frame, /* Save register contents here when about to pop a stack dummy frame,
if-and-only-if proceed_to_finish is set. if-and-only-if proceed_to_finish is set.
Thus this contains the return value from the called function (assuming Thus this contains the return value from the called function (assuming
@ -1097,7 +1090,10 @@ clear_proceed_status (void)
{ {
if (!ptid_equal (inferior_ptid, null_ptid)) if (!ptid_equal (inferior_ptid, null_ptid))
{ {
struct thread_info *tp = inferior_thread (); struct thread_info *tp;
struct inferior *inferior;
tp = inferior_thread ();
tp->trap_expected = 0; tp->trap_expected = 0;
tp->step_range_start = 0; tp->step_range_start = 0;
@ -1112,10 +1108,12 @@ clear_proceed_status (void)
/* Discard any remaining commands or status from previous /* Discard any remaining commands or status from previous
stop. */ stop. */
bpstat_clear (&tp->stop_bpstat); bpstat_clear (&tp->stop_bpstat);
inferior = current_inferior ();
inferior->stop_soon = NO_STOP_QUIETLY;
} }
stop_after_trap = 0; stop_after_trap = 0;
stop_soon = NO_STOP_QUIETLY;
breakpoint_proceeded = 1; /* We're about to proceed... */ breakpoint_proceeded = 1; /* We're about to proceed... */
if (stop_registers) if (stop_registers)
@ -1351,8 +1349,11 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step)
void void
start_remote (int from_tty) start_remote (int from_tty)
{ {
struct inferior *inferior;
init_wait_for_inferior (); init_wait_for_inferior ();
stop_soon = STOP_QUIETLY_REMOTE;
inferior = current_inferior ();
inferior->stop_soon = STOP_QUIETLY_REMOTE;
/* Always go on waiting for the target, regardless of the mode. */ /* Always go on waiting for the target, regardless of the mode. */
/* FIXME: cagney/1999-09-23: At present it isn't possible to /* FIXME: cagney/1999-09-23: At present it isn't possible to
@ -1648,9 +1649,12 @@ fetch_inferior_event (void *client_data)
if (!ecs->wait_some_more) if (!ecs->wait_some_more)
{ {
struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid));
delete_step_thread_step_resume_breakpoint (); delete_step_thread_step_resume_breakpoint ();
if (stop_soon == NO_STOP_QUIETLY) /* We may not find an inferior if this was a process exit. */
if (inf == NULL || inf->stop_soon == NO_STOP_QUIETLY)
normal_stop (); normal_stop ();
if (target_has_execution if (target_has_execution
@ -1840,6 +1844,18 @@ handle_inferior_event (struct execution_control_state *ecs)
int stopped_by_watchpoint; int stopped_by_watchpoint;
int stepped_after_stopped_by_watchpoint = 0; int stepped_after_stopped_by_watchpoint = 0;
struct symtab_and_line stop_pc_sal; struct symtab_and_line stop_pc_sal;
enum stop_kind stop_soon;
if (ecs->ws.kind != TARGET_WAITKIND_EXITED
&& ecs->ws.kind != TARGET_WAITKIND_SIGNALLED
&& ecs->ws.kind != TARGET_WAITKIND_IGNORE)
{
struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid));
gdb_assert (inf);
stop_soon = inf->stop_soon;
}
else
stop_soon = NO_STOP_QUIETLY;
breakpoint_retire_moribund (); breakpoint_retire_moribund ();
@ -2673,7 +2689,10 @@ process_event_stop_test:
target_terminal_ours_for_output (); target_terminal_ours_for_output ();
print_stop_reason (SIGNAL_RECEIVED, ecs->event_thread->stop_signal); print_stop_reason (SIGNAL_RECEIVED, ecs->event_thread->stop_signal);
} }
if (signal_stop_state (ecs->event_thread->stop_signal)) /* Always stop on signals if we're just gaining control of the
program. */
if (stop_soon != NO_STOP_QUIETLY
|| signal_stop_state (ecs->event_thread->stop_signal))
{ {
stop_stepping (ecs); stop_stepping (ecs);
return; return;
@ -3972,9 +3991,7 @@ hook_stop_stub (void *cmd)
int int
signal_stop_state (int signo) signal_stop_state (int signo)
{ {
/* Always stop on signals if we're just gaining control of the return signal_stop[signo];
program. */
return signal_stop[signo] || stop_soon != NO_STOP_QUIETLY;
} }
int int
@ -4376,6 +4393,7 @@ save_inferior_status (int restore_stack_info)
{ {
struct inferior_status *inf_status = XMALLOC (struct inferior_status); struct inferior_status *inf_status = XMALLOC (struct inferior_status);
struct thread_info *tp = inferior_thread (); struct thread_info *tp = inferior_thread ();
struct inferior *inf = current_inferior ();
inf_status->stop_signal = tp->stop_signal; inf_status->stop_signal = tp->stop_signal;
inf_status->stop_pc = stop_pc; inf_status->stop_pc = stop_pc;
@ -4388,7 +4406,7 @@ save_inferior_status (int restore_stack_info)
inf_status->step_frame_id = tp->step_frame_id; inf_status->step_frame_id = tp->step_frame_id;
inf_status->step_over_calls = tp->step_over_calls; inf_status->step_over_calls = tp->step_over_calls;
inf_status->stop_after_trap = stop_after_trap; inf_status->stop_after_trap = stop_after_trap;
inf_status->stop_soon = stop_soon; inf_status->stop_soon = inf->stop_soon;
/* Save original bpstat chain here; replace it with copy of chain. /* Save original bpstat chain here; replace it with copy of chain.
If caller's caller is walking the chain, they'll be happier if we If caller's caller is walking the chain, they'll be happier if we
hand them back the original chain when restore_inferior_status is hand them back the original chain when restore_inferior_status is
@ -4430,6 +4448,7 @@ void
restore_inferior_status (struct inferior_status *inf_status) restore_inferior_status (struct inferior_status *inf_status)
{ {
struct thread_info *tp = inferior_thread (); struct thread_info *tp = inferior_thread ();
struct inferior *inf = current_inferior ();
tp->stop_signal = inf_status->stop_signal; tp->stop_signal = inf_status->stop_signal;
stop_pc = inf_status->stop_pc; stop_pc = inf_status->stop_pc;
@ -4442,7 +4461,7 @@ restore_inferior_status (struct inferior_status *inf_status)
tp->step_frame_id = inf_status->step_frame_id; tp->step_frame_id = inf_status->step_frame_id;
tp->step_over_calls = inf_status->step_over_calls; tp->step_over_calls = inf_status->step_over_calls;
stop_after_trap = inf_status->stop_after_trap; stop_after_trap = inf_status->stop_after_trap;
stop_soon = inf_status->stop_soon; inf->stop_soon = inf_status->stop_soon;
bpstat_clear (&tp->stop_bpstat); bpstat_clear (&tp->stop_bpstat);
tp->stop_bpstat = inf_status->stop_bpstat; tp->stop_bpstat = inf_status->stop_bpstat;
breakpoint_proceeded = inf_status->breakpoint_proceeded; breakpoint_proceeded = inf_status->breakpoint_proceeded;

View file

@ -1708,9 +1708,17 @@ linux_nat_resume (ptid_t ptid, int step, enum target_signal signo)
if (lp->status && WIFSTOPPED (lp->status)) if (lp->status && WIFSTOPPED (lp->status))
{ {
int saved_signo = target_signal_from_host (WSTOPSIG (lp->status)); int saved_signo;
struct inferior *inf;
if (signal_stop_state (saved_signo) == 0 inf = find_inferior_pid (ptid_get_pid (ptid));
gdb_assert (inf);
saved_signo = target_signal_from_host (WSTOPSIG (lp->status));
/* Defer to common code if we're gaining control of the
inferior. */
if (inf->stop_soon == NO_STOP_QUIETLY
&& signal_stop_state (saved_signo) == 0
&& signal_print_state (saved_signo) == 0 && signal_print_state (saved_signo) == 0
&& signal_pass_state (saved_signo) == 1) && signal_pass_state (saved_signo) == 1)
{ {
@ -2926,10 +2934,17 @@ retry:
if (WIFSTOPPED (status)) if (WIFSTOPPED (status))
{ {
int signo = target_signal_from_host (WSTOPSIG (status)); int signo = target_signal_from_host (WSTOPSIG (status));
struct inferior *inf;
/* If we get a signal while single-stepping, we may need special inf = find_inferior_pid (ptid_get_pid (lp->ptid));
care, e.g. to skip the signal handler. Defer to common code. */ gdb_assert (inf);
/* Defer to common code if we get a signal while
single-stepping, since that may need special care, e.g. to
skip the signal handler, or, if we're gaining control of the
inferior. */
if (!lp->step if (!lp->step
&& inf->stop_soon == NO_STOP_QUIETLY
&& signal_stop_state (signo) == 0 && signal_stop_state (signo) == 0
&& signal_print_state (signo) == 0 && signal_print_state (signo) == 0
&& signal_pass_state (signo) == 1) && signal_pass_state (signo) == 1)

View file

@ -2493,6 +2493,7 @@ heuristic_proc_start (struct gdbarch *gdbarch, CORE_ADDR pc)
CORE_ADDR fence; CORE_ADDR fence;
int instlen; int instlen;
int seen_adjsp = 0; int seen_adjsp = 0;
struct inferior *inf;
pc = gdbarch_addr_bits_remove (gdbarch, pc); pc = gdbarch_addr_bits_remove (gdbarch, pc);
start_pc = pc; start_pc = pc;
@ -2505,6 +2506,8 @@ heuristic_proc_start (struct gdbarch *gdbarch, CORE_ADDR pc)
instlen = mips_pc_is_mips16 (pc) ? MIPS_INSN16_SIZE : MIPS_INSN32_SIZE; instlen = mips_pc_is_mips16 (pc) ? MIPS_INSN16_SIZE : MIPS_INSN32_SIZE;
inf = current_inferior ();
/* search back for previous return */ /* search back for previous return */
for (start_pc -= instlen;; start_pc -= instlen) for (start_pc -= instlen;; start_pc -= instlen)
if (start_pc < fence) if (start_pc < fence)
@ -2513,7 +2516,7 @@ heuristic_proc_start (struct gdbarch *gdbarch, CORE_ADDR pc)
stop_soon, but with this test, at least we stop_soon, but with this test, at least we
don't print out warnings for every child forked (eg, on don't print out warnings for every child forked (eg, on
decstation). 22apr93 rich@cygnus.com. */ decstation). 22apr93 rich@cygnus.com. */
if (stop_soon == NO_STOP_QUIETLY) if (inf->stop_soon == NO_STOP_QUIETLY)
{ {
static int blurb_printed = 0; static int blurb_printed = 0;

View file

@ -1101,7 +1101,6 @@ procfs_create_inferior (char *exec_file, char *allargs, char **env,
if (exec_bfd != NULL if (exec_bfd != NULL
|| (symfile_objfile != NULL && symfile_objfile->obfd != NULL)) || (symfile_objfile != NULL && symfile_objfile->obfd != NULL))
solib_create_inferior_hook (); solib_create_inferior_hook ();
stop_soon = 0;
} }
static void static void

View file

@ -422,6 +422,7 @@ enable_break (void)
static void static void
irix_solib_create_inferior_hook (void) irix_solib_create_inferior_hook (void)
{ {
struct inferior *inf;
struct thread_info *tp; struct thread_info *tp;
if (!enable_break ()) if (!enable_break ())
@ -435,10 +436,14 @@ irix_solib_create_inferior_hook (void)
can go groveling around in the dynamic linker structures to find can go groveling around in the dynamic linker structures to find
out what we need to know about them. */ out what we need to know about them. */
inf = current_inferior ();
tp = inferior_thread (); tp = inferior_thread ();
clear_proceed_status (); clear_proceed_status ();
stop_soon = STOP_QUIETLY;
inf->stop_soon = STOP_QUIETLY;
tp->stop_signal = TARGET_SIGNAL_0; tp->stop_signal = TARGET_SIGNAL_0;
do do
{ {
target_resume (pid_to_ptid (-1), 0, tp->stop_signal); target_resume (pid_to_ptid (-1), 0, tp->stop_signal);
@ -463,7 +468,7 @@ irix_solib_create_inferior_hook (void)
Delaying the resetting of stop_soon until after symbol loading Delaying the resetting of stop_soon until after symbol loading
suppresses the warning. */ suppresses the warning. */
solib_add ((char *) 0, 0, (struct target_ops *) 0, auto_solib_add); solib_add ((char *) 0, 0, (struct target_ops *) 0, auto_solib_add);
stop_soon = NO_STOP_QUIETLY; inf->stop_soon = NO_STOP_QUIETLY;
} }
/* LOCAL FUNCTION /* LOCAL FUNCTION

View file

@ -307,6 +307,7 @@ osf_clear_solib (void)
static void static void
osf_solib_create_inferior_hook (void) osf_solib_create_inferior_hook (void)
{ {
struct inferior *inf;
struct thread_info *tp; struct thread_info *tp;
/* If we are attaching to the inferior, the shared libraries /* If we are attaching to the inferior, the shared libraries
@ -333,9 +334,10 @@ osf_solib_create_inferior_hook (void)
if (!target_can_run (&current_target)) if (!target_can_run (&current_target))
return; return;
inf = current_inferior ();
tp = inferior_thread (); tp = inferior_thread ();
clear_proceed_status (); clear_proceed_status ();
stop_soon = STOP_QUIETLY; inf->stop_soon = STOP_QUIETLY;
tp->stop_signal = TARGET_SIGNAL_0; tp->stop_signal = TARGET_SIGNAL_0;
do do
{ {
@ -351,7 +353,7 @@ osf_solib_create_inferior_hook (void)
Delaying the resetting of stop_soon until after symbol loading Delaying the resetting of stop_soon until after symbol loading
suppresses the warning. */ suppresses the warning. */
solib_add ((char *) 0, 0, (struct target_ops *) 0, auto_solib_add); solib_add ((char *) 0, 0, (struct target_ops *) 0, auto_solib_add);
stop_soon = NO_STOP_QUIETLY; inf->stop_soon = NO_STOP_QUIETLY;
} }
/* target_so_ops callback. Do additional symbol handling, lookup, etc. after /* target_so_ops callback. Do additional symbol handling, lookup, etc. after

View file

@ -739,6 +739,7 @@ static void
sunos_solib_create_inferior_hook (void) sunos_solib_create_inferior_hook (void)
{ {
struct thread_info *tp; struct thread_info *tp;
struct inferior *inf;
if ((debug_base = locate_base ()) == 0) if ((debug_base = locate_base ()) == 0)
{ {
@ -761,9 +762,12 @@ sunos_solib_create_inferior_hook (void)
can go groveling around in the dynamic linker structures to find can go groveling around in the dynamic linker structures to find
out what we need to know about them. */ out what we need to know about them. */
inf = current_inferior ();
tp = inferior_thread (); tp = inferior_thread ();
clear_proceed_status (); clear_proceed_status ();
stop_soon = STOP_QUIETLY;
inf->stop_soon = STOP_QUIETLY;
tp->stop_signal = TARGET_SIGNAL_0; tp->stop_signal = TARGET_SIGNAL_0;
do do
{ {
@ -771,7 +775,7 @@ sunos_solib_create_inferior_hook (void)
wait_for_inferior (0); wait_for_inferior (0);
} }
while (tp->stop_signal != TARGET_SIGNAL_TRAP); while (tp->stop_signal != TARGET_SIGNAL_TRAP);
stop_soon = NO_STOP_QUIETLY; inf->stop_soon = NO_STOP_QUIETLY;
/* We are now either at the "mapping complete" breakpoint (or somewhere /* We are now either at the "mapping complete" breakpoint (or somewhere
else, a condition we aren't prepared to deal with anyway), so adjust else, a condition we aren't prepared to deal with anyway), so adjust

View file

@ -1570,6 +1570,7 @@ svr4_relocate_main_executable (void)
static void static void
svr4_solib_create_inferior_hook (void) svr4_solib_create_inferior_hook (void)
{ {
struct inferior *inf;
struct thread_info *tp; struct thread_info *tp;
/* Relocate the main executable if necessary. */ /* Relocate the main executable if necessary. */
@ -1591,10 +1592,11 @@ svr4_solib_create_inferior_hook (void)
can go groveling around in the dynamic linker structures to find can go groveling around in the dynamic linker structures to find
out what we need to know about them. */ out what we need to know about them. */
inf = current_inferior ();
tp = inferior_thread (); tp = inferior_thread ();
clear_proceed_status (); clear_proceed_status ();
stop_soon = STOP_QUIETLY; inf->stop_soon = STOP_QUIETLY;
tp->stop_signal = TARGET_SIGNAL_0; tp->stop_signal = TARGET_SIGNAL_0;
do do
{ {
@ -1602,7 +1604,7 @@ svr4_solib_create_inferior_hook (void)
wait_for_inferior (0); wait_for_inferior (0);
} }
while (tp->stop_signal != TARGET_SIGNAL_TRAP); while (tp->stop_signal != TARGET_SIGNAL_TRAP);
stop_soon = NO_STOP_QUIETLY; inf->stop_soon = NO_STOP_QUIETLY;
#endif /* defined(_SCO_DS) */ #endif /* defined(_SCO_DS) */
} }

View file

@ -1523,6 +1523,7 @@ do_initial_win32_stuff (DWORD pid)
{ {
extern int stop_after_trap; extern int stop_after_trap;
int i; int i;
struct inferior *inf;
struct thread_info *tp; struct thread_info *tp;
last_sig = TARGET_SIGNAL_0; last_sig = TARGET_SIGNAL_0;
@ -1544,12 +1545,12 @@ do_initial_win32_stuff (DWORD pid)
clear_proceed_status (); clear_proceed_status ();
init_wait_for_inferior (); init_wait_for_inferior ();
add_inferior (pid); inf = add_inferior (pid);
terminal_init_inferior_with_pgrp (pid); terminal_init_inferior_with_pgrp (pid);
target_terminal_inferior (); target_terminal_inferior ();
stop_soon = STOP_QUIETLY; inf->stop_soon = STOP_QUIETLY;
while (1) while (1)
{ {
stop_after_trap = 1; stop_after_trap = 1;
@ -1561,7 +1562,7 @@ do_initial_win32_stuff (DWORD pid)
break; break;
} }
stop_soon = NO_STOP_QUIETLY; inf->stop_soon = NO_STOP_QUIETLY;
stop_after_trap = 0; stop_after_trap = 0;
return; return;
} }

View file

@ -1523,6 +1523,7 @@ do_initial_win32_stuff (DWORD pid)
{ {
extern int stop_after_trap; extern int stop_after_trap;
int i; int i;
struct inferior *inf;
struct thread_info *tp; struct thread_info *tp;
last_sig = TARGET_SIGNAL_0; last_sig = TARGET_SIGNAL_0;
@ -1544,12 +1545,12 @@ do_initial_win32_stuff (DWORD pid)
clear_proceed_status (); clear_proceed_status ();
init_wait_for_inferior (); init_wait_for_inferior ();
add_inferior (pid); inf = add_inferior (pid);
terminal_init_inferior_with_pgrp (pid); terminal_init_inferior_with_pgrp (pid);
target_terminal_inferior (); target_terminal_inferior ();
stop_soon = STOP_QUIETLY; inf->stop_soon = STOP_QUIETLY;
while (1) while (1)
{ {
stop_after_trap = 1; stop_after_trap = 1;
@ -1561,7 +1562,7 @@ do_initial_win32_stuff (DWORD pid)
break; break;
} }
stop_soon = NO_STOP_QUIETLY; inf->stop_soon = NO_STOP_QUIETLY;
stop_after_trap = 0; stop_after_trap = 0;
return; return;
} }