diff --git a/src/Gfind_dynamic_proc_info.c b/src/Gfind_dynamic_proc_info.c index f931af6c..891b57e6 100644 --- a/src/Gfind_dynamic_proc_info.c +++ b/src/Gfind_dynamic_proc_info.c @@ -31,13 +31,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef UNW_REMOTE_ONLY static inline int -local_find_proc_info (unw_addr_space_t as, unw_word_t ip, - unw_proc_info_t *pi, +local_find_proc_info (unw_dyn_info_list_t *list, + unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi, int need_unwind_info, void *arg) { unw_dyn_info_t *di; - for (di = _U_dyn_info_list.first; di; di = di->next) + for (di = list->first; di; di = di->next) if (ip >= di->start_ip && ip < di->end_ip) return unwi_extract_dynamic_proc_info (as, ip, pi, di, need_unwind_info, arg); @@ -73,13 +73,15 @@ unwi_find_dynamic_proc_info (unw_addr_space_t as, unw_word_t ip, void *arg) { #ifdef UNW_LOCAL_ONLY - return local_find_proc_info (as, ip, pi, need_unwind_info, arg); + return local_find_proc_info (&_U_dyn_info_list, + as, ip, pi, need_unwind_info, arg); #else # ifdef UNW_REMOTE_ONLY return remote_find_proc_info (as, ip, pi, need_unwind_info, arg); # else if (as == unw_local_addr_space) - return local_find_proc_info (as, ip, pi, need_unwind_info, arg); + return local_find_proc_info ((unw_dyn_info_t *) _U_dyn_info_list_addr (), + as, ip, pi, need_unwind_info, arg); else return remote_find_proc_info (as, ip, pi, need_unwind_info, arg); # endif