diff --git a/gdb/ChangeLog b/gdb/ChangeLog index bd46425aa1..4b2267630d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2017-06-13 Andreas Arnez + + * dwarf2loc.c (read_pieced_value): Respect parent value's offset + when targeting a bit-field. + (write_pieced_value): Likewise. + 2017-06-13 Andreas Arnez * dwarf2loc.c (struct piece_closure) : Remove field. diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 8f99844ea3..6ce2993d0a 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -1776,7 +1776,8 @@ read_pieced_value (struct value *v) bits_to_skip = 8 * value_offset (v); if (value_bitsize (v)) { - bits_to_skip += value_bitpos (v); + bits_to_skip += (8 * value_offset (value_parent (v)) + + value_bitpos (v)); type_len = value_bitsize (v); } else @@ -1946,7 +1947,8 @@ write_pieced_value (struct value *to, struct value *from) bits_to_skip = 8 * value_offset (to); if (value_bitsize (to)) { - bits_to_skip += value_bitpos (to); + bits_to_skip += (8 * value_offset (value_parent (to)) + + value_bitpos (to)); type_len = value_bitsize (to); } else