diff -urN src/gdb/gdbserver/server.c dev/gdb/gdbserver/server.c --- src/gdb/gdbserver/server.c 2007-03-29 05:37:17.000000000 +0200 +++ dev/gdb/gdbserver/server.c 2007-04-27 09:36:47.000000000 +0200 @@ -259,6 +259,14 @@ { static struct inferior_list_entry *thread_ptr; + /* Reply the current thread id. */ + if (own_buf[0] == 'q' && own_buf[1] == 'C') + { + sprintf (own_buf, "QC %lx", + ((struct inferior_list_entry *) current_inferior)->id); + return; + } + if (strcmp ("qSymbol::", own_buf) == 0) { if (the_target->look_up_symbols != NULL) diff -urN src/gdb/remote.c dev/gdb/remote.c --- src/gdb/remote.c 2007-03-28 05:42:54.000000000 +0200 +++ dev/gdb/remote.c 2007-04-27 09:40:33.000000000 +0200 @@ -2096,9 +2100,7 @@ /* Ack any packet which the remote side has already sent. */ serial_write (remote_desc, "+", 1); - /* Let the stub know that we want it to return the thread. */ - set_thread (-1, 0); - + /* Get the pid of the first thread. */ inferior_ptid = remote_current_thread (inferior_ptid); get_offsets (); /* Get text, data & bss offsets. */