From: Simon Marchi Date: Fri, 7 May 2021 15:52:51 +0000 (-0400) Subject: gdb: remove reference to current inferior in target_stack::unpush X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=bedc473418aa3b595a985e4adbbeb7864c5891e3;p=deliverable%2Fbinutils-gdb.git 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 --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b93a1dda8d..e75eb04247 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 00f0acde75..78327a2a6c 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,