Don't update target_dcache if it is not initialized
authorYao Qi <yao@codesourcery.com>
Thu, 31 Oct 2013 07:01:33 +0000 (15:01 +0800)
committerYao Qi <yao@codesourcery.com>
Wed, 20 Nov 2013 03:40:48 +0000 (11:40 +0800)
After previous patch, 'target_dcache' is initialized lazily.  It is
possible that 'target_dcache' is still NULL when GDB writes to memory.
In this case, update to 'target_dcache' can be skipped.

gdb:

2013-11-20  Yao Qi  <yao@codesourcery.com>

* target.c (memory_xfer_partial_1): Update 'target_dcache' if
it is initialized.

gdb/ChangeLog
gdb/target.c

index 9de86a3e268280962f67bc6a12d1977621028d77..78a871f14b3282a255f8570152fdbee310a0a311 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-20  Yao Qi  <yao@codesourcery.com>
+
+       * target.c (memory_xfer_partial_1): Update 'target_dcache' if
+       it is initialized.
+
 2013-11-20  Yao Qi  <yao@codesourcery.com>
 
        * dcache.c (last_cache): Remove.
index cb758536ce58bb79958718c26d90e0f97e9cefb7..2c0096e5bdaddba5e51cefbbda97ff76b1ea0d1f 100644 (file)
@@ -1667,11 +1667,12 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
   if (res > 0
       && inf != NULL
       && writebuf != NULL
+      && target_dcache_init_p ()
       && !region->attrib.cache
       && stack_cache_enabled_p
       && object != TARGET_OBJECT_STACK_MEMORY)
     {
-      DCACHE *dcache = target_dcache_get_or_init ();
+      DCACHE *dcache = target_dcache_get ();
 
       dcache_update (dcache, memaddr, (void *) writebuf, res);
     }