* bsd-uthread.c (bsd_uthread_find_new_threads): Claim the main
authorPedro Alves <palves@redhat.com>
Mon, 8 Sep 2008 21:37:01 +0000 (21:37 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 8 Sep 2008 21:37:01 +0000 (21:37 +0000)
thread.

gdb/ChangeLog
gdb/bsd-uthread.c

index 4001707d660aeef2aae69d2f2daf4041b7cf3afd..ce292c8f5d94a06bde7cbbe63055964a9116bd53 100644 (file)
@@ -1,3 +1,8 @@
+2008-09-08  Pedro Alves  <pedro@codesourcery.com>
+
+       * bsd-uthread.c (bsd_uthread_find_new_threads): Claim the main
+       thread.
+
 2008-09-08  Pedro Alves  <pedro@codesourcery.com>
 
        * corelow.c (add_to_thread_list): If this is the first time we
index b6a18f0144fd6ffe298fa87fb80cfd04861a0ded..93198d3e2242aaf3895ec5cfc2afbe4036ab08aa 100644 (file)
@@ -422,7 +422,15 @@ bsd_uthread_find_new_threads (void)
       ptid_t ptid = ptid_build (pid, 0, addr);
 
       if (!in_thread_list (ptid) || is_exited (ptid))
-       add_thread (ptid);
+       {
+         /* If INFERIOR_PTID doesn't have a tid member yet, then ptid
+            is still the initial thread of the process.  Notify GDB
+            core about it.  */
+         if (ptid_get_tid (inferior_ptid) == 0)
+           thread_change_ptid (inferior_ptid, ptid);
+         else
+           add_thread (ptid);
+       }
 
       addr = read_memory_typed_address (addr + offset,
                                        builtin_type_void_data_ptr);