From cf9c4950bcec98c7914b201763fed2aed1e14d76 Mon Sep 17 00:00:00 2001
From: "mostang.com!davidm" <mostang.com!davidm>
Date: Tue, 11 Mar 2003 01:11:18 +0000
Subject: [PATCH] Add include of "tdep.h". (unwi_dyn_remote_find_proc_info):
 Maintain as->dyn_info_list_addr as a cache of 	the most recently obtained
 dyn-info-list address.

(Logical change 1.61)
---
 src/dyn-remote.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/dyn-remote.c b/src/dyn-remote.c
index 023548cb..25b4c3eb 100644
--- a/src/dyn-remote.c
+++ b/src/dyn-remote.c
@@ -27,6 +27,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 #include <stdlib.h>
 
 #include "internal.h"
+#include "tdep.h"
 
 static void
 free_regions (unw_dyn_region_info_t *region)
@@ -200,8 +201,15 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip,
   unw_dyn_info_t *di = NULL;
   int ret;
 
-  if ((*a->get_dyn_info_list_addr) (as, &dyn_list_addr, arg) < 0)
-    return -UNW_ENOINFO;
+  if (as->dyn_info_list_addr)
+    dyn_list_addr = as->dyn_info_list_addr;
+  else
+    {
+      if ((*a->get_dyn_info_list_addr) (as, &dyn_list_addr, arg) < 0)
+	return -UNW_ENOINFO;
+      if (as->caching_policy != UNW_CACHE_NONE)
+	as->dyn_info_list_addr = dyn_list_addr;
+    }
 
   do
     {