diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/dwarf2loc.c | 4 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/var-access.exp | 5 |
4 files changed, 17 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c2bceeb..880cd60 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com> + + * dwarf2loc.c (write_pieced_value): Fix order of calculations for + size capping. + 2017-06-13 Yao Qi <yao.qi@linaro.org> * mips-linux-nat.c: Move include features/mips*-linux.c to diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 127167d..2a45a79 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -1964,8 +1964,6 @@ write_pieced_value (struct value *to, struct value *from) bits_to_skip -= this_size_bits; continue; } - if (this_size_bits > type_len - offset) - this_size_bits = type_len - offset; if (bits_to_skip > 0) { dest_offset_bits = bits_to_skip; @@ -1978,6 +1976,8 @@ write_pieced_value (struct value *to, struct value *from) dest_offset_bits = 0; source_offset_bits = offset; } + if (this_size_bits > type_len - offset) + this_size_bits = type_len - offset; this_size = (this_size_bits + source_offset_bits % 8 + 7) / 8; source_offset = source_offset_bits / 8; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 4993a2d..688efdf 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com> + * gdb.dwarf2/var-pieces.exp: Add test case for modifying a + variable at nonzero offset. + +2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com> + * gdb.dwarf2/var-access.c: New file. * gdb.dwarf2/var-access.exp: New test. * lib/gdb-utils.exp (string_to_regexp): Quote braces as well. diff --git a/gdb/testsuite/gdb.dwarf2/var-access.exp b/gdb/testsuite/gdb.dwarf2/var-access.exp index a52327d..bd92a44 100644 --- a/gdb/testsuite/gdb.dwarf2/var-access.exp +++ b/gdb/testsuite/gdb.dwarf2/var-access.exp @@ -178,6 +178,11 @@ gdb_test "print/d s1" " = \\{a = 63, b = 3, c = 0, d = 1\\}" \ "verify s1.a" gdb_test "print/d a" " = \\{0, 1, 63, 3, 4, 5, 6, 7\\}" \ "verify s1.a through a" +gdb_test_no_output "set var s1.b = 42" +gdb_test "print/d s1" " = \\{a = 63, b = 42, c = 0, d = 1\\}" \ + "verify s1.b" +gdb_test "print/d a" " = \\{0, 1, 63, 42, 4, 5, 6, 7\\}" \ + "verify s1.b through a" # Byte-aligned register- and memory pieces. gdb_test_no_output "set var \$[lindex $regname 0] = 81" \ |