aboutsummaryrefslogtreecommitdiff
path: root/gdb/valops.c
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2016-04-22 17:18:31 +0100
committerYao Qi <yao.qi@linaro.org>2016-04-22 17:20:24 +0100
commit6d7e9d3b8dbbf46a0cd5dc4f6341c1f9eb8cd6ae (patch)
tree26c37f7af54667ac9b735c57ae8bf907063f9662 /gdb/valops.c
parentb3f11165aad39586cca0352ed5fe32b721699c76 (diff)
Choose TARGET_OBJECT_STACK_MEMORY and TARGET_OBJECT_MEMORY in read_value_memory
Before this patch https://sourceware.org/ml/gdb-patches/2014-02/msg00709.html read_value_memory checks parameter 'stack', and call read_stack or read_memory respectively. However, 'stack' is not checked and TARGET_OBJECT_MEMORY is always used in target_xfer_partial, which is a mistake in the patch above. This patch checks parameter 'stack', and choose TARGET_OBJECT_MEMORY or TARGET_OBJECT_STACK_MEMORY accordingly. gdb: 2016-04-22 Yao Qi <yao.qi@linaro.org> * valops.c (read_value_memory): New local variable 'stack'. Set it to either TARGET_OBJECT_STACK_MEMORY or TARGET_OBJECT_MEMORY.
Diffstat (limited to 'gdb/valops.c')
-rw-r--r--gdb/valops.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gdb/valops.c b/gdb/valops.c
index 8a555f3286..bbbbd0074e 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -961,6 +961,9 @@ read_value_memory (struct value *val, int embedded_offset,
ULONGEST xfered_total = 0;
struct gdbarch *arch = get_value_arch (val);
int unit_size = gdbarch_addressable_memory_unit_size (arch);
+ enum target_object object;
+
+ object = stack ? TARGET_OBJECT_STACK_MEMORY : TARGET_OBJECT_MEMORY;
while (xfered_total < length)
{
@@ -968,7 +971,7 @@ read_value_memory (struct value *val, int embedded_offset,
ULONGEST xfered_partial;
status = target_xfer_partial (current_target.beneath,
- TARGET_OBJECT_MEMORY, NULL,
+ object, NULL,
buffer + xfered_total * unit_size, NULL,
memaddr + xfered_total,
length - xfered_total,