mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 14:49:38 +08:00
Move wait_for_debug_event to nat/windows-nat.c
This moves the wait_for_debug_event helper function to nat/windows-nat.c, and changes gdbserver to use it. wait_for_debug_event is a wrapper for WaitForDebugEvent that also sets last_wait_event when appropriate. This is needed to properly handle queued stops. gdb/ChangeLog 2020-04-08 Tom Tromey <tromey@adacore.com> * windows-nat.c (wait_for_debug_event): Move to nat/windows-nat.c. * nat/windows-nat.h (wait_for_debug_event): Declare. * nat/windows-nat.c (wait_for_debug_event): Move from windows-nat.c. No longer static. gdbserver/ChangeLog 2020-04-08 Tom Tromey <tromey@adacore.com> * win32-low.c (win32_kill, get_child_debug_event): Use wait_for_debug_event.
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
2020-04-08 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
|
* windows-nat.c (wait_for_debug_event): Move to
|
||||||
|
nat/windows-nat.c.
|
||||||
|
* nat/windows-nat.h (wait_for_debug_event): Declare.
|
||||||
|
* nat/windows-nat.c (wait_for_debug_event): Move from
|
||||||
|
windows-nat.c. No longer static.
|
||||||
|
|
||||||
2020-04-08 Tom Tromey <tromey@adacore.com>
|
2020-04-08 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
* windows-nat.c (get_windows_debug_event): Use
|
* windows-nat.c (get_windows_debug_event): Use
|
||||||
|
@ -385,5 +385,15 @@ continue_last_debug_event (DWORD continue_status, bool debug_events)
|
|||||||
continue_status);
|
continue_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* See nat/windows-nat.h. */
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
wait_for_debug_event (DEBUG_EVENT *event, DWORD timeout)
|
||||||
|
{
|
||||||
|
BOOL result = WaitForDebugEvent (event, timeout);
|
||||||
|
if (result)
|
||||||
|
last_wait_event = *event;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -245,6 +245,11 @@ extern gdb::optional<pending_stop> fetch_pending_stop (bool debug_events);
|
|||||||
extern BOOL continue_last_debug_event (DWORD continue_status,
|
extern BOOL continue_last_debug_event (DWORD continue_status,
|
||||||
bool debug_events);
|
bool debug_events);
|
||||||
|
|
||||||
|
/* A simple wrapper for WaitForDebugEvent that also sets
|
||||||
|
'last_wait_event' on success. */
|
||||||
|
|
||||||
|
extern BOOL wait_for_debug_event (DEBUG_EVENT *event, DWORD timeout);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1495,17 +1495,6 @@ ctrl_c_handler (DWORD event_type)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A wrapper for WaitForDebugEvent that sets "last_wait_event"
|
|
||||||
appropriately. */
|
|
||||||
static BOOL
|
|
||||||
wait_for_debug_event (DEBUG_EVENT *event, DWORD timeout)
|
|
||||||
{
|
|
||||||
BOOL result = WaitForDebugEvent (event, timeout);
|
|
||||||
if (result)
|
|
||||||
last_wait_event = *event;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get the next event from the child. Returns a non-zero thread id if the event
|
/* Get the next event from the child. Returns a non-zero thread id if the event
|
||||||
requires handling by WFI (or whatever). */
|
requires handling by WFI (or whatever). */
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2020-04-08 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
|
* win32-low.c (win32_kill, get_child_debug_event): Use
|
||||||
|
wait_for_debug_event.
|
||||||
|
|
||||||
2020-04-08 Tom Tromey <tromey@adacore.com>
|
2020-04-08 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
* win32-low.c (child_continue): Call continue_last_debug_event.
|
* win32-low.c (child_continue): Call continue_last_debug_event.
|
||||||
|
@ -797,7 +797,7 @@ win32_process_target::kill (process_info *process)
|
|||||||
{
|
{
|
||||||
if (!child_continue (DBG_CONTINUE, -1))
|
if (!child_continue (DBG_CONTINUE, -1))
|
||||||
break;
|
break;
|
||||||
if (!WaitForDebugEvent (¤t_event, INFINITE))
|
if (!wait_for_debug_event (¤t_event, INFINITE))
|
||||||
break;
|
break;
|
||||||
if (current_event.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT)
|
if (current_event.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT)
|
||||||
break;
|
break;
|
||||||
@ -1231,7 +1231,7 @@ get_child_debug_event (DWORD *continue_status,
|
|||||||
happen is the user will see a spurious breakpoint. */
|
happen is the user will see a spurious breakpoint. */
|
||||||
|
|
||||||
current_event.dwDebugEventCode = 0;
|
current_event.dwDebugEventCode = 0;
|
||||||
if (!WaitForDebugEvent (¤t_event, 0))
|
if (!wait_for_debug_event (¤t_event, 0))
|
||||||
{
|
{
|
||||||
OUTMSG2(("no attach events left\n"));
|
OUTMSG2(("no attach events left\n"));
|
||||||
fake_breakpoint_event ();
|
fake_breakpoint_event ();
|
||||||
@ -1246,7 +1246,7 @@ get_child_debug_event (DWORD *continue_status,
|
|||||||
/* Keep the wait time low enough for comfortable remote
|
/* Keep the wait time low enough for comfortable remote
|
||||||
interruption, but high enough so gdbserver doesn't become a
|
interruption, but high enough so gdbserver doesn't become a
|
||||||
bottleneck. */
|
bottleneck. */
|
||||||
if (!WaitForDebugEvent (¤t_event, 250))
|
if (!wait_for_debug_event (¤t_event, 250))
|
||||||
{
|
{
|
||||||
DWORD e = GetLastError();
|
DWORD e = GetLastError();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user