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  <simon.marchi@efficios.com>
+
+	* target.c (target_stack::unpush): Call target_ops::find_beneath
+	to get the target beneath `t`.
+
 2021-05-07  Simon Marchi  <simon.marchi@efficios.com>
 
 	* 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,