From 2f4d88753bc52c1104d9418fb843154ee8ef610c Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 12 Mar 2010 03:54:45 +0000 Subject: [PATCH] * target.c (memory_xfer_partial): Don't use the stack cache if inspecting trace frames. * tracepoint.c (finish_tfind_command): Invalidate the target dcache. --- gdb/ChangeLog | 7 +++++++ gdb/target.c | 5 +++++ gdb/tracepoint.c | 1 + 3 files changed, 13 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9053217cb15..4bc4d4faed7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2010-03-12 Pedro Alves + + * 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 * solib-svr4.c (LM_ADDR_CHECK) : Use printf_unfiltered diff --git a/gdb/target.c b/gdb/target.c index 5f7a2e729af..f253ee0713c 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 d248db4c305..e1679fadb6b 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) -- 2.30.2