Index: array_return/pck.ads =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.ada/array_return/pck.ads,v retrieving revision 1.2 diff -u -p -r1.2 pck.ads --- array_return/pck.ads 6 Oct 2006 18:05:58 -0000 1.2 +++ array_return/pck.ads 26 Dec 2006 05:32:06 -0000 @@ -20,8 +20,11 @@ package Pck is type Data_Small is array (1 .. 2) of Integer; type Data_Large is array (1 .. 4) of Integer; + type Small_Float_Vector is array (1 .. 2) of Float; + function Create_Small return Data_Small; function Create_Large return Data_Large; + function Create_Small_Float_Vector return Small_Float_Vector; end Pck; Index: array_return/pck.adb =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.ada/array_return/pck.adb,v retrieving revision 1.2 diff -u -p -r1.2 pck.adb --- array_return/pck.adb 6 Oct 2006 18:05:58 -0000 1.2 +++ array_return/pck.adb 26 Dec 2006 05:32:06 -0000 @@ -27,4 +27,9 @@ package body Pck is return (others => 2); end Create_Large; + function Create_Small_Float_Vector return Small_Float_Vector is + begin + return (others => 4.25); + end Create_Small_Float_Vector; + end Pck; Index: array_return/p.adb =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.ada/array_return/p.adb,v retrieving revision 1.2 diff -u -p -r1.2 p.adb --- array_return/p.adb 6 Oct 2006 18:05:58 -0000 1.2 +++ array_return/p.adb 26 Dec 2006 05:32:06 -0000 @@ -20,8 +20,11 @@ with Pck; use Pck; procedure P is Small : Data_Small; Large : Data_Large; + Vector : Small_Float_Vector; begin Small := Create_Small; Large := Create_Large; + Vector := Create_Small_Float_Vector; Small (1) := Large (1); + Small (2) := Integer (Vector (1)); end P; Index: array_return.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.ada/array_return.exp,v retrieving revision 1.2 diff -u -p -r1.2 array_return.exp --- array_return.exp 7 Feb 2006 19:37:46 -0000 1.2 +++ array_return.exp 26 Dec 2006 05:32:06 -0000 @@ -54,12 +54,16 @@ gdb_test "break create_large" \ "Breakpoint \[0-9\]+ at.*: file .*pck.adb, line \[0-9\]+." \ "insert breakpoint in create_large" +gdb_test "break create_small_float_vector" \ + "Breakpoint \[0-9\]+ at.*: file .*pck.adb, line \[0-9\]+." \ + "insert breakpoint in create_small_float_vector" + # Then continue until reaching the first breakpoint inside Create_Small, # and then do a "finish". gdb_test "cont" \ "Breakpoint \[0-9\]+, pck.create_small \\(\\).*" \ - "Continuing to Create.Small" + "Continuing to Create_Small" gdb_test "finish" \ "Value returned is \\\$\[0-9\]+ = \\(1, 1\\)" \ @@ -70,7 +74,7 @@ gdb_test "finish" \ gdb_test "cont" \ "Breakpoint \[0-9\]+, pck.create_large \\(\\).*" \ - "Continuing to Create.Large" + "Continuing to Create_Large" # On hppa32, the value returned is too large to be returned via a register. # Instead, it is returned using the struct convention, and the debugger @@ -84,3 +88,14 @@ gdb_test "finish" \ "Value returned is \\\$\[0-9\]+ = \\(2, 2, 2, 2\\)" \ "value printed by finish of Create_Large" +# Now continue until reaching the third breakpoint, and then do another +# "finish" again. + +gdb_test "cont" \ + "Breakpoint \[0-9\]+, pck.create_small_float_vector \\(\\).*" \ + "Continuing to Create_Small_Float_Vector" + +gdb_test "finish" \ + "Value returned is \\\$\[0-9\]+ = \\(4.25, 4.25\\)" \ + "value printed by finish of Create_Small_Float_Vector" +