diff options
author | Tom Tromey <tromey@adacore.com> | 2019-04-26 10:57:52 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2019-05-01 08:09:22 -0600 |
commit | d48e62f4a263a871b7a62793e8000625735bc2f6 (patch) | |
tree | d5e30d500bccde97f8d27793cd6d3fe0d77e83f4 /gdb/testsuite/gdb.ada | |
parent | 25a0274483cb00c27945b0337005be4f169ff09f (diff) | |
download | binutils-gdb-d48e62f4a263a871b7a62793e8000625735bc2f6.tar.gz |
Fix big-endian aggregate assignment in Ada
A bug internal to AdaCore notes that assigning a non-scalar value to
an element of a packed array will sometimes fail.
The bug turns out to be that ada_value_assign incorrectly computes the
starting point for the assignment. This patch fixes the problem.
gdb/ChangeLog
2019-05-01 Tom Tromey <tromey@adacore.com>
* ada-lang.c (ada_value_assign): Correctly compute starting offset
for big-endian copies.
gdb/testsuite/ChangeLog
2019-05-01 Tom Tromey <tromey@adacore.com>
* gdb.ada/packed_array_assign.exp: Add packed assignment
regression test.
Diffstat (limited to 'gdb/testsuite/gdb.ada')
-rw-r--r-- | gdb/testsuite/gdb.ada/packed_array_assign.exp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.ada/packed_array_assign.exp b/gdb/testsuite/gdb.ada/packed_array_assign.exp index 93910ac6cb4..8ed2d63ecf3 100644 --- a/gdb/testsuite/gdb.ada/packed_array_assign.exp +++ b/gdb/testsuite/gdb.ada/packed_array_assign.exp @@ -28,3 +28,8 @@ runto "aggregates.run_test" gdb_test \ "print pra := ((packed_array_assign_x => 2, packed_array_assign_y => 0, packed_array_assign_w => 17), pr, (packed_array_assign_x => 7, packed_array_assign_y => 1, packed_array_assign_w => 23))" \ " = \\(\\(packed_array_assign_w => 17, packed_array_assign_x => 2, packed_array_assign_y => 0\\), \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\), \\(packed_array_assign_w => 23, packed_array_assign_x => 7, packed_array_assign_y => 1\\)\\)" + +gdb_test "print pra(1) := pr" \ + " = \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\)" +gdb_test "print pra(1)" \ + " = \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\)" |