Do the target-waiting within do_initial_child_stuff on Windows.
authorPedro Alves <palves@redhat.com>
Thu, 12 Dec 2013 16:12:30 +0000 (11:12 -0500)
committerJoel Brobecker <brobecker@adacore.com>
Fri, 13 Dec 2013 15:42:08 +0000 (16:42 +0100)
commit4210d83ee607bffaf27a235f0475bf1e5ea8266d
treea88d642ec0f855d4f6c97810ce408d9446660d01
parenta75555d13b5d6c927cc0adca2a8b4bbd9da1200e
Do the target-waiting within do_initial_child_stuff on Windows.

This is a preparatory patch that achieves two goals:

  . Makes the initial event handling more similar to GDB's;
  . Opens the door for implementing post-inititial-handling
    operations.

At the moment, this is only done on Windows, where the
post-initial-handling is going to be needed (in the context of
Windows 2012). And because we're close to creating the gdb 7.7
branch, making that change for all platforms is a little more
risk that we'd like. So the change is currently implemented
on Windows.

gdb/gdbserver/ChangeLog:

        * target.c (mywait): Set OURSTATUS->KIND to TARGET_WAITKIND_STOPPED
        if equal to TARGET_WAITKIND_LOADED.
        * win32-low.c (cached_status): New static global.
        (win32_wait): Add declaration.
        (do_initial_child_stuff): Flush all initial pending debug events
        up to the initial breakpoint.
        (win32_wait): If CACHED_STATUS was set, return that instead
        of doing a real wait.  Remove the code resuming the execution
        of the inferior after receiving a TARGET_WAITKIND_LOADED event
        during the initial phase.  Also remove the code changing
        OURSTATUS->KIND from TARGET_WAITKIND_LOADED to
        TARGET_WAITKIND_STOPPED.
gdb/gdbserver/ChangeLog
gdb/gdbserver/target.c
gdb/gdbserver/win32-low.c