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 9bbce45abaf69383ae692bee1273455a894022f1..a95e05c4cf9515ed72e3e65315de78043f363125 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 3acd6c45fad61a57af3e9fd14e35f1a06c28612c..bc52ec4e37347b0e80eab55292d9bd9400dfe644 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 2ba85d9f70d99beb6a770c480d52d618c947ff6f..21e5792ad784d3f8d26f356e286da8dedc7b73b2 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 7cd25a007ac6d8cdc076662e9982ca45d20250e3..77658adfc3daaeabf7c15c3cbb61ef7bbaf5c0b7 100644 (file)
@@ -1,3 +1,8 @@
+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.
index bb5985379253a3a81cfae3b151f2d08784491ecb..820ded38140b2e4cd79f0e078f3958c0bad605c4 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 4161c2c0b0344eb3a98f55e8dd62ff99771435e6..a3ab24f2ecd5835ca9b156ba6600cfa9a7acc8c2 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);