gdb/
authorYao Qi <yao@codesourcery.com>
Thu, 18 Jul 2013 23:09:49 +0000 (23:09 +0000)
committerYao Qi <yao@codesourcery.com>
Thu, 18 Jul 2013 23:09:49 +0000 (23:09 +0000)
* target.c (update_current_target): Change the default action
of 'to_traceframe_info' from tcomplain to return_zero.
* target.h (struct target_ops) <to_traceframe_info>: Add more
comments.
* valops.c (read_value_memory): Call
traceframe_available_memory unconditionally.

gdb/testsuite/

* gdb.trace/read-memory.exp (test_from_remote): Update test.
(teset_from_exec): Likewise.

gdb/ChangeLog
gdb/target.c
gdb/target.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.trace/read-memory.exp
gdb/valops.c

index 9bbce45..a95e05c 100644 (file)
@@ -1,3 +1,12 @@
+2013-07-19  Yao Qi  <yao@codesourcery.com>
+
+       * target.c (update_current_target): Change the default action
+       of 'to_traceframe_info' from tcomplain to return_zero.
+       * target.h (struct target_ops) <to_traceframe_info>: Add more
+       comments.
+       * valops.c (read_value_memory): Call
+       traceframe_available_memory unconditionally.
+
 2013-07-18  Yao Qi  <yao@codesourcery.com>
 
        * coffread.c (coff_symfile_read): Iterate over minimal symbols,
index 3acd6c4..bc52ec4 100644 (file)
@@ -962,7 +962,7 @@ update_current_target (void)
            tcomplain);
   de_fault (to_traceframe_info,
            (struct traceframe_info * (*) (void))
-           tcomplain);
+           return_zero);
   de_fault (to_supports_evaluation_of_breakpoint_conditions,
            (int (*) (void))
            return_zero);
index 2ba85d9..21e5792 100644 (file)
@@ -854,9 +854,18 @@ struct target_ops
       (const char *id);
 
     /* Return a traceframe info object describing the current
-       traceframe's contents.  This method should not cache data;
-       higher layers take care of caching, invalidating, and
-       re-fetching when necessary.  */
+       traceframe's contents.  If the target doesn't support
+       traceframe info, return NULL.  If the current traceframe is not
+       selected (the current traceframe number is -1), the target can
+       choose to return either NULL or an empty traceframe info.  If
+       NULL is returned, for example in remote target, GDB will read
+       from the live inferior.  If an empty traceframe info is
+       returned, for example in tfile target, which means the
+       traceframe info is available, but the requested memory is not
+       available in it.  GDB will try to see if the requested memory
+       is available in the read-only sections.  This method should not
+       cache data; higher layers take care of caching, invalidating,
+       and re-fetching when necessary.  */
     struct traceframe_info *(*to_traceframe_info) (void);
 
     /* Ask the target to use or not to use agent according to USE.  Return 1
index 7cd25a0..77658ad 100644 (file)
@@ -1,5 +1,10 @@
 2013-07-19  Yao Qi  <yao@codesourcery.com>
 
+       * gdb.trace/read-memory.exp (test_from_remote): Update test.
+       (teset_from_exec): Likewise.
+
+2013-07-19  Yao Qi  <yao@codesourcery.com>
+
        * gdb.trace/read-memory.c: New.
        * gdb.trace/read-memory.exp: New.
 
index bb59853..820ded3 100644 (file)
@@ -103,9 +103,8 @@ proc test_from_remote { target } {
        }
 
        with_test_prefix "w/o setting traceframe" {
-           gdb_test "print testglob" "Cannot access memory at address.*"
-           gdb_test "print testglob_not_collected" \
-               "Cannot access memory at address.*"
+           gdb_test "print testglob" " = <unavailable>"
+           gdb_test "print testglob_not_collected" " = <unavailable>"
            gdb_test "print constglob" " = 10000"
            gdb_test "print constglob_not_collected" " = 100"
        }
@@ -140,9 +139,8 @@ proc teset_from_exec { target } {
        "change to ${target} target"
 
     with_test_prefix "exec to ${target} w/o setting traceframe" {
-       gdb_test "print testglob" "Cannot access memory at address.*"
-       gdb_test "print testglob_not_collected" \
-           "Cannot access memory at address.*"
+       gdb_test "print testglob" " = <unavailable>"
+       gdb_test "print testglob_not_collected" " = <unavailable>"
        gdb_test "print constglob" " = 10000"
        gdb_test "print constglob_not_collected" " = 100"
     }
index 4161c2c..a3ab24f 100644 (file)
@@ -955,8 +955,7 @@ read_value_memory (struct value *val, int embedded_offset,
     {
       VEC(mem_range_s) *available_memory;
 
-      if (get_traceframe_number () < 0
-         || !traceframe_available_memory (&available_memory, memaddr, length))
+      if (!traceframe_available_memory (&available_memory, memaddr, length))
        {
          if (stack)
            read_stack (memaddr, buffer, length);