* win32-nat.c: Add some comments about below change.
authorChristopher Faylor <me+cygwin@cgf.cx>
Fri, 26 Dec 2003 14:56:45 +0000 (14:56 +0000)
committerChristopher Faylor <me+cygwin@cgf.cx>
Fri, 26 Dec 2003 14:56:45 +0000 (14:56 +0000)
gdb/ChangeLog
gdb/win32-nat.c
gdb/windows-nat.c

index fc835801845919441350f61df35915704f58bb44..a368b0527cbab777a887c5df3e3c7d457ea4d0a5 100644 (file)
@@ -1,3 +1,7 @@
+2003-12-26  Christopher Faylor  <cgf@redhat.com>
+
+       * win32-nat.c: Add some comments about below change.
+
 2003-12-25  Christopher Faylor  <cgf@redhat.com>
 
        Fix for PR threads/1048
index c28e26ad2c7cc15a777074219fd3ac6b8b59eb86..c37c1a8ef062ba42a413c32dbaa6d1eb61a2211d 100644 (file)
@@ -338,7 +338,8 @@ do_child_fetch_inferior_registers (int r)
   long l;
 
   if (!current_thread)
-    return;
+    return;    /* Windows sometimes uses a non-existent thread id in its
+                  events */
 
   if (current_thread->reload_context)
     {
@@ -382,6 +383,8 @@ static void
 child_fetch_inferior_registers (int r)
 {
   current_thread = thread_rec (PIDGET (inferior_ptid), TRUE);
+  /* Check if current_thread exists.  Windows sometimes uses a non-existent
+     thread id in its events */
   if (current_thread)
     do_child_fetch_inferior_registers (r);
 }
@@ -390,7 +393,7 @@ static void
 do_child_store_inferior_registers (int r)
 {
   if (!current_thread)
-    /* nothing to do */;
+    /* Windows sometimes uses a non-existent thread id in its events */;
   else if (r >= 0)
     regcache_collect (r, ((char *) &current_thread->context) + mappings[r]);
   else
@@ -405,6 +408,8 @@ static void
 child_store_inferior_registers (int r)
 {
   current_thread = thread_rec (PIDGET (inferior_ptid), TRUE);
+  /* Check if current_thread exists.  Windows sometimes uses a non-existent
+     thread id in its events */
   if (current_thread)
     do_child_store_inferior_registers (r);
 }
@@ -1207,6 +1212,8 @@ child_continue (DWORD continue_status, int id)
   return res;
 }
 
+/* Called in pathological case where Windows fails to send a
+   CREATE_PROCESS_DEBUG_EVENT after an attach.  */
 DWORD
 fake_create_process ()
 {
@@ -1253,6 +1260,9 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus)
        {
          if (!saw_create && attach_flag)
            {
+             /* Kludge around a Windows bug where first event is a create
+                thread event.  Caused when attached process does not have
+                a main thread. */
              retval = ourstatus->value.related_pid = fake_create_process ();
              saw_create++;
            }
index c28e26ad2c7cc15a777074219fd3ac6b8b59eb86..c37c1a8ef062ba42a413c32dbaa6d1eb61a2211d 100644 (file)
@@ -338,7 +338,8 @@ do_child_fetch_inferior_registers (int r)
   long l;
 
   if (!current_thread)
-    return;
+    return;    /* Windows sometimes uses a non-existent thread id in its
+                  events */
 
   if (current_thread->reload_context)
     {
@@ -382,6 +383,8 @@ static void
 child_fetch_inferior_registers (int r)
 {
   current_thread = thread_rec (PIDGET (inferior_ptid), TRUE);
+  /* Check if current_thread exists.  Windows sometimes uses a non-existent
+     thread id in its events */
   if (current_thread)
     do_child_fetch_inferior_registers (r);
 }
@@ -390,7 +393,7 @@ static void
 do_child_store_inferior_registers (int r)
 {
   if (!current_thread)
-    /* nothing to do */;
+    /* Windows sometimes uses a non-existent thread id in its events */;
   else if (r >= 0)
     regcache_collect (r, ((char *) &current_thread->context) + mappings[r]);
   else
@@ -405,6 +408,8 @@ static void
 child_store_inferior_registers (int r)
 {
   current_thread = thread_rec (PIDGET (inferior_ptid), TRUE);
+  /* Check if current_thread exists.  Windows sometimes uses a non-existent
+     thread id in its events */
   if (current_thread)
     do_child_store_inferior_registers (r);
 }
@@ -1207,6 +1212,8 @@ child_continue (DWORD continue_status, int id)
   return res;
 }
 
+/* Called in pathological case where Windows fails to send a
+   CREATE_PROCESS_DEBUG_EVENT after an attach.  */
 DWORD
 fake_create_process ()
 {
@@ -1253,6 +1260,9 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus)
        {
          if (!saw_create && attach_flag)
            {
+             /* Kludge around a Windows bug where first event is a create
+                thread event.  Caused when attached process does not have
+                a main thread. */
              retval = ourstatus->value.related_pid = fake_create_process ();
              saw_create++;
            }
This page took 0.03815 seconds and 4 git commands to generate.