forked from Imagelibrary/binutils-gdb
Fix bit-/byte-offset mismatch in parameter to read_value_memory
The function read_value_memory accepts a parameter embedded_offset and expects it to represent the byte offset into the given value. However, the only invocation with a possibly non-zero embedded_offset happens in read_pieced_value, where a bit offset is passed instead. Adjust the implementation of read_value_memory to meet the caller's expectation. This implicitly fixes the invocation in read_pieced_value. gdb/ChangeLog: * valops.c (read_value_memory): Change embedded_offset to represent a bit offset instead of a byte offset. * value.h (read_value_memory): Adjust comment.
This commit is contained in:
@@ -958,7 +958,7 @@ value_at_lazy (struct type *type, CORE_ADDR addr)
|
||||
}
|
||||
|
||||
void
|
||||
read_value_memory (struct value *val, LONGEST embedded_offset,
|
||||
read_value_memory (struct value *val, LONGEST bit_offset,
|
||||
int stack, CORE_ADDR memaddr,
|
||||
gdb_byte *buffer, size_t length)
|
||||
{
|
||||
@@ -984,8 +984,9 @@ read_value_memory (struct value *val, LONGEST embedded_offset,
|
||||
if (status == TARGET_XFER_OK)
|
||||
/* nothing */;
|
||||
else if (status == TARGET_XFER_UNAVAILABLE)
|
||||
mark_value_bytes_unavailable (val, embedded_offset + xfered_total,
|
||||
xfered_partial);
|
||||
mark_value_bits_unavailable (val, (xfered_total * HOST_CHAR_BIT
|
||||
+ bit_offset),
|
||||
xfered_partial * HOST_CHAR_BIT);
|
||||
else if (status == TARGET_XFER_EOF)
|
||||
memory_error (TARGET_XFER_E_IO, memaddr + xfered_total);
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user