7eb4eee switch inferior/thread before calling target methods

Authored and Committed by palves 4 years ago
    switch inferior/thread before calling target methods
    
    Once each inferior has its own target stack, we'll need to make sure
    that the right inferior is selected before we call into target
    methods.
    
    It kind of sounds worse than it is in practice.  Not that many places
    need to be concerned.
    
    In thread.c, we add a new switch_to_thread_if_alive function that
    centralizes the switching before calls to target_thread_alive.  Other
    cases are handled with explicit switching.
    
    gdb/ChangeLog:
    yyyy-mm-dd  Pedro Alves  <palves@redhat.com>
    
    	* gdbthread.h (scoped_restore_current_thread)
    	<dont_restore, restore, m_dont_restore>: Declare.
    	* thread.c (thread_alive): Add assertion.  Return bool.
    	(switch_to_thread_if_alive): New.
    	(prune_threads): Switch inferior/thread.
    	(print_thread_info_1): Switch thread before calling target methods.
    	(scoped_restore_current_thread::restore): New, factored out from
    	...
    	(scoped_restore_current_thread::~scoped_restore_current_thread):
    	... this.
    	(scoped_restore_current_thread::scoped_restore_current_thread):
    	Add assertion.
    	(thread_apply_all_command, thread_select): Use
    	switch_to_thread_if_alive.
    	* infrun.c (proceed, restart_threads, handle_signal_stop)
    	(switch_back_to_stepped_thread): Switch current thread before
    	calling target methods.
    
        
file modified
+14 -2
file modified
+52 -20