From e00aa27222e4d0b52aa13b852c38d23c402160c7 Mon Sep 17 00:00:00 2001 From: "hp.com!davidm" Date: Sat, 29 Mar 2003 07:32:50 +0000 Subject: [PATCH] (_UPT_get_dyn_info_list_addr): Bracket ia64-specific variables in #if UNW_TARGET_IA64. If ui->ei.image is non-NULL, close the old image and invalidate the cache before mapping the new image. (Logical change 1.71) --- src/_UPT_get_dyn_info_list_addr.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/_UPT_get_dyn_info_list_addr.c b/src/_UPT_get_dyn_info_list_addr.c index b6c8dd8d..ae690c20 100644 --- a/src/_UPT_get_dyn_info_list_addr.c +++ b/src/_UPT_get_dyn_info_list_addr.c @@ -34,12 +34,14 @@ int _UPT_get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg) { +#if UNW_TARGET_IA64 unsigned long lo, hi, off; struct UPT_info *ui = arg; struct map_iterator mi; char path[PATH_MAX]; unw_dyn_info_t *di; unw_word_t res; +#endif int count = 0; debug (100, "%s: looking for dyn_info list\n", __FUNCTION__); @@ -51,6 +53,13 @@ _UPT_get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, if (off) continue; + if (ui->ei.image) + { + munmap (ui->ei.image, ui->ei.size); + /* invalidate the cache: */ + ui->di_cache.start_ip = ui->di_cache.end_ip = 0; + } + if (elf_map_image (&ui->ei, path) < 0) return -UNW_ENOINFO;