Fix ravenscar-thread.c for multi-target
Commit Message
ravenscar-thread.c needed a change to adapt to multi-target:
ravenscar_thread_target::mourn_inferior called the mourn_inferior
method on the target beneat -- but when the target beneath was the
remote target, this resulted in the ravenscar target being deleted.
Switching the order of the calls to unpush_target and the beneath's
mourn_inferior fixes this problem.
gdb/ChangeLog
2020-01-23 Tom Tromey <tromey@adacore.com>
* ravenscar-thread.c (ravenscar_thread_target::mourn_inferior):
Call beneath target's mourn_inferior after unpushing.
Change-Id: Ia80380515c403adc40505a6b3420c9cb35754370
---
gdb/ChangeLog | 5 +++++
gdb/ravenscar-thread.c | 3 ++-
2 files changed, 7 insertions(+), 1 deletion(-)
Comments
>>>>> "Tom" == Tom Tromey <tromey@adacore.com> writes:
Tom> ravenscar-thread.c needed a change to adapt to multi-target:
Tom> ravenscar_thread_target::mourn_inferior called the mourn_inferior
Tom> method on the target beneat -- but when the target beneath was the
Tom> remote target, this resulted in the ravenscar target being deleted.
Tom> Switching the order of the calls to unpush_target and the beneath's
Tom> mourn_inferior fixes this problem.
Tom> gdb/ChangeLog
Tom> 2020-01-23 Tom Tromey <tromey@adacore.com>
Tom> * ravenscar-thread.c (ravenscar_thread_target::mourn_inferior):
Tom> Call beneath target's mourn_inferior after unpushing.
I'm checking this in now.
Tom
@@ -515,8 +515,9 @@ void
ravenscar_thread_target::mourn_inferior ()
{
m_base_ptid = null_ptid;
- beneath ()->mourn_inferior ();
+ target_ops *beneath = this->beneath ();
unpush_target (this);
+ beneath->mourn_inferior ();
}
/* Implement the to_core_of_thread target_ops "method". */