[Ada] Fix unconstrained packed array size
authorJoel Brobecker <brobecker@gnat.com>
Thu, 17 Feb 2011 06:42:57 +0000 (06:42 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Thu, 17 Feb 2011 06:42:57 +0000 (06:42 +0000)
commite67ad678a1e75d69343e4270305c3bf390922362
treede842fb23809a9fb5cd399a571e1bc71dd972a9b
parent93084bcabb5f23c509734a202f5a45201b723657
[Ada] Fix unconstrained packed array size

When ada-lang transforms an array descriptor type (an XUP structure)
into an array type, the size of the array type is computed by using
the element size, and multiplying it by the number of elements in
that array. This does not work, however, for packed arrays, where
the *packed* size in bits needs to be used.

This usually does not cause any problem, because we end up reading
more memory than needed.  However, we have observed on LynxOS
a memory error while trying to read the entire array, because
the larger-than-needed read tried to read past the end of the stack
into inaccessible memory.

This patch fixes the problem by correctly computing the array size
in bytes in the case of packed arrays.

gdb/ChangeLog:

        * ada-lang.c (ada_type_of_array): Fix the size of the array
        in the case of an unconstrained packed array.

gdb/testsuite/ChangeLog:

        * gdb.ada/packed_array: Expand testcase to test printing of
        unconstrained packed array.
gdb/ChangeLog
gdb/ada-lang.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.ada/packed_array.exp
gdb/testsuite/gdb.ada/packed_array/pa.adb
gdb/testsuite/gdb.ada/packed_array/pck.adb [new file with mode: 0644]
gdb/testsuite/gdb.ada/packed_array/pck.ads [new file with mode: 0644]