From d37346f037e49c0ce3c4875a828fe1df85331638 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Thu, 28 Jan 2010 22:07:58 +0000 Subject: [PATCH] * regcache.c (regcache_xmalloc): Add aspace argument. Use it for the new regcache. All callers updated. (regcache_cpy, regcache_cpy_no_passthrough): Do not set aspace here. (get_thread_arch_regcache): Do not set aspace here. * regcache.h (regcache_xmalloc): Update declaration. * frame.c, infcall.c, ppc-linux-tdep.c: Calls to regcache_xmalloc updated. --- gdb/ChangeLog | 11 +++++++++++ gdb/frame.c | 4 +++- gdb/infcall.c | 3 ++- gdb/ppc-linux-tdep.c | 3 ++- gdb/regcache.c | 15 ++++++--------- gdb/regcache.h | 3 ++- 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index db65d6d..1c284c4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2010-01-28 Daniel Jacobowitz + + * regcache.c (regcache_xmalloc): Add aspace argument. Use it + for the new regcache. All callers updated. + (regcache_cpy, regcache_cpy_no_passthrough): Do not set aspace here. + (get_thread_arch_regcache): Do not set aspace here. + * regcache.h (regcache_xmalloc): Update declaration. + + * frame.c, infcall.c, ppc-linux-tdep.c: Calls to + regcache_xmalloc updated. + 2010-01-28 Joel Brobecker Another -Wunused-function error in procfs.c (sparc-solaris) diff --git a/gdb/frame.c b/gdb/frame.c index fff0554..aaa70da 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -682,7 +682,9 @@ do_frame_register_read (void *src, int regnum, gdb_byte *buf) struct regcache * frame_save_as_regcache (struct frame_info *this_frame) { - struct regcache *regcache = regcache_xmalloc (get_frame_arch (this_frame)); + struct address_space *aspace = get_frame_address_space (this_frame); + struct regcache *regcache = regcache_xmalloc (get_frame_arch (this_frame), + aspace); struct cleanup *cleanups = make_cleanup_regcache_xfree (regcache); regcache_save (regcache, do_frame_register_read, this_frame); discard_cleanups (cleanups); diff --git a/gdb/infcall.c b/gdb/infcall.c index e736faa..e642894 100644 --- a/gdb/infcall.c +++ b/gdb/infcall.c @@ -998,7 +998,8 @@ When the function is done executing, GDB will silently stop."), and the dummy frame has already been popped. */ { - struct regcache *retbuf = regcache_xmalloc (gdbarch); + struct address_space *aspace = get_regcache_aspace (stop_registers); + struct regcache *retbuf = regcache_xmalloc (gdbarch, aspace); struct cleanup *retbuf_cleanup = make_cleanup_regcache_xfree (retbuf); struct value *retval = NULL; diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index 36cedf1..fae5ab2 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -1421,7 +1421,8 @@ ppu2spu_sniffer (const struct frame_unwind *self, struct ppu2spu_cache *cache = FRAME_OBSTACK_CALLOC (1, struct ppu2spu_cache); - struct regcache *regcache = regcache_xmalloc (data.gdbarch); + struct address_space *aspace = get_frame_address_space (this_frame); + struct regcache *regcache = regcache_xmalloc (data.gdbarch, aspace); struct cleanup *cleanups = make_cleanup_regcache_xfree (regcache); regcache_save (regcache, ppu2spu_unwind_register, &data); discard_cleanups (cleanups); diff --git a/gdb/regcache.c b/gdb/regcache.c index 974eada..d6f58fe 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -212,7 +212,7 @@ struct regcache }; struct regcache * -regcache_xmalloc (struct gdbarch *gdbarch) +regcache_xmalloc (struct gdbarch *gdbarch, struct address_space *aspace) { struct regcache_descr *descr; struct regcache *regcache; @@ -224,7 +224,7 @@ regcache_xmalloc (struct gdbarch *gdbarch) = XCALLOC (descr->sizeof_raw_registers, gdb_byte); regcache->register_valid_p = XCALLOC (descr->sizeof_raw_register_valid_p, gdb_byte); - regcache->aspace = NULL; + regcache->aspace = aspace; regcache->readonly_p = 1; regcache->ptid = minus_one_ptid; return regcache; @@ -358,8 +358,6 @@ regcache_cpy (struct regcache *dst, struct regcache *src) gdb_assert (src != dst); gdb_assert (src->readonly_p || dst->readonly_p); - dst->aspace = src->aspace; - if (!src->readonly_p) regcache_save (dst, do_cooked_read, src); else if (!dst->readonly_p) @@ -379,7 +377,6 @@ regcache_cpy_no_passthrough (struct regcache *dst, struct regcache *src) silly - it would mean that valid_p would be completely invalid. */ gdb_assert (dst->readonly_p); - dst->aspace = src->aspace; memcpy (dst->registers, src->registers, dst->descr->sizeof_raw_registers); memcpy (dst->register_valid_p, src->register_valid_p, dst->descr->sizeof_raw_register_valid_p); @@ -389,7 +386,7 @@ struct regcache * regcache_dup (struct regcache *src) { struct regcache *newbuf; - newbuf = regcache_xmalloc (src->descr->gdbarch); + newbuf = regcache_xmalloc (src->descr->gdbarch, get_regcache_aspace (src)); regcache_cpy (newbuf, src); return newbuf; } @@ -398,7 +395,7 @@ struct regcache * regcache_dup_no_passthrough (struct regcache *src) { struct regcache *newbuf; - newbuf = regcache_xmalloc (src->descr->gdbarch); + newbuf = regcache_xmalloc (src->descr->gdbarch, get_regcache_aspace (src)); regcache_cpy_no_passthrough (newbuf, src); return newbuf; } @@ -453,10 +450,10 @@ get_thread_arch_regcache (ptid_t ptid, struct gdbarch *gdbarch) && get_regcache_arch (list->regcache) == gdbarch) return list->regcache; - new_regcache = regcache_xmalloc (gdbarch); + new_regcache = regcache_xmalloc (gdbarch, + target_thread_address_space (ptid)); new_regcache->readonly_p = 0; new_regcache->ptid = ptid; - new_regcache->aspace = target_thread_address_space (ptid); gdb_assert (new_regcache->aspace != NULL); list = xmalloc (sizeof (struct regcache_list)); diff --git a/gdb/regcache.h b/gdb/regcache.h index 9bb6619..d870960 100644 --- a/gdb/regcache.h +++ b/gdb/regcache.h @@ -31,7 +31,8 @@ extern struct regcache *get_thread_arch_regcache (ptid_t, struct gdbarch *); void regcache_xfree (struct regcache *regcache); struct cleanup *make_cleanup_regcache_xfree (struct regcache *regcache); -struct regcache *regcache_xmalloc (struct gdbarch *gdbarch); +struct regcache *regcache_xmalloc (struct gdbarch *gdbarch, + struct address_space *aspace); /* Return REGCACHE's architecture. */ -- 2.7.4