* regcache.c (regcache_xmalloc): Add aspace argument. Use it
authorDaniel Jacobowitz <drow@false.org>
Thu, 28 Jan 2010 22:07:58 +0000 (22:07 +0000)
committerDaniel Jacobowitz <drow@false.org>
Thu, 28 Jan 2010 22:07:58 +0000 (22:07 +0000)
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
gdb/frame.c
gdb/infcall.c
gdb/ppc-linux-tdep.c
gdb/regcache.c
gdb/regcache.h

index db65d6d1dc8480a36a2fc0aef70635a4c486d533..1c284c4f99dedf13b8e3315e8fc3a6c275d8e736 100644 (file)
@@ -1,3 +1,14 @@
+2010-01-28  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * 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  <brobecker@adacore.com>
 
        Another -Wunused-function error in procfs.c (sparc-solaris)
index fff05548261c0eb239da076f6c6f3c88eefc5a23..aaa70daf5927d042625fb394ca132a9eebb4dbc3 100644 (file)
@@ -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);
index e736faa091bb14da81c80736d41edd4d24bda5fb..e64289414836d7b74616631426da37af173ce8fa 100644 (file)
@@ -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;
 
index 36cedf1a53775724381995d798ae2293111d0d57..fae5ab2f1505cf730c5299c41b89c810e8a96b5d 100644 (file)
@@ -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);
index 974eadada86ef2084b48101e71344ba1718fac82..d6f58fe9613bc1b29b4c370b3035ce66a20770a3 100644 (file)
@@ -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));
index 9bb661919329e33c2e0c2628ea71d44258fdb4a9..d8709607fb7acb3ff758e2c5b68d8df62272951d 100644 (file)
@@ -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.  */