aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/target.c5
-rw-r--r--gdb/tracepoint.c1
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)