| Index: gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/foo.adb
|
| diff --git a/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/foo.adb b/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/foo.adb
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..60104d4d67f91cb5675a83dd679525a529f4350a
|
| --- /dev/null
|
| +++ b/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/foo.adb
|
| @@ -0,0 +1,51 @@
|
| +-- Copyright 2012-2013 Free Software Foundation, Inc.
|
| +--
|
| +-- This program is free software; you can redistribute it and/or modify
|
| +-- it under the terms of the GNU General Public License as published by
|
| +-- the Free Software Foundation; either version 3 of the License, or
|
| +-- (at your option) any later version.
|
| +--
|
| +-- This program is distributed in the hope that it will be useful,
|
| +-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| +-- GNU General Public License for more details.
|
| +--
|
| +-- You should have received a copy of the GNU General Public License
|
| +-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
| +
|
| +with Pck; use Pck;
|
| +
|
| +procedure Foo is
|
| +
|
| + type Table is array (Positive range <>) of Integer;
|
| + type Table_Access is access Table;
|
| +
|
| + type Object (N : Integer) is record
|
| + Ptr : Table_Access;
|
| + Data : Table (1 .. N);
|
| + end record;
|
| +
|
| + My_Object : Object := (N => 3, Ptr => null, Data => (3, 5, 8));
|
| +
|
| + -- Same as above, but with a pointer to an unconstrained packed array.
|
| +
|
| + type Byte is range 0 .. 255;
|
| +
|
| + type P_Table is array (Positive range <>) of Byte;
|
| + pragma Pack (P_Table);
|
| + type P_Table_Access is access P_Table;
|
| +
|
| + type P_Object (N : Integer) is record
|
| + Ptr : P_Table_Access;
|
| + Data : P_Table (1 .. N);
|
| + end record;
|
| +
|
| + My_P_Object : P_Object := (N => 3, Ptr => null, Data => (3, 5, 8));
|
| +
|
| +begin
|
| + My_Object.Ptr := new Table'(13, 21, 34); -- STOP1
|
| + My_P_Object.Ptr := new P_Table'(13, 21, 34);
|
| + Do_Nothing (My_Object'Address); -- STOP2
|
| + Do_Nothing (My_P_Object'Address);
|
| +end Foo;
|
| +
|
|
|