From bedc473418aa3b595a985e4adbbeb7864c5891e3 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Fri, 7 May 2021 11:52:51 -0400 Subject: [PATCH] gdb: remove reference to current inferior in target_stack::unpush target_stack::unpush needs to get the target beneath the target being unpushed to update the m_top field (which keeps the stratum of the top-most target). It currently does so using target_ops::beneath, which uses the target stack of the current inferior. The target stack of the current inferior is the same as the `this` in the unpush method. Avoid this detour and remove this reference to the current inferior by calling target_ops::find_beneath and passing `this` to find the target beneath `t` in the target stack that is `this`. gdb/ChangeLog: * target.c (target_stack::unpush): Call target_ops::find_beneath to get the target beneath `t`. Change-Id: If9d9661567c5c16f655d270bd2ec9f1b3aa6dadc --- gdb/ChangeLog | 5 +++++ gdb/target.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b93a1dda8dd..e75eb04247b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2021-05-07 Simon Marchi + + * target.c (target_stack::unpush): Call target_ops::find_beneath + to get the target beneath `t`. + 2021-05-07 Simon Marchi * target.c (target_close): Check in all inferiors that the diff --git a/gdb/target.c b/gdb/target.c index 00f0acde758..78327a2a6c3 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -1214,7 +1214,7 @@ target_stack::unpush (target_ops *t) m_stack[stratum] = NULL; if (m_top == stratum) - m_top = t->beneath ()->stratum (); + m_top = this->find_beneath (t)->stratum (); /* Finally close the target, if there are no inferiors referencing this target still. Note we do this after unchaining, -- 2.30.2