72517ea Fix reconnecting to a gdbserver already debugging multiple processes, II

Authored and Committed by palves 4 years ago
1 file changed. 9 lines added. 3 lines removed.
    Fix reconnecting to a gdbserver already debugging multiple processes, II
    
    Another bug exposed by gdb.server/extended-remote-restart.exp in the
    multi-target work is that remote_target::start_remote can leave
    inferior_ptid and current_inferior() out of sync:
    
     (top-gdb) p current_inferior_->pid
     $1 = 29541
     (top-gdb) p inferior_ptid
     $2 = {m_pid = 29540, m_lwp = 29540, m_tid = 0}
    
    This is caused by writing to inferior_ptid directly instead of using
    switch_to_thread.  Also, "inferior_list->thread_list->ptid" assumes
    that we want the first thread of the first inferior, but that inferior
    may not have threads, or with multi-target, that target may be
    connected to some other target.
    
    gdb/ChangeLog:
    yyyy-mm-dd  Pedro Alves  <palves@redhat.com>
    
    	* remote.c (remote_target::start_remote): Don't set inferior_ptid
    	directly.  Instead find the first thread in the thread list and
    	use switch_to_thread.
    
        
file modified
+9 -3