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 {