ffb865b Don't check target is running in remote_target::mourn_inferior

Authored and Committed by palves 4 years ago
1 file changed. 0 lines added. 20 lines removed.
    Don't check target is running in remote_target::mourn_inferior
    
    I believe the tail end of remote_target::mourn_inferior is broken, and
    it's been broken for too long to even bother trying to fix.  Most
    probably nobody needs it.  If the code is reached and we find the
    target is running, we'd need to resync the thread list, at least,
    since generic_mourn_inferior got rid of all the threads in the
    inferior, otherwise, we'd hit an assertion on the next call to
    inferior_thread(), for example.  A "correct" fix would probably
    involve restarting the whole remote_target::start_remote requence,
    exactly as if we had completely disconnected and reconnected from
    scratch.
    
    Note that regular stub debugging usually uses plain target remote, but
    this code is only reachable in target extended-mode:
    
    - The !remote_multi_process_p check means that it's only reacheable if
      the stub does not support multi-process.  I.e., there can only ever
      be one live process.
    
    - remote_target::mourn_inferior has this at the top:
    
      /* In 'target remote' mode with one inferior, we close the connection.  */
      if (!rs->extended && number_of_live_inferiors () <= 1)
        {
          unpush_target (this);
    
          /* remote_close takes care of doing most of the clean up.  */
          generic_mourn_inferior ();
          return;
        }
    
      Which means that if we only had one live inferior (which for our
      case, must be true), we'll have closed the connection already,
      unless we're in extended-remote mode.
    
    gdb/ChangeLog:
    yyyy-mm-dd  Pedro Alves  <palves@redhat.com>
    
    	* remote.c (remote_target::mourn_inferior): No longer check
    	whether the target is running.
    
        
file modified
+0 -20