Commit | Line | Data |
---|---|---|
374887b4 PB |
1 | # Copyright (C) 1995 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 2 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, write to the Free Software | |
6c9638b4 | 15 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
374887b4 PB |
16 | |
17 | # Please email any bugs, comments, and/or additions to this file to: | |
18 | # bug-gdb@prep.ai.mit.edu | |
19 | ||
20 | # This file tests that gdb can call functions in a Chill inferior. | |
21 | ||
22 | if $tracelevel then { | |
23 | strace $tracelevel | |
24 | } | |
25 | ||
26 | proc do_tests {} { | |
27 | global prms_id bug_id subdir objdir srcdir binfile prompt | |
28 | ||
29 | set prms_id 0 | |
30 | set bug_id 0 | |
31 | ||
32 | # Start with a fresh gdb. | |
33 | ||
34 | gdb_exit | |
35 | gdb_start | |
36 | gdb_reinitialize_dir $srcdir/$subdir | |
37 | gdb_load $objdir/$subdir/$binfile | |
38 | ||
39 | send "set language chill\n" ; | |
40 | ||
41 | send "break callch.ch:48\n"; expect -re "$prompt $" | |
42 | send "run\n"; expect -re "Breakpoint .*callch.ch:48.*$prompt $" | |
43 | gdb_test {set fred(10, i)} {a is '10'; b is '12'.} | |
44 | gdb_test_exact "call klaus()" {here's klaus calling.} | |
45 | gdb_test_exact "call fred()" {too few arguments in function call} | |
46 | # Too many arguments are allowed | |
47 | gdb_test_exact "call klaus(10, 20, 30)" {here's klaus calling.} | |
a59f104e | 48 | gdb_test "print a" { = \[\(FALSE:TRUE\): \[\(FALSE:TRUE\): 1\]\]}\ |
374887b4 PB |
49 | "print a before king" |
50 | gdb_test {call king(a, otto[[10, 15], [20, 25]])} "x\\(FALSE, FALSE\\) = 10.*p\\(FALSE, FALSE\\) = -1.*x\\(FALSE, TRUE\\) = 15.*p\\(FALSE, TRUE\\) = -1.*x\\(TRUE, FALSE\\) = 20.*p\\(TRUE, FALSE\\) = -1.*x\\(TRUE, TRUE\\) = 25.*p\\(TRUE, TRUE\\) = -1.*" | |
a59f104e | 51 | gdb_test "print a" { = \[\(FALSE:TRUE\): \[\(FALSE:TRUE\): -1\]\]}\ |
374887b4 PB |
52 | "print a after king" |
53 | gdb_test_exact "call ralph(b)" {x.f1 = 10, x.f2 = FALSE.} | |
54 | gdb_test "call whitney(c)" "x.f1\\(FALSE, FALSE\\) = 1.*x.f1\\(FALSE, TRUE\\) = 1.*x.f1\\(TRUE, FALSE\\) = 1.*x.f1\\(TRUE, TRUE\\) = 1.*" | |
55 | } | |
56 | ||
57 | # Check to see if we have an executable to test. If not, then either we | |
58 | # haven't tried to compile one, or the compilation failed for some reason. | |
59 | # In either case, just notify the user and skip the tests in this file. | |
60 | ||
61 | set binfile "callch.exe" | |
62 | set srcfile $binfile.ch | |
63 | ||
5e8ade23 JK |
64 | if [skip_chill_tests] then { continue } |
65 | ||
374887b4 PB |
66 | if ![file exists $objdir/$subdir/$binfile] then { |
67 | warning "$binfile does not exist; tests suppressed." | |
68 | } else { | |
69 | do_tests | |
70 | } |