From 1527aea867d6a261dc133fed39c92ee74b45e7e3 Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Thu, 18 Jul 2013 23:09:49 +0000 Subject: [PATCH] gdb/ * target.c (update_current_target): Change the default action of 'to_traceframe_info' from tcomplain to return_zero. * target.h (struct target_ops) : 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 | 9 +++++++++ gdb/target.c | 2 +- gdb/target.h | 15 ++++++++++++--- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.trace/read-memory.exp | 10 ++++------ gdb/valops.c | 3 +-- 6 files changed, 32 insertions(+), 12 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9bbce45aba..a95e05c4cf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2013-07-19 Yao Qi + + * target.c (update_current_target): Change the default action + of 'to_traceframe_info' from tcomplain to return_zero. + * target.h (struct target_ops) : Add more + comments. + * valops.c (read_value_memory): Call + traceframe_available_memory unconditionally. + 2013-07-18 Yao Qi * coffread.c (coff_symfile_read): Iterate over minimal symbols, diff --git a/gdb/target.c b/gdb/target.c index 3acd6c45fa..bc52ec4e37 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -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); diff --git a/gdb/target.h b/gdb/target.h index 2ba85d9f70..21e5792ad7 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -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 diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 7cd25a007a..77658adfc3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-07-19 Yao Qi + + * gdb.trace/read-memory.exp (test_from_remote): Update test. + (teset_from_exec): Likewise. + 2013-07-19 Yao Qi * gdb.trace/read-memory.c: New. diff --git a/gdb/testsuite/gdb.trace/read-memory.exp b/gdb/testsuite/gdb.trace/read-memory.exp index bb59853792..820ded3814 100644 --- a/gdb/testsuite/gdb.trace/read-memory.exp +++ b/gdb/testsuite/gdb.trace/read-memory.exp @@ -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" " = " + gdb_test "print testglob_not_collected" " = " 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" " = " + gdb_test "print testglob_not_collected" " = " gdb_test "print constglob" " = 10000" gdb_test "print constglob_not_collected" " = 100" } diff --git a/gdb/valops.c b/gdb/valops.c index 4161c2c0b0..a3ab24f2ec 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -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); -- 2.34.1