Skip to content

Commit a7d5fca

Browse files
committed
Add test case for "finish" with variably-sized types
This adds a test case for "finish" with variably-sized types, and for inferior calls as well. This also extends the "runto" proc to handle temporary breakpoints.
1 parent 3360bae commit a7d5fca

File tree

5 files changed

+123
-2
lines changed

5 files changed

+123
-2
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Copyright 2022 Free Software Foundation, Inc.
2+
#
3+
# This program is free software; you can redistribute it and/or modify
4+
# it under the terms of the GNU General Public License as published by
5+
# the Free Software Foundation; either version 3 of the License, or
6+
# (at your option) any later version.
7+
#
8+
# This program is distributed in the hope that it will be useful,
9+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
# GNU General Public License for more details.
12+
#
13+
# You should have received a copy of the GNU General Public License
14+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
16+
load_lib "ada.exp"
17+
18+
if { [skip_ada_tests] } { return -1 }
19+
20+
# GCC 12 has the needed fix.
21+
if {![test_compiler_info {gcc-1[2-9]-*}]} {
22+
untested "GCC too told for this test"
23+
return -1
24+
}
25+
26+
standard_ada_testfile p
27+
28+
if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != ""} {
29+
return -1
30+
}
31+
32+
clean_restart ${testfile}
33+
runto "pck.get" temporary
34+
35+
set value [string_to_regexp "= (defined => true, payload => true)"]
36+
37+
# With some ABIs the return value cannot be determined. Accept this,
38+
# or the correct result.
39+
gdb_test "finish" \
40+
"Value returned .*($value|Cannot determine contents)"
41+
42+
# Test that an inferior call yields the correct result.
43+
gdb_test "print pck.get(True)" $value
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-- Copyright 2022 Free Software Foundation, Inc.
2+
--
3+
-- This program is free software; you can redistribute it and/or modify
4+
-- it under the terms of the GNU General Public License as published by
5+
-- the Free Software Foundation; either version 3 of the License, or
6+
-- (at your option) any later version.
7+
--
8+
-- This program is distributed in the hope that it will be useful,
9+
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
-- GNU General Public License for more details.
12+
--
13+
-- You should have received a copy of the GNU General Public License
14+
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
16+
with Pck; use Pck;
17+
procedure P is
18+
V : Result_T := Get (True);
19+
begin
20+
null;
21+
end P;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-- Copyright 2022 Free Software Foundation, Inc.
2+
--
3+
-- This program is free software; you can redistribute it and/or modify
4+
-- it under the terms of the GNU General Public License as published by
5+
-- the Free Software Foundation; either version 3 of the License, or
6+
-- (at your option) any later version.
7+
--
8+
-- This program is distributed in the hope that it will be useful,
9+
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
-- GNU General Public License for more details.
12+
--
13+
-- You should have received a copy of the GNU General Public License
14+
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
16+
package body Pck is
17+
function Get (Value: Boolean) return Result_T is
18+
begin
19+
return (Defined => True, Payload => Value);
20+
end Get;
21+
end Pck;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
-- Copyright 2022 Free Software Foundation, Inc.
2+
--
3+
-- This program is free software; you can redistribute it and/or modify
4+
-- it under the terms of the GNU General Public License as published by
5+
-- the Free Software Foundation; either version 3 of the License, or
6+
-- (at your option) any later version.
7+
--
8+
-- This program is distributed in the hope that it will be useful,
9+
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
-- GNU General Public License for more details.
12+
--
13+
-- You should have received a copy of the GNU General Public License
14+
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
16+
package Pck is
17+
type Array_Type is array (1 .. 64) of Integer;
18+
19+
type Maybe_Array (Defined : Boolean := False) is
20+
record
21+
Arr : Array_Type;
22+
Arr2 : Array_Type;
23+
end record;
24+
25+
type Result_T (Defined : Boolean := False) is
26+
record
27+
case Defined is
28+
when False =>
29+
Arr : Maybe_Array;
30+
when True =>
31+
Payload : Boolean;
32+
end case;
33+
end record;
34+
35+
function Get (Value: Boolean) return Result_T;
36+
end Pck;

gdb/testsuite/lib/gdb.exp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -743,13 +743,13 @@ proc runto { linespec args } {
743743
# the "at foo.c:36" output we get with -g.
744744
# the "in func" output we get without -g.
745745
gdb_expect 30 {
746-
-re "Break.* at .*:$decimal.*$gdb_prompt $" {
746+
-re "(?:Break|Temporary break).* at .*:$decimal.*$gdb_prompt $" {
747747
if { $print_pass } {
748748
pass $test_name
749749
}
750750
return 1
751751
}
752-
-re "Breakpoint $bkptno_numopt_re, \[0-9xa-f\]* in .*$gdb_prompt $" {
752+
-re "(?:Breakpoint|Temporary breakpoint) $bkptno_numopt_re, \[0-9xa-f\]* in .*$gdb_prompt $" {
753753
if { $print_pass } {
754754
pass $test_name
755755
}

0 commit comments

Comments
 (0)