+2017-09-21 Kevin Buettner <kevinb@redhat.com>
+
+ * linux-low.c (handle_extended_wait): Call thread_db_notice_clone().
+ * linux-low.h (thread_db_notice_clone): Declare.
+ * thread-db.c (thread_db_notice_clone): New function.
+
2017-09-21 Pedro Alves <palves@redhat.com>
* server.c (gdb_read_memory, handle_status, process_serial_event)
new_lwp->status_pending = status;
}
+ thread_db_notice_clone (get_thread_process (event_thr), ptid);
+
/* Don't report the event. */
return 1;
}
CORE_ADDR load_module, CORE_ADDR *address);
int thread_db_look_up_one_symbol (const char *name, CORE_ADDR *addrp);
+/* Called from linux-low.c when a clone event is detected. Upon entry,
+ both the clone and the parent should be stopped. This function does
+ whatever is required have the clone under thread_db's control. */
+
+void thread_db_notice_clone (struct process_info *proc, ptid_t lwp);
+
extern int have_ptrace_getregset;
/* Tell server.c to perform default processing. */
return 0;
}
+
+/* See linux-low.h. */
+
+void
+thread_db_notice_clone (struct process_info *proc, ptid_t ptid)
+{
+ struct thread_db *thread_db = proc->priv->thread_db;
+
+ /* If the thread layer isn't initialized, return. It may just
+ be that the program uses clone, but does not use libthread_db. */
+ if (thread_db == NULL || !thread_db->all_symbols_looked_up)
+ return;
+
+ if (!find_one_thread (ptid))
+ warning ("Cannot find thread after clone.\n");
+}