diff options
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/target.c | 5 | ||||
-rw-r--r-- | gdb/tracepoint.c | 1 |
3 files changed, 13 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9053217..4bc4d4f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2010-03-12 Pedro Alves <pedro@codesourcery.com> + + * target.c (memory_xfer_partial): Don't use the stack cache if + inspecting trace frames. + * tracepoint.c (finish_tfind_command): Invalidate the target + dcache. + 2010-03-11 Jan Kratochvil <jan.kratochvil@redhat.com> * solib-svr4.c (LM_ADDR_CHECK) <info_verbose>: Use printf_unfiltered diff --git a/gdb/target.c b/gdb/target.c index 5f7a2e7..f253ee0 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -43,6 +43,7 @@ #include "solib.h" #include "exec.h" #include "inline-frame.h" +#include "tracepoint.h" static void target_info (char *, int); @@ -1292,6 +1293,10 @@ memory_xfer_partial (struct target_ops *ops, enum target_object object, inf = NULL; if (inf != NULL + /* The dcache reads whole cache lines; that doesn't play well + with reading from a trace buffer, because reading outside of + the collected memory range fails. */ + && get_traceframe_number () == -1 && (region->attrib.cache || (stack_cache_enabled_p && object == TARGET_OBJECT_STACK_MEMORY))) { diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index d248db4..e1679fa 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -1757,6 +1757,7 @@ finish_tfind_command (enum trace_find_type type, int num, reinit_frame_cache (); registers_changed (); + target_dcache_invalidate (); set_traceframe_num (target_frameno); set_tracepoint_num (tp ? tp->number : target_tracept); if (target_frameno == -1) |