[PATCH 1/3] Pass inferior to terminal_save_inferior

Simon Marchi simon.marchi@polymtl.ca
Tue Oct 23 20:56:00 GMT 2018


On 2018-10-23 7:11 a.m., Pedro Alves wrote:
> Oh, in that case it'd be clearer to not bundle it in the same series then.

Right, I happened to write it at the same time (when trying to figure out
how things worked) but it's not actually related.

>> Can't you access the inferior's target stack directly instead of changing the current inferior?
> 
> I can for the call to the top target, but then the problem is the beneath()
> calls in all the target-delegates.c delegating implementations.  E.g. here:
> 
>   void
>  -target_ops::terminal_save_inferior ()
>  +target_ops::terminal_save_inferior (inferior *arg0)
>   {
>  -  this->beneath ()->terminal_save_inferior ();
>  +  this->beneath ()->terminal_save_inferior (arg0);
>           ^^^^^^^^^
>   }
> 
> because beneath() looks at the target stack of the current
> inferior.  It would need to look for the target beneath in
> the target stack of the arg0 inferior instead.  Otherwise
> you start the top target call in inferior B, and then
> cross the the beneath target of inferior A (the current inferior).
> Whoops.  At some point in the branch I made target_ops::beneath
> take an optional inferior pointer, but when I stumbled on this
> issue in target-delegates.c I ended up reverting it, as it
> wasn't easy to fix.  I think that we could maybe teach
> make-target-delegates to automatically emit
> 
>   void
>   target_ops::method (inferior *arg0)
>   {
>     this->beneath (arg0)->method (arg0);
>   }
> 
> and:
> 
>   void
>   target_ops::method (thread_info *arg0)
>   {
>     this->beneath (arg0->inf)->method (arg0);
>   }
> 
> iff the method's first parameter is an inferior or thread_info
> pointer.  But that was just an idea, I never toyed with it,
> because it would be a detour.  So I gave up on the inferior
> parameter to target beneath, and thought I'd better focus instead
> of getting the multi-target basics in first, even if that means we
> need to swap current inferior/thread here and there, as usual.

Ok I understand.  At some point I think it would be very nice if it
"just worked", but I totally understand the need to go by small
increment.  In that case, I think I'll drop patches 1 and 2, since
they don't really provide any benefit at the moment, and just cause
complications going further.

Simon



More information about the Gdb-patches mailing list