OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /or1k/trunk/gdb-5.0/gdb/testsuite/gdb.chill
    from Rev 107 to Rev 1765
    Reverse comparison

Rev 107 → Rev 1765

/pr-5984.ch
0,0 → 1,8
x: module -- line 1
p:proc (t char (20) varying); -- 2
writetext(stdout, t); -- 3
end p; -- 4
-- 5
p("Jason Dark.%/"); -- 6
p("Hello World.%/"); -- 7
end x;
/Makefile.in
0,0 → 1,26
srcdir = @srcdir@
VPATH = @srcdir@
 
all:
@echo "Nothing to be done for all..."
 
#### host, target, and site specific Makefile frags come in here.
 
.SUFFIXES: .ch .o .exe .exp .check
 
# Do 'make chillvars.check' to run just the chillvars.{ch,exp} test.
 
.exp.check:
rootme=`pwd`/; export rootme; \
cd .. ; \
$(MAKE) just-check RUNTESTFLAGS="${RUNTESTFLAGS} $*.exp" \
EXPECT=${EXPECT}
 
clean mostlyclean:
-rm -f *.o ${OBJS} *.exe *~ core
 
distclean maintainer-clean realclean: clean
-rm -f Makefile config.status config.log
 
Makefile: $(srcdir)/Makefile.in $(srcdir)/configure.in
$(SHELL) ./config.status --recheck
/builtins.exp
0,0 → 1,441
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file tests various Chill values, expressions, and types.
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "builtins"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
# Set the current language to chill. This counts as a test. If it
# fails, then we skip the other tests.
 
proc set_lang_chill {} {
global gdb_prompt
global binfile objdir subdir
 
verbose "loading file '$binfile'"
gdb_load $binfile
send_gdb "set language chill\n"
gdb_expect {
-re ".*$gdb_prompt $" {}
timeout { fail "set language chill (timeout)" ; return 0 }
}
 
send_gdb "show language\n"
gdb_expect {
-re ".* source language is \"chill\".*$gdb_prompt $" {
pass "set language to \"chill\""
send_gdb "break xx_\n"
gdb_expect {
-re ".*$gdb_prompt $" {
send_gdb "run\n"
gdb_expect -re ".*$gdb_prompt $" {}
return 1
}
timeout {
fail "can't set breakpoint (timeout)"
return 0
}
}
}
-re ".*$gdb_prompt $" {
fail "setting language to \"chill\""
return 0
}
timeout {
fail "can't show language (timeout)"
return 0
}
}
}
 
# Testing printing of a specific value. Increment passcount for
# success or issue fail message for failure. In both cases, return
# a 1 to indicate that more tests can proceed. However a timeout
# is a serious error, generates a special fail message, and causes
# a 0 to be returned to indicate that more tests are likely to fail
# as well.
#
# Args are:
#
# First one is string to send_gdb to gdb
# Second one is string to match gdb result to
# Third one is an optional message to be printed
 
proc test_print_accept { args } {
global gdb_prompt
global passcount
global verbose
 
if [llength $args]==3 then {
set message [lindex $args 2]
} else {
set message [lindex $args 0]
}
set sendthis [lindex $args 0]
set expectthis [lindex $args 1]
set result [gdb_test $sendthis ".* = ${expectthis}" $message]
if $result==0 {incr passcount}
return $result
}
 
proc test_lower {} {
global passcount
 
verbose "testing builtin LOWER"
set passcount 0
 
# discrete mode names
test_print_accept "print lower(bool)" "FALSE"
test_print_accept "print lower(char)" {'\^[(]0[)]'}
test_print_accept "print lower(byte)" "-128"
test_print_accept "print lower(ubyte)" "0"
if [istarget "alpha-*-*"] then {
test_print_accept "print lower(int)" "-2147483648"
} else {
test_print_accept "print lower(int)" "-32768"
}
test_print_accept "print lower(uint)" "0"
setup_xfail "alpha-*-*"
test_print_accept "print lower(long)" "-2147483648"
test_print_accept "print lower(ulong)" "0"
test_print_accept "print lower(m_set)" "e1"
test_print_accept "print lower(m_set_range)" "e2"
test_print_accept "print lower(m_numbered_set)" "n2"
test_print_accept "print lower(m_char_range)" "'A'"
test_print_accept "print lower(m_bool_range)" "FALSE"
test_print_accept "print lower(m_long_range)" "255"
test_print_accept "print lower(m_range)" "12"
 
# discrete locations
test_print_accept "print lower(v_bool)" "FALSE"
test_print_accept "print lower(v_char)" {'\^[(]0[)]'}
test_print_accept "print lower(v_byte)" "-128"
test_print_accept "print lower(v_ubyte)" "0"
if [istarget "alpha-*-*"] then {
test_print_accept "print lower(v_int)" "-2147483648"
} else {
test_print_accept "print lower(v_int)" "-32768"
}
test_print_accept "print lower(v_uint)" "0"
setup_xfail "alpha-*-*"
test_print_accept "print lower(v_long)" "-2147483648"
test_print_accept "print lower(v_ulong)" "0"
test_print_accept "print lower(v_set)" "e1"
test_print_accept "print lower(v_set_range)" "e2"
test_print_accept "print lower(v_numbered_set)" "n2"
test_print_accept "print lower(v_char_range)" "'A'"
test_print_accept "print lower(v_bool_range)" "FALSE"
test_print_accept "print lower(v_long_range)" "255"
test_print_accept "print lower(v_range)" "12"
 
# string mode names
test_print_accept "print lower(m_chars)" "0"
test_print_accept "print lower(m_chars_v)" "0"
test_print_accept "print lower(m_bits)" "0"
 
# string locations
test_print_accept "print lower(v_chars)" "0"
test_print_accept "print lower(v_chars_v)" "0"
test_print_accept "print lower(v_bits)" "0"
 
# string expressions
test_print_accept "print lower(\"abcd\")" "0"
test_print_accept "print lower(B'010101')" "0"
 
# array mode name
test_print_accept "print lower(m_arr)" "1";
test_print_accept "print lower(m_char_arr)" {'\^[(]0[)]'}
test_print_accept "print lower(m_bool_arr)" "FALSE"
if [istarget "alpha-*-*"] then {
test_print_accept "print lower(m_int_arr)" "-2147483648"
} else {
test_print_accept "print lower(m_int_arr)" "-32768"
}
test_print_accept "print lower(m_set_arr)" "e1"
test_print_accept "print lower(m_set_range_arr)" "e2"
test_print_accept "print lower(m_numbered_set_arr)" "n2"
test_print_accept "print lower(m_char_range_arr)" "'A'"
test_print_accept "print lower(m_bool_range_arr)" "FALSE"
test_print_accept "print lower(m_long_range_arr)" "255"
test_print_accept "print lower(m_range_arr)" "12"
 
# array locations
test_print_accept "print lower(v_arr)" "1";
test_print_accept "print lower(v_char_arr)" {'\^[(]0[)]'}
test_print_accept "print lower(v_bool_arr)" "FALSE"
if [istarget "alpha-*-*"] then {
test_print_accept "print lower(v_int_arr)" "-2147483648"
} else {
test_print_accept "print lower(v_int_arr)" "-32768"
}
test_print_accept "print lower(v_set_arr)" "e1"
test_print_accept "print lower(v_set_range_arr)" "e2"
test_print_accept "print lower(v_numbered_set_arr)" "n2"
test_print_accept "print lower(v_char_range_arr)" "'A'"
test_print_accept "print lower(v_bool_range_arr)" "FALSE"
test_print_accept "print lower(v_long_range_arr)" "255"
test_print_accept "print lower(v_range_arr)" "12"
}
 
proc test_upper {} {
global passcount
 
verbose "testing builtin UPPER"
set passcount 0
 
# discrete mode names
test_print_accept "print upper(bool)" "TRUE"
test_print_accept "print upper(char)" {'\^[(]255[)]'}
test_print_accept "print upper(byte)" "127"
test_print_accept "print upper(ubyte)" "255"
if [istarget "alpha-*-*"] then {
test_print_accept "print upper(int)" "2147483647"
test_print_accept "print upper(uint)" "4294967295"
setup_xfail "alpha-*-*"
test_print_accept "print upper(long)" "4294967295"
test_print_accept "print upper(ulong)" "18446744073709551615"
} else {
test_print_accept "print upper(int)" "32767"
test_print_accept "print upper(uint)" "65535"
test_print_accept "print upper(long)" "2147483647"
test_print_accept "print upper(ulong)" "4294967295"
}
test_print_accept "print upper(m_set)" "e6"
test_print_accept "print upper(m_set_range)" "e5"
test_print_accept "print upper(m_numbered_set)" "n5"
test_print_accept "print upper(m_char_range)" "'Z'"
test_print_accept "print upper(m_bool_range)" "FALSE"
test_print_accept "print upper(m_long_range)" "3211"
test_print_accept "print upper(m_range)" "28"
 
# discrete locations
test_print_accept "print upper(v_bool)" "TRUE"
test_print_accept "print upper(v_char)" {'\^[(]255[)]'}
test_print_accept "print upper(v_byte)" "127"
test_print_accept "print upper(v_ubyte)" "255"
if [istarget "alpha-*-*"] then {
test_print_accept "print upper(v_int)" "2147483647"
test_print_accept "print upper(v_uint)" "4294967295"
setup_xfail "alpha-*-*"
test_print_accept "print upper(v_long)" "4294967295"
test_print_accept "print upper(v_ulong)" "18446744073709551615"
} else {
test_print_accept "print upper(v_int)" "32767"
test_print_accept "print upper(v_uint)" "65535"
test_print_accept "print upper(v_long)" "2147483647"
test_print_accept "print upper(v_ulong)" "4294967295"
}
test_print_accept "print upper(v_set)" "e6"
test_print_accept "print upper(v_set_range)" "e5"
test_print_accept "print upper(v_numbered_set)" "n5"
test_print_accept "print upper(v_char_range)" "'Z'"
test_print_accept "print upper(v_bool_range)" "FALSE"
test_print_accept "print upper(v_long_range)" "3211"
test_print_accept "print upper(v_range)" "28"
 
# string mode names
test_print_accept "print upper(m_chars)" "19"
test_print_accept "print upper(m_chars_v)" "19"
test_print_accept "print upper(m_bits)" "9"
 
# string locations
test_print_accept "print upper(v_chars)" "19"
test_print_accept "print upper(v_chars_v)" "19"
test_print_accept "print upper(v_bits)" "9"
 
# string expressions
test_print_accept "print upper(\"abcd\")" "3"
test_print_accept "print upper(B'010101')" "5"
 
# array mode name
test_print_accept "print upper(m_arr)" "10";
test_print_accept "print upper(m_char_arr)" {'\^[(]255[)]'}
test_print_accept "print upper(m_bool_arr)" "TRUE"
if [istarget "alpha-*-*"] then {
test_print_accept "print upper(m_int_arr)" "2147483647"
} else {
test_print_accept "print upper(m_int_arr)" "32767"
}
test_print_accept "print upper(m_set_arr)" "e6"
test_print_accept "print upper(m_set_range_arr)" "e5"
test_print_accept "print upper(m_numbered_set_arr)" "n5"
test_print_accept "print upper(m_char_range_arr)" "'Z'"
test_print_accept "print upper(m_bool_range_arr)" "FALSE"
test_print_accept "print upper(m_long_range_arr)" "3211"
test_print_accept "print upper(m_range_arr)" "28"
 
# array locations
test_print_accept "print upper(v_arr)" "10";
test_print_accept "print upper(v_char_arr)" {'\^[(]255[)]'}
test_print_accept "print upper(v_bool_arr)" "TRUE"
if [istarget "alpha-*-*"] then {
test_print_accept "print upper(v_int_arr)" "2147483647"
} else {
test_print_accept "print upper(v_int_arr)" "32767"
}
test_print_accept "print upper(v_set_arr)" "e6"
test_print_accept "print upper(v_set_range_arr)" "e5"
test_print_accept "print upper(v_numbered_set_arr)" "n5"
test_print_accept "print upper(v_char_range_arr)" "'Z'"
test_print_accept "print upper(v_bool_range_arr)" "FALSE"
test_print_accept "print upper(v_long_range_arr)" "3211"
test_print_accept "print upper(v_range_arr)" "28"
}
 
proc test_length {} {
global passcount
 
verbose "testing builtin LENGTH"
set passcount 0
 
# string locations
test_print_accept "print length(v_chars)" "20"
test_print_accept "print length(v_chars_v)" "7";
test_print_accept "print length(v_bits)" "10";
 
# string expressions
test_print_accept "print length(\"the quick brown fox ...\")" "23"
test_print_accept "print length(B'010101010101')" "12"
test_print_accept "print length(\"foo \" // \"bar\")" "7"
 
# check some failures
setup_xfail "*-*-*"
test_print_accept "print length(m_chars)" "typename in invalid context"
setup_xfail "*-*-*"
test_print_accept "print length(v_byte)" "bad argument to LENGTH builtin"
setup_xfail "*-*-*"
test_print_accept "print length(b'000000' // b'111111')" "12"
}
 
proc test_size {} {
global passcount
 
verbose "testing builtin SIZE"
set passcount 0
 
# modes
test_print_accept "print size(bool)" "1"
test_print_accept "print size(char)" "1"
test_print_accept "print size(byte)" "1"
if [istarget "alpha-*-*"] then {
test_print_accept "print size(int)" "4"
test_print_accept "print size(ulong)" "8"
test_print_accept "print size(ptr)" "8"
test_print_accept "print size(m_chars_v)" "24"
test_print_accept "print size(m_struct)" "40"
} else {
test_print_accept "print size(int)" "2"
test_print_accept "print size(ulong)" "4"
test_print_accept "print size(ptr)" "4"
test_print_accept "print size(m_chars_v)" "22"
test_print_accept "print size(m_struct)" "36"
}
test_print_accept "print size(m_set)" "1"
test_print_accept "print size(m_numbered_set)" "1"
test_print_accept "print size(m_char_range)" "1"
test_print_accept "print size(m_range_arr)" "17"
test_print_accept "print size(m_chars)" "20"
test_print_accept "print size(m_bits)" "2"
 
# locations
test_print_accept "print size(v_bool)" "1"
test_print_accept "print size(v_char)" "1"
test_print_accept "print size(v_byte)" "1"
if [istarget "alpha-*-*"] then {
test_print_accept "print size(v_int)" "4"
test_print_accept "print size(v_ulong)" "8"
test_print_accept "print size(v_ptr)" "8"
test_print_accept "print size(v_chars_v)" "24"
test_print_accept "print size(v_struct)" "40"
} else {
test_print_accept "print size(v_int)" "2"
test_print_accept "print size(v_ulong)" "4"
test_print_accept "print size(v_ptr)" "4"
test_print_accept "print size(v_chars_v)" "22"
test_print_accept "print size(v_struct)" "36"
}
test_print_accept "print size(v_set)" "1"
test_print_accept "print size(v_numbered_set)" "1"
test_print_accept "print size(v_char_range)" "1"
test_print_accept "print size(v_range_arr)" "17"
test_print_accept "print size(v_chars)" "20"
test_print_accept "print size(v_bits)" "2"
}
 
proc test_num {} {
global passcount
 
verbose "testing builtin NUM"
set passcount 0
 
# constants
test_print_accept "print num(false)" "0"
test_print_accept "print num(true)" "1"
test_print_accept "print num(10)" "10"
test_print_accept "print num(33-34)" "-1"
test_print_accept "print num('X')" "88"
test_print_accept "print num(e5)" "4"
 
# locations
test_print_accept "print num(v_bool)" "0"
test_print_accept "print num(v_char)" "88"
test_print_accept "print num(v_byte)" "-30"
test_print_accept "print num(v_ubyte)" "30"
test_print_accept "print num(v_int)" "-333"
test_print_accept "print num(v_uint)" "333"
test_print_accept "print num(v_long)" "-4444"
test_print_accept "print num(v_ulong)" "4444"
test_print_accept "print num(v_set)" "2"
test_print_accept "print num(v_set_range)" "2"
test_print_accept "print num(v_numbered_set)" "35"
test_print_accept "print num(v_char_range)" "71"
test_print_accept "print num(v_long_range)" "1000"
test_print_accept "print num(v_range)" "23"
}
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
 
gdb_test "set print sevenbit-strings" ".*"
 
if [set_lang_chill] then {
# test builtins as described in chapter 6.20.3 Z.200
test_num
test_size
test_lower
test_upper
test_length
} else {
warning "$test_name tests suppressed."
}
/misc.ch
0,0 → 1,12
misc_tests : MODULE;
 
DCL otto INT := 42;
 
DCL foo STRUCT (l LONG, c CHAR, b BOOL, s CHARS(3));
 
dummyfunc: PROC();
END dummyfunc;
 
dummyfunc();
 
END misc_tests;
/pr-5022.ch
0,0 → 1,12
PR_5022: MODULE
dummy_pr_5022: PROC ();
END;
DCL p PTR;
DCL i INT;
 
p := NULL;
dummy_pr_5022 ();
i := 13;
p := ->i;
dummy_pr_5022 ();
END;
/pr-5016.ch
0,0 → 1,24
vector: MODULE
 
SYNMODE m_index = RANGE(1:10);
NEWMODE vector = ARRAY (m_index) INT;
 
DCL a, b, c vector;
 
dump: PROC( a vector LOC, c CHAR );
DCL i m_index := 5;
DO FOR i IN m_index;
WRITETEXT( STDOUT, "%C(%C)=%C ", c, i, a(i) );
OD;
WRITETEXT( STDOUT, "%/" );
END dump;
 
a := vector [ 1, -1, 2, -2, 3, -3, 4, -4, 5, -5 ];
b := a;
b(4) := 4;
b(7) := 7;
c := vector [(*): 0];
 
dump(a,'a');
 
END vector;
/pr-5016.exp
0,0 → 1,62
# Copyright (C) 1992, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "pr-5016"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
runto dump
# Linux thinks type is "_cint" (and so does sparc-sun-sunos4, alpha-dec-osf2.0)
#setup_xfail "i*86-pc-linux*-gnu" "sparc-sun-sunos4*" "alpha-dec-osf2*"
gdb_test "whatis i" "type = m_index" "whatis int-range"
gdb_test_exact "ptype m_index" "type = RANGE (1:10)" "ptype m_index"
gdb_test_exact "whatis a" "type = /*LOC*/ vector"
gdb_test "ptype a" "type = /\\*LOC\\*/ ARRAY \\(1:10\\) (INT|int)"
gdb_test "step" ""
gdb_test_exact "whatis i" "type = long" "whatis loop counter i"
}
 
do_tests
/xstruct.ch
0,0 → 1,16
pottendo: MODULE
 
<> USE_SEIZE_FILE "xstruct-grt.grt" <>
SEIZE m_array3;
SEIZE m_array4;
 
SYNMODE m_x = STRUCT (i long,
ar m_array3);
SYNMODE m_y = STRUCT (i long,
ar m_array4);
 
DCL x LONG;
 
x := 10;
 
END pottendo;
/pr-6632.ch
0,0 → 1,31
markus: MODULE
 
<> USE_SEIZE_FILE "pr-6632-grt.grt" <>
SEIZE m_dummy, m_dummy_range;
 
DCL v m_dummy_range;
 
NEWMODE is_str_descr = STRUCT (p PTR,
l INT,
flag STRUCT (x UBYTE,
y SET (aa, bb, cc, dd, ee, ff)));
DCL des is_str_descr;
 
NEWMODE is_cb_debug = STRUCT (i INT,
channel m_dummy_range,
p PTR);
NEWMODE is_cb_debug_array = ARRAY (0:20) is_cb_debug;
DCL cb_debug is_cb_debug_array;
DCL cb_debug_index INT := 0;
 
p: PROC (pp is_str_descr IN, x m_dummy_range IN)
DO WITH cb_debug(cb_debug_index);
channel := x;
OD;
END p;
 
p (des, dummy_10);
WRITETEXT (stdout, "cb_debug(%C).channel := %C%/",
cb_debug_index, cb_debug(cb_debug_index).channel);
 
END markus;
/pr-8405.exp
0,0 → 1,61
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_load $binfile
 
gdb_test "set language chill" ""
gdb_test "set var \$i:=xx" ""
gdb_test "print \$i" {= \[.c: "", .b: B'00000000', .boo: FALSE\]}
}
 
if [skip_chill_tests] then { continue }
 
# Check to see if we have an executable to test. If not, then either we
# haven't tried to compile one, or the compilation failed for some reason.
# In either case, just notify the user and skip the tests in this file.
 
set testfile "pr-8405"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
if ![file exists $binfile] then {
warning "$binfile does not exist; tests suppressed." 0
} else {
do_tests
}
/pr-6292.ch
0,0 → 1,17
hack : module
 
dcl i int;
 
fred : proc (a int in, b int loc);
writetext(stdout, "a was '%C'; b was '%C'.%/", a, b);
b + := 1;
end fred;
 
klaus : proc ();
writetext(stdout, "here's klaus calling.%/");
end klaus;
 
i:=12;
writetext(stdout, "done.%/");
 
end hack;
/tests2.ch
0,0 → 1,193
-- Copyright (C) 1992 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 2 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, write to the Free Software
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-- Please email any bugs, comments, and/or additions to this file to:
-- bug-gdb@prep.ai.mit.edu
 
--
-- test program 2 (refer to tests2.exp)
--
 
tests2: module;
 
-- testpattern
syn pat1 ulong = H'aaaaaaaa;
syn pat2 ulong = H'55555555;
 
-- discrete modes
newmode bytem = struct (
p1 ulong,
m byte,
p2 ulong);
newmode ubytem = struct (
p1 ulong,
m ubyte,
p2 ulong);
newmode intm = struct (
p1 ulong,
m int,
p2 ulong);
newmode uintm = struct (
p1 ulong,
m uint,
p2 ulong);
newmode longm = struct (
p1 ulong,
m long,
p2 ulong);
newmode ulongm = struct (
p1 ulong,
m ulong,
p2 ulong);
newmode boolm = struct (
p1 ulong,
m bool,
p2 ulong);
newmode charm1 = struct (
p1 ulong,
m char(4),
p2 ulong);
newmode charm2 = struct (
p1 ulong,
m char(7),
p2 ulong);
newmode charm3 = struct (
p1 ulong,
m char(8) varying,
p2 ulong);
newmode charm4 = struct (
p1 ulong,
m char,
p2 ulong);
newmode bitm1 = struct (
p1 ulong,
m bit(8),
p2 ulong);
newmode bitm2 = struct (
p1 ulong,
m bit(10),
p2 ulong);
newmode setm1 = struct (
p1 ulong,
m set (a, b, c, d, e, f, g, h),
p2 ulong);
newmode nset1 = struct (
p1 ulong,
m set (na = 2147483648, nb = 1024, nc = 4294967295),
p2 ulong);
newmode rm1 = struct (
p1 ulong,
m range (lower(byte):upper(byte)),
p2 ulong);
newmode rm2 = struct (
p1 ulong,
m range (lower(int):upper(int)),
p2 ulong);
newmode rm3 = struct (
p1 ulong,
m range (lower(long):upper(long)),
p2 ulong);
newmode pm1 = struct (
p1 ulong,
m powerset set (pa, pb, pc, pd, pe, pf, pg, ph),
p2 ulong);
newmode pm2 = struct (
p1 ulong,
m powerset int (1:32),
p2 ulong);
-- this should be rejected by the gnuchill compiler !
newmode pm3 = struct (
p1 ulong,
-- m powerset long (lower(long): upper(long)),
p2 ulong);
newmode refm1 = struct (
p1 ulong,
m ptr,
p2 ulong);
newmode refm2 = struct (
p1 ulong,
m ref bytem,
p2 ulong);
newmode prm1 = struct (
p1 ulong,
m proc (),
p2 ulong);
newmode tim1 = struct (
p1 ulong,
m time,
p2 ulong);
newmode tim2 = struct (
p1 ulong,
m duration,
p2 ulong);
newmode rem1 = struct (
p1 ulong,
m real,
p2 ulong);
newmode rem2 = struct (
p1 ulong,
m long_real,
p2 ulong);
newmode arrm1 = struct (
p1 ulong,
m array(1:3, 1:2) int,
p2 ulong);
newmode strum1 = struct (
p1 ulong,
m struct (a, b int, ch char(4)),
p2 ulong);
 
 
-- dummyfunction for breakpoints
dummyfunc: proc();
end dummyfunc;
 
 
dcl b1 bytem init := [pat1, -128, pat2];
dcl ub1 ubytem init := [pat1, 0, pat2];
dcl i1 intm init := [pat1, -32768, pat2];
dcl ui1 uintm init := [pat1, 0, pat2];
dcl l1 longm init := [pat1, -2147483648, pat2];
dcl ul1 ulongm init := [pat1, 0, pat2];
dcl bo1 boolm init := [pat1, true, pat2];
dcl c1 charm1 init := [pat1, "1234", pat2];
dcl c2 charm2 init := [pat1, "1234567", pat2];
dcl c3 charm3 init := [pat1, "12345678", pat2];
dcl c4 charm4 init := [pat1, C'00', pat2];
dcl bi1 bitm1 init := [pat1, B'01011010', pat2];
dcl bi2 bitm2 init := [pat1, B'1010110101', pat2];
dcl se1 setm1 init := [pat1, a, pat2];
dcl nse1 nset1 init := [pat1, na, pat2];
dcl r1 rm1 init := [pat1, -128, pat2];
dcl r2 rm2 init := [pat1, -32768, pat2];
dcl r3 rm3 init := [pat1, -2147483648, pat2];
dcl p1 pm1 init := [pat1, [pa], pat2];
dcl p2 pm2 init := [pat1, [1], pat2];
-- dcl p3 pm3 init := [pat1, [-1], pat2]; -- FIXME: bug in gnuchill
dcl ref1 refm1 init := [pat1, null, pat2];
dcl ref2 refm2 init := [pat1, null, pat2];
dcl pr1 prm1;
dcl ti1 tim1 init := [pat1, 0, pat2];
dcl ti2 tim2 init := [pat1, 0, pat2];
dcl re1 rem1 init := [pat1, 0.0, pat2];
dcl re2 rem2 init := [pat1, 0.0, pat2];
dcl arrl1 arrm1 init:=[pat1, [(1:3): [0,0]], pat2];
dcl strul1 strum1 init := [pat1, [.a: 0, .b: 0, .ch: "0000"], pat2];
 
pr1 := [pat1, dummyfunc, pat2];
dummyfunc();
 
end tests2;
/callch.ch
0,0 → 1,50
hack : module
 
dcl i int;
newmode otto = array (bool, bool) byte;
newmode str1 = struct (f1 int, f2 bool);
newmode str2 = struct (f1 otto);
 
dcl a otto := [[1,1],[1,1]];
dcl b str1 := [10, false];
dcl c str2;
 
fred : proc (a int in, b int loc);
writetext(stdout, "a is '%C'; b is '%C'.%/", a, b);
end fred;
 
klaus : proc ();
writetext(stdout, "here's klaus calling.%/");
end klaus;
 
king : proc (p otto loc, x otto in);
dcl i, j bool;
p := [[h'ff,h'ff],[h'ff,h'ff]];
do for i:= lower(bool) to upper(bool);
do for j:= lower(bool) to upper(bool);
writetext(stdout, "x(%C, %C) = %C%..%/", i, j, x(i, j));
writetext(stdout, "p(%C, %C) = %C%..%/", i, j, p(i, j));
od;
od;
end king;
 
ralph : proc (x str1 in);
writetext(stdout, "x.f1 = %C, x.f2 = %C%..%/", x.f1, x.f2);
end ralph;
 
whitney : proc (x str2 in);
dcl i, j bool;
 
do for i:= lower(bool) to upper(bool);
do for j:= lower(bool) to upper(bool);
writetext(stdout, "x.f1(%C, %C) = %C%..%/", i, j, x.f1(i, j));
od;
od;
 
end whitney;
 
c := [a];
i:=12;
writetext(stdout, "done.%/");
 
end hack;
/pr-4975.ch
0,0 → 1,43
/*
>Number: 4975
>Category: chill
>Synopsis: Segmentation fault of gdb 4.12.1
>Description:
 
Problem: gdb 4.12.1 segment faults with following chill program.
*/
 
gdb_bug: MODULE
 
<> USE_SEIZE_FILE "pr-4975-grt.grt" <>
SEIZE is_channel_type;
 
SYNMODE chan_type = POWERSET is_channel_type;
SYN hugo chan_type = [chan_1, chan_3];
 
DCL otto is_channel_type := chan_2;
 
x: PROC ();
 
IF otto IN hugo THEN
WRITETEXT (STDOUT, "otto IN hugo%/");
ELSE
WRITETEXT (STDOUT, "You loose%/");
FI;
END x;
 
x ();
 
END gdb_bug;
/*
Compiled with:
 
chill -S -fgrant-only pr-315-grt.ch
chill -g -o pr-315 pr-315.ch
 
Run gdb with
 
gdb pr-315 --readnow
 
will result in a sigsegv in file gdbtypes.c function force_to_range_type.
*/
/pr-9095.exp
0,0 → 1,62
# Copyright (C) 1996, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_load $binfile
 
gdb_test "set language chill" ""
runto pr-9095.ch:12
gdb_test {p v_arr2(5)->.p(5)} "reference value used as function" \
"bad call using pointer"
}
 
if [skip_chill_tests] then { continue }
 
# Check to see if we have an executable to test. If not, then either we
# haven't tried to compile one, or the compilation failed for some reason.
# In either case, just notify the user and skip the tests in this file.
 
set testfile "pr-9095"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
if ![file exists $binfile] then {
warning "$binfile does not exist; tests suppressed." 0
} else {
do_tests
}
/chillvars.ch
0,0 → 1,204
testvars: MODULE
 
DCL bool_true BOOL INIT := TRUE;
DCL bool_false BOOL INIT := FALSE;
DCL booltable1 ARRAY (0:3) BOOL INIT := [ TRUE, FALSE, FALSE, TRUE ];
DCL booltable2 ARRAY (4:7) BOOL INIT := [ TRUE, FALSE, FALSE, TRUE ];
 
DCL control_char CHAR INIT := C'07';
DCL printable_char CHAR INIT := 'a';
DCL chartable1 ARRAY (0:2) CHAR INIT := [ C'00', C'01', C'02' ];
DCL chartable2 ARRAY (3:5) CHAR INIT := [ C'00', C'01', C'02' ];
 
DCL string1 CHARS (4) INIT := 'abcd';
DCL string2 CHARS (5) INIT := 'ef' // C'00' // 'gh';
DCL string3 CHARS (6) INIT := 'ef' // 'gh' // 'ij';
DCL string4 CHARS (7) INIT := (6) 'z' // C'00';
 
DCL byte_low BYTE INIT := -128;
DCL byte_high BYTE INIT := 127;
DCL bytetable1 ARRAY (0:4) BYTE INIT := [ -2, -1, 0, 1, 2 ];
DCL bytetable2 ARRAY (5:9) BYTE INIT := [ -2, -1, 0, 1, 2 ];
DCL bytetable3 ARRAY (1:2,'c':'d',FALSE:TRUE) BYTE
INIT := [ [ [ 0, 1 ], [ 2, 3 ] ], [ [ 4, 5 ], [ 6, 7 ] ] ];
DCL bytetable4 ARRAY (1:2) ARRAY ('c':'d') ARRAY (FALSE:TRUE) BYTE
INIT := [ [ [ 0, 1 ], [ 2, 3 ] ], [ [ 4, 5 ], [ 6, 7 ] ] ];
 
DCL ubyte_low UBYTE INIT := 0;
DCL ubyte_high UBYTE INIT := 255;
DCL ubytetable1 ARRAY (0:4) UBYTE INIT := [ 0, 1, 2, 3, 4 ];
DCL ubytetable2 ARRAY (5:9) UBYTE INIT := [ 0, 1, 2, 3, 4 ];
 
DCL int_low INT INIT := -32_768;
DCL int_high INT INIT := 32_767;
DCL inttable1 ARRAY (0:4) INT INIT := [ -2, -1, 0, 1, 2 ];
DCL inttable2 ARRAY (5:9) INT INIT := [ -2, -1, 0, 1, 2 ];
 
DCL uint_low UINT INIT := 0;
DCL uint_high UINT INIT := 65_535;
DCL uinttable1 ARRAY (0:4) UINT INIT := [ 0, 1, 2, 3, 4 ];
DCL uinttable2 ARRAY (5:9) UINT INIT := [ 0, 1, 2, 3, 4 ];
 
DCL long_low LONG INIT := -2_147_483_648;
DCL long_high LONG INIT := 2_147_483_647;
DCL longtable1 ARRAY (0:4) LONG INIT := [ -2, -1, 0, 1, 2 ];
DCL longtable2 ARRAY (5:9) LONG INIT := [ -2, -1, 0, 1, 2 ];
 
DCL ulong_low ULONG INIT := 0;
DCL ulong_high ULONG INIT := 4_294_967_295;
DCL ulongtable1 ARRAY (0:4) ULONG INIT := [ 0, 1, 2, 3, 4 ];
DCL ulongtable2 ARRAY (5:9) ULONG INIT := [ 0, 1, 2, 3, 4 ];
 
DCL real1 FLOAT INIT := 3.14159265358;
DCL real2 FLOAT INIT := -3.14159265358;
DCL realtable1 ARRAY (0:4) FLOAT INIT := [ -2.0, -1.0, 0.0, 1.0, 2.0 ];
DCL realtable2 ARRAY (5:9) FLOAT INIT := [ -2.0, -1.0, 0.0, 1.0, 2.0 ];
 
DCL long_real1 DOUBLE INIT := 3.14e300;
DCL long_real2 DOUBLE INIT := -3.14e-300;
DCL longrealtable1 ARRAY (0:4) DOUBLE INIT := [ -2.0, -1.0, 0.0, 1.0, 2.0 ];
DCL longrealtable2 ARRAY (5:9) DOUBLE INIT := [ -2.0, -1.0, 0.0, 1.0, 2.0 ];
 
/* DCL powerset1 POWERSET INT(0:7);*/
/* DCL chars1 CHAR (16) INIT := (16)'b'; */
/* DCL bits1 BIT(20) := B'11111111000010101011'; */
 
NEWMODE simple_struct = STRUCT (abool BOOL, aint INT, astring CHARS (8));
DCL struct1 simple_struct := [ TRUE, 123, "a string" ];
 
NEWMODE nested_struct = STRUCT (abool BOOL, nstruct simple_struct, aint INT);
DCL struct2 nested_struct := [ TRUE, [ FALSE, 456, "deadbeef" ], 789 ];
 
/* This table is used as a source for every ascii character. */
 
DCL asciitable ARRAY (0:255) CHAR INIT := [
C'00', C'01', C'02', C'03', C'04', C'05', C'06', C'07',
C'08', C'09', C'0a', C'0b', C'0c', C'0d', C'0e', C'0f',
C'10', C'11', C'12', C'13', C'14', C'15', C'16', C'17',
C'18', C'19', C'1a', C'1b', C'1c', C'1d', C'1e', C'1f',
C'20', C'21', C'22', C'23', C'24', C'25', C'26', C'27',
C'28', C'29', C'2a', C'2b', C'2c', C'2d', C'2e', C'2f',
C'30', C'31', C'32', C'33', C'34', C'35', C'36', C'37',
C'38', C'39', C'3a', C'3b', C'3c', C'3d', C'3e', C'3f',
C'40', C'41', C'42', C'43', C'44', C'45', C'46', C'47',
C'48', C'49', C'4a', C'4b', C'4c', C'4d', C'4e', C'4f',
C'50', C'51', C'52', C'53', C'54', C'55', C'56', C'57',
C'58', C'59', C'5a', C'5b', C'5c', C'5d', C'5e', C'5f',
C'60', C'61', C'62', C'63', C'64', C'65', C'66', C'67',
C'68', C'69', C'6a', C'6b', C'6c', C'6d', C'6e', C'6f',
C'70', C'71', C'72', C'73', C'74', C'75', C'76', C'77',
C'78', C'79', C'7a', C'7b', C'7c', C'7d', C'7e', C'7f',
C'80', C'81', C'82', C'83', C'84', C'85', C'86', C'87',
C'88', C'89', C'8a', C'8b', C'8c', C'8d', C'8e', C'8f',
C'90', C'91', C'92', C'93', C'94', C'95', C'96', C'97',
C'98', C'99', C'9a', C'9b', C'9c', C'9d', C'9e', C'9f',
C'a0', C'a1', C'a2', C'a3', C'a4', C'a5', C'a6', C'a7',
C'a8', C'a9', C'aa', C'ab', C'ac', C'ad', C'ae', C'af',
C'b0', C'b1', C'b2', C'b3', C'b4', C'b5', C'b6', C'b7',
C'b8', C'b9', C'ba', C'bb', C'bc', C'bd', C'be', C'bf',
C'c0', C'c1', C'c2', C'c3', C'c4', C'c5', C'c6', C'c7',
C'c8', C'c9', C'ca', C'cb', C'cc', C'cd', C'ce', C'cf',
C'd0', C'd1', C'd2', C'd3', C'd4', C'd5', C'd6', C'd7',
C'd8', C'd9', C'da', C'db', C'dc', C'dd', C'de', C'df',
C'e0', C'e1', C'e2', C'e3', C'e4', C'e5', C'e6', C'e7',
C'e8', C'e9', C'ea', C'eb', C'ec', C'ed', C'ee', C'ef',
C'f0', C'f1', C'f2', C'f3', C'f4', C'f5', C'f6', C'f7',
C'f8', C'f9', C'fa', C'fb', C'fc', C'fd', C'fe', C'ff'
];
 
DCL charmatrix ARRAY (0:255) CHAR INIT := [
'a','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
'a','a','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
'a','a','a','X','X','X','X','X','X','X','X','X','X','X','X','X',
'a','a','a','a','X','X','X','X','X','X','X','X','X','X','X','X',
'a','a','a','a','a','X','X','X','X','X','X','X','X','X','X','X',
'a','a','a','a','a','a','X','X','X','X','X','X','X','X','X','X',
'a','a','a','a','a','a','a','X','X','X','X','X','X','X','X','X',
'a','a','a','a','a','a','a','a','X','X','X','X','X','X','X','X',
'a','a','a','a','a','a','a','a','a','X','X','X','X','X','X','X',
'a','a','a','a','a','a','a','a','a','a','X','X','X','X','X','X',
'a','a','a','a','a','a','a','a','a','a','a','X','X','X','X','X',
'a','a','a','a','a','a','a','a','a','a','a','a','X','X','X','X',
'a','a','a','a','a','a','a','a','a','a','a','a','a','X','X','X',
'a','a','a','a','a','a','a','a','a','a','a','a','a','a','X','X',
'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','X',
'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a'
];
 
DCL xptr PTR INIT := ->int_high;
 
booleans: PROC ();
 
DCL val1 BOOL := TRUE;
DCL val2 BOOL := FALSE;
DCL val3 BOOL := TRUE;
 
val1 := TRUE XOR TRUE;
val1 := TRUE XOR FALSE;
val1 := FALSE XOR TRUE;
val1 := FALSE XOR FALSE;
val1 := val2 XOR val3;
 
val1 := TRUE AND TRUE;
val1 := TRUE AND FALSE;
val1 := FALSE AND TRUE;
val1 := FALSE AND FALSE;
val1 := val2 AND val3;
 
val1 := TRUE ANDIF TRUE;
val1 := TRUE ANDIF FALSE;
val1 := FALSE ANDIF TRUE;
val1 := FALSE ANDIF FALSE;
val1 := val2 ANDIF val3;
 
val1 := TRUE OR TRUE;
val1 := TRUE OR FALSE;
val1 := FALSE OR TRUE;
val1 := FALSE OR FALSE;
val1 := val2 OR val3;
 
-- val1 := NOT TRUE;
-- val1 := NOT FALSE;
-- val1 := NOT val2;
-- val1 := NOT val3;
END booleans;
 
scalar_arithmetic: PROC ();
 
DCL val1 INT := 1;
DCL val2 INT := 2;
DCL val3 INT := 3;
 
val1 := -val2;
val1 := val2 + val3;
val1 := val2 - val3;
val1 := val2 * val3;
val1 := val2 / val3;
val1 := val2 MOD val3;
val1 := val2 REM val3;
END scalar_arithmetic;
 
write_arrays: PROC ();
 
inttable1(0) := 0;
inttable1(1) := 1;
inttable1(2) := 2;
inttable1(3) := 3;
inttable1(4) := 4;
inttable2(5) := 5;
inttable2(6) := 6;
inttable2(7) := 7;
inttable2(8) := 8;
inttable2(9) := 9;
 
END write_arrays;
 
uint_low := 0;
 
scalar_arithmetic ();
write_arrays ();
booleans ();
 
END;
/callch.exp
0,0 → 1,69
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file tests that gdb can call functions in a Chill inferior.
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "callch"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
send_gdb "set language chill\n" ;
 
gdb_test "break callch.ch:48" ""
send_gdb "run\n"; gdb_expect -re "Breakpoint .*callch.ch:48.*$gdb_prompt $"
gdb_test {set fred(10, i)} {a is '10'; b is '12'.}
gdb_test_exact "call klaus()" {here's klaus calling.}
gdb_test_exact "call fred()" {too few arguments in function call}
# Too many arguments are allowed
gdb_test_exact "call klaus(10, 20, 30)" {here's klaus calling.}
gdb_test "print a" { = \[\(FALSE:TRUE\): \[\(FALSE:TRUE\): 1\]\]}\
"print a before king"
# Current gdb prints 255 for the results that are expected to be -1.
setup_xfail "mips*-sgi-irix*"
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.*"
gdb_test "print a" { = \[\(FALSE:TRUE\): \[\(FALSE:TRUE\): -1\]\]}\
"print a after king"
gdb_test_exact "call ralph(b)" {x.f1 = 10, x.f2 = FALSE.}
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.*"
}
 
do_tests
/builtins.ch
0,0 → 1,83
xx: MODULE
 
DCL v_bool BOOL INIT := FALSE;
DCL v_char CHAR INIT := 'X';
DCL v_byte BYTE INIT := -30;
DCL v_ubyte UBYTE INIT := 30;
DCL v_int INT INIT := -333;
DCL v_uint UINT INIT := 333;
DCL v_long LONG INIT := -4444;
DCL v_ulong ULONG INIT := 4444;
DCL v_ptr PTR;
 
SYNMODE m_set = SET (e1, e2, e3, e4, e5, e6);
DCL v_set m_set INIT := e3;
 
SYNMODE m_set_range = m_set(e2:e5);
DCL v_set_range m_set_range INIT := e3;
 
SYNMODE m_numbered_set = SET (n1 = 25, n2 = 22, n3 = 35, n4 = 33,
n5 = 45, n6 = 43);
DCL v_numbered_set m_numbered_set INIT := n3;
 
SYNMODE m_char_range = CHAR('A':'Z');
DCL v_char_range m_char_range INIT := 'G';
 
SYNMODE m_bool_range = BOOL(FALSE:FALSE);
DCL v_bool_range m_bool_range;
 
SYNMODE m_long_range = LONG(255:3211);
DCL v_long_range m_long_range INIT := 1000;
 
SYNMODE m_range = RANGE(12:28);
DCL v_range m_range INIT := 23;
 
SYNMODE m_chars = CHARS(20);
SYNMODE m_chars_v = CHARS(20) VARYING;
DCL v_chars CHARS(20);
DCL v_chars_v CHARS(20) VARYING INIT := "foo bar";
 
SYNMODE m_bits = BOOLS(10);
DCL v_bits BOOLS(10);
 
SYNMODE m_arr = ARRAY(1:10) BYTE;
DCL v_arr ARRAY(1:10) BYTE;
 
SYNMODE m_char_arr = ARRAY (CHAR) BYTE;
DCL v_char_arr ARRAY(CHAR) BYTE;
 
SYNMODE m_bool_arr = ARRAY (BOOL) BYTE;
DCL v_bool_arr ARRAY (BOOL) BYTE;
 
SYNMODE m_int_arr = ARRAY (INT) BYTE;
DCL v_int_arr ARRAY (INT) BYTE;
 
SYNMODE m_set_arr = ARRAY (m_set) BYTE;
DCL v_set_arr ARRAY (m_set) BYTE;
 
SYNMODE m_numbered_set_arr = ARRAY (m_numbered_set) BYTE;
DCL v_numbered_set_arr ARRAY (m_numbered_set) BYTE;
 
SYNMODE m_char_range_arr = ARRAY (m_char_range) BYTE;
DCL v_char_range_arr ARRAY (m_char_range) BYTE;
 
SYNMODE m_set_range_arr = ARRAY (m_set_range) BYTE;
DCL v_set_range_arr ARRAY (m_set_range) BYTE;
 
SYNMODE m_bool_range_arr = ARRAY (m_bool_range) BYTE;
DCL v_bool_range_arr ARRAY (m_bool_range) BYTE;
 
SYNMODE m_long_range_arr = ARRAY (m_long_range) BYTE;
DCL v_long_range_arr ARRAY (m_long_range) BYTE;
 
SYNMODE m_range_arr = ARRAY (m_range) BYTE;
DCL v_range_arr ARRAY (m_range) BYTE;
 
SYNMODE m_struct = STRUCT (i LONG,
c CHAR,
s CHARS(30));
DCL v_struct m_struct;
 
v_bool := TRUE;
 
END xx;
/pr-8894.ch
0,0 → 1,12
xx: MODULE
 
<> USE_SEIZE_FILE "pr-8894-grt.grt" <>
SEIZE m_byte;
 
SYNMODE m_struct = STRUCT (a, b, c m_byte);
 
DCL v m_struct;
 
v.a := 100;
 
END xx;
/misc.exp
0,0 → 1,100
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Fred Fish. (fnf@cygnus.com)
# Martin Pottendorfer (pottendo@aut.alcatel.at)
#
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "misc"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
# Set the current language to chill. This counts as a test. If it
# fails, then we skip the other tests.
 
proc set_lang_chill {} {
global gdb_prompt
global binfile objdir subdir
 
verbose "loading file '$binfile'"
gdb_load $binfile
 
send_gdb "set language chill\n"
gdb_expect {
-re ".*$gdb_prompt $" {}
timeout { fail "set language chill (timeout)" ; return 0 }
}
 
return [gdb_test "show language" ".* source language is \"chill\".*" \
"set language to \"chill\""]
}
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
 
gdb_test "set print sevenbit-strings" ".*"
 
if ![set_lang_chill] then {
runto dummyfunc
# check upper/lower case
gdb_test "ptype BOOL" " = (bool|BOOL)"
gdb_test "ptype bool" " = (bool|BOOL)"
gdb_test "print otto" " = 42"
gdb_test "print OTTO" " = 42"
gdb_test "print otTO" " = 42"
gdb_test "print OTto" " = 42"
gdb_test "print NULL" " = NULL" "print emptiness literal"
 
# This tests PR 8496.
gdb_test {printf "%d %d.", 3+4,2} "7 2." "printf with 2 arguments"
 
# This tests GCH/924
gdb_test {print (h'23)} { = 35} "print parantised integer literal"
 
# Linux thinks this is at line 6, but is otherwise ok.
setup_xfail "i*86-pc-linux*-gnu"
gdb_test "info line" \
{Line 7 of .*misc.ch.* at address H'[0-9a-fA-F]+.*}\
"info about current line"
 
# check array () type (expr)
setup_xfail "m68*-*-hpux*"
gdb_test "print array () ubyte (foo)" { = \[\(0:11\): 0\]}
send_gdb "set var \$i := foo\n"
gdb_expect -re ".*$gdb_prompt $"
setup_xfail "m68*-*-hpux*"
gdb_test "print/x array () byte (\$i)" { = \[\(0:11\): H'0\]}
}
/configure.in
0,0 → 1,11
dnl Process this file file with autoconf to produce a configure script.
 
AC_PREREQ(2.5)
AC_INIT(chexp.exp)
 
CC=${CC-cc}
AC_SUBST(CC)
AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../../..)
AC_CANONICAL_SYSTEM
 
AC_OUTPUT(Makefile)
/ChangeLog
0,0 → 1,319
1999-06-25 Stan Shebs <shebs@andros.cygnus.com>
 
From Jimmy Guo <guo@cup.hp.com>:
* xstruct-grt.ch, xstruct.ch, xstruct.exp: Rename to mollify
doschk.
 
Thu May 21 02:45:18 1998 Felix Lee <flee@zog.cygnus.com>
 
* chexp.exp: fix tests that assume >16-bit ints.
 
Wed Sep 10 15:01:55 1997 Bob Manson <manson@charmed.cygnus.com>
 
* *.exp: The end-all be-all of quoting fixes. Ha.
 
Thu Aug 21 10:31:23 1997 Bob Manson <manson@charmed.cygnus.com>
 
* enum.exp: More quoting fixes.
* pr-9946.exp: Ditto.
* gch1280.exp: Ditto.
* gch1272.exp: Ditto.
 
Tue Aug 12 21:48:08 1997 Bob Manson <manson@charmed.cygnus.com>
 
* tests2.exp: Fix quoting.
* tests1.exp: Ditto.
* pr-9946.exp: Ditto.
* enum.exp: Ditto.
* builtins.exp: Ditto.
* powerset.exp: Ditto.
* misc.exp: Ditto.
* gch981.exp: Ditto.
* gch922.exp: Ditto.
* gch1280.exp: Ditto.
* gch1272.exp: Ditto.
* gch1041.exp: Ditto.
 
Sat Nov 23 14:00:59 1996 Fred Fish <fnf@cygnus.com>
 
* misc.exp: Change x86 linux setup_xfails to use new
i*86-pc-linux*-gnu quads.
* tuples.exp: Ditto.
* tests2.exp: Ditto.
* pr-5016.exp: Ditto.
 
* tuples.exp: Add i*86-pc-linux-gnu setup_fail to existing
xfails for 'set var vs1 := [ "bar", 42, m_ps[ a ] ]',
'set var $i := m_s1["foo", 44, m_ps[a ]]', and
'set var vs2 := [ 10+3, m_s1[ "foo" , 42, m_ps[ b ]]]'.
Mon Nov 11 10:27:32 1996 Fred Fish <fnf@cygnus.com>
 
* callch.exp: Add mips*-sgi-irix* xfail for
"call king(a, otto[[10, 15], [20, 25]])".
* pr-8742.exp: Add mips*-sgi-irix* xfails for
"pass int powerset tuple"
"pass set powerset tuple"
"pass modeless int powerset tuple" and
"pass modeless set powerset tuple".
* tuples.exp: Add sparc-*-solaris* and sparc-*-sunos*
xfails for several "set var" commands that are failing.
Convert most of the set commands into gdb_test_exact
commands.
 
Fri Oct 11 16:48:56 1996 Fred Fish <fnf@cygnus.com>
 
* expstruct.exp (objfile2): Set and use, like other chill tests.
* pr-4975.exp: Ditto.
* pr-5646.exp: Ditto.
* pr-8134.exp: Ditto.
 
Thu Sep 5 01:54:42 1996 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* gch1280.exp: Enhance test case.
 
Wed Sep 4 07:30:44 1996 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* gch1272.{ch,exp}, gch1280.{ch,exp}, pr-9946.{ch,exp}:
New test cases.
 
Sun Aug 18 13:29:48 1996 Fred Fish <fnf@cygnus.com>
 
* tests2.exp: Remove mips-sgi-irix* setup_xfail for
"real write 4" and "real write 8".
 
Mon Jun 10 14:04:05 1996 Fred Fish <fnf@cygnus.com>
 
* tests1.exp (test_modes): Remove *-*-* setup_sfail for
"print unnumbered set range mode" and
"print numbered set range mode".
 
Wed Apr 17 01:23:06 1996 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* tests1.{ch,exp}: Tets case modified and enhanced.
 
Tue Apr 9 01:18:04 1996 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* gch981.{ch,exp}, gch1041.{ch,exp}: New test cases.
 
Wed Mar 6 00:29:35 1996 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* powerset.exp: Add test.
 
Tue Mar 5 23:41:39 1996 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* gch922.{ch,exp}, powerset.{ch,exp}: New test cases.
 
* builtins.exp, chillvars.exp, misc.exp, tests1.exp: Updated
due to new format of nonprintable characters (control sequence
instead of C'xx').
Tue Mar 5 00:09:17 1996 Per Bothner <bothner@kalessin.cygnus.com>
 
* string.ch, string.exp: Add tests (from Cygnus PR chill/9078).
 
* pr-9095.ch, pr-9095.exp: New test case.
 
Fri Feb 9 08:22:16 1996 Fred Fish <fnf@cygnus.com>
 
* Makefile.in (clean): Add missing '{'.
 
Tue Feb 6 21:52:26 1996 Per Bothner <bothner@kalessin.cygnus.com>
 
* pr-8894.exp, pr-8894.ch, pr-8894-grt.ch: New test case.
 
Mon Jan 29 00:05:01 1996 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* builtins.ch, builtins.exp: Enhance test case.
 
* extstruct.ch, extstruct-grt.ch, extstruct.exp: New test case.
 
Tue Jan 23 16:57:13 1996 Per Bothner <bothner@kalessin.cygnus.com>
 
* enum.ch, enum.exp: New test case (covers PRs 8869 and 8870).
 
Thu Jan 11 17:34:01 1996 Per Bothner <bothner@kalessin.cygnus.com>
 
* Makefile.in (PROGS): Removed.
(clean mostlyclean): Remove *.exe rather than ${PROGS}.
 
* pr-8742.ch, pr-8742.exp: New test case.
 
Tue Jan 9 04:47:27 1996 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* misc.ch, misc.exp: Enhance test case.
 
Sat Dec 30 15:31:59 1995 Fred Fish <fnf@cygnus.com>
 
* tests2.exp: Setup_xfail "i*86-*-linux" and
"mips-sgi-irix*" for "real write 4" and "real write 8".
Conditionalize both tests for system specific value
of "infinity" string.
 
Fri Dec 29 10:46:09 1995 Fred Fish <fnf@cygnus.com>
 
* builtins.exp (test_size): Alpha seems to have long builtins.
* tests1.exp: Setup xfail "*-*-*" for "ptype r2".
* tests2.exp: Add check to skip chill tests.
Mon Dec 11 16:53:40 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* tuples.ch, tuples.exp: Exhance test cases (from PR 8643).
 
Mon Dec 11 06:57:07 1995 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* builtins.exp, pr-5016.{ch,exp}, result.{ch,exp},
tests1.{ch,exp}: Enhance test cases.
 
Thu Dec 7 05:16:34 1995 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* builtins.ch, builtins.exp, Makefile.in: New test case.
 
Tue Dec 5 01:51:45 1995 Wilfried Moser (Alcatel) <moser@rtl.cygnus.com>
 
* tests2.exp: Add compiling of the test case.
 
Fri Dec 1 00:08:37 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* pr-8405.ch, pr-8405.exp, Makefile.in: New test case.
 
* tests1.exp, tests2.exp (test_print_reject): Remove; causes
conflicts with later tests using test_print_reject in ../lib/gdb.exp.
(passcount): Remove.
* tests2.exp (test_print_accept): Removed.
(test_write): Re-write to use gdb_test rather than test_print_accept.
* tests1.exp (test_print_accept_exact): Removed.
(tests_locations): Rewrite to use gdb_test and not above proc.
* tests1.ch, tests1.exp, tests2.ch, tests2.exp, Makefile.in:
New (extensive) test cases.
* chexp.exp: Fix relations to return TRUE or FALSE.
 
Wed Nov 29 19:28:13 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* Makefile.in: Add .exp.check rule.
* callch.ch: Add missing "%." to format strings.
* callch.exp: Fix argument to gdb_load.
* chexp.exp: Add specific error messages to test_print_reject calls.
* misc.exp: Add a test for PR 8496.
* pr-6632.exp, pr-8136.exp: Link executables from two .o files.
 
Sat Nov 25 20:49:27 1995 Fred Fish <fnf@phydeaux.cygnus.com>
 
* pr-5016.exp: xfail "whatis i" for alpha-osf-dec-osf2*, same as linux.
 
Sun Oct 29 17:58:01 1995 Fred Fish <fnf@cygnus.com>
 
* pr-5016.exp: xfail "whatis i" for sparc-sun-sunos4*, same as linux.
 
Wed Oct 4 18:20:53 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* pr-8136.{ch,exp}, pr-8134.exp, func1.ch, Makefile.in: New test cases.
 
Wed Sep 27 11:51:50 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* tuples.ch. tuples.exp: Add new test for setting a variant record
using a tuple, and access the fields.
 
Thu Aug 3 10:45:37 1995 Fred Fish <fnf@cygnus.com>
 
* Update all FSF addresses except those in COPYING* files.
 
Thu Jul 27 20:36:30 1995 Fred Fish (fnf@cygnus.com)
 
* pr-5016.exp: xfail "i*86-*-linux*" for "whatis int-range"
test. Thinks it is "_cint" rather than "m_index".
* misc.exp: xfail "i*86-*-linux*" for "info line" test.
Line number is off by one.
 
Wed Jun 14 13:07:45 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* chillvars.exp, string.exp: New tests for LOWER/UPPER/LENGTH.
 
Wed Jun 7 17:52:38 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* chillvars.ch (xptr): Declare new variable.
* chillvars.exp (test_ptr): New function to test EXPR->MODENAME.
 
Tue Mar 28 17:13:13 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* pr-6632.ch, pr-6632-grt.ch, pr-6632.exp, Makefile.in: New test case.
 
Tue Mar 21 12:10:06 1995 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* tuples.exp (do_tests): Make names of "print v_ps" test unique.
 
Wed Mar 8 13:26:36 1995 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* *.exp: Skip all tests silently if skip_chill_tests returns true.
 
* misc.exp: Remove reference to non-existent variable passcount.
 
Tue Mar 7 19:30:05 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* string.ch, string.exp, Makefile.in: New test case.
 
Mon Mar 6 14:11:01 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* tuples.ch (setnmode); New module.
* tuples.exp: Add some extra tests.
 
Sat Mar 4 15:16:17 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* callch.ch, callch.exp, Makefile.in: New test case.
 
Thu Mar 2 06:17:41 1995 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* misc.exp: If executable does not exist, issue warning and skip
remaining tests, like other chill tests.
 
Wed Mar 1 20:28:42 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* misc.ch, misc.exp, Makefile.in: New test case.
 
Mon Feb 20 16:19:58 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* chillvars.ch: Add missing INIT's.
* chillvars.exp: Allow builtin types as either case. E.g. (BOOL|bool).
* pr-5016.exp: Likewise.
 
Sun Feb 12 11:26:08 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* pr-6292.ch, pr-6292.exp, Makefile.in: New test case.
 
Wed Feb 1 13:09:48 1995 Per Bothner <bothner@kalessin.cygnus.com>
 
* tuples.ch, tuples.exp, Makefile.in: New test case.
 
Mon Nov 28 18:39:08 1994 Per Bothner <bothner@kalessin.cygnus.com>
 
* pr-5984.ch, pr-5984.exp, Makefile.in: New test case.
 
Fri Sep 16 16:55:03 1994 Per Bothner (bothner@kalessin.cygnus.com)
 
* pr-5646.ch, pr-5646-grt.ch, pr-5646.exp, Makefile.in: New testcase.
 
Tue Sep 6 13:21:27 1994 Per Bothner (bothner@kalessin.cygnus.com)
 
* pr-5016.ch, pr-5016.exp, Makefile.in: New testcase.
* Makefile.in (.exe.check): New rule, to run just one test.
 
Tue Jun 14 16:20:18 1994 Per Bothner (bothner@kalessin.cygnus.com)
 
* result.ch, result.exp, Makefile.in: New test case.
* pr-4975.ch, pr-4975-grt.ch, pr-4975.exp, Makefile.in: Ditto.
 
Thu Jun 9 15:20:43 1994 Per Bothner (bothner@kalessin.cygnus.com)
 
* pr-5022.ch, pr-5022.exp: New testcase.
* chillvars.exp: Remove spurious newline.
 
* Makefile.in: Bunch of fixes so it actually works in this
directory. (E.g. add extra ../ where needed.)
Also, add .exe to executables, so we can use suffix rules.
* chexp.exp (test_print_reject): Update syntax error message.
* chillvars.ch (module PR_5020): Moved from here ...
* pr-5022.ch: ... to this new file.
* chillvars.exp, pr-5020.exp (binfile): Add .exe extension.
* chillvars.exp, pr-5020.exp: Don't check all_flag.
* pr-5020.exp: Add more tests; fix "print y pretty" output.
/gch922.ch
0,0 → 1,23
xx : module
dcl a chars(200) varying init := (70)'^(0)' // "Jason""^(0,5)""Hugo^(10)" // (70)'^(1)';
dcl b chars(20) varying init := "Jason""^(0,5)""Hugo^(10)";
dcl c chars(256) varying init := (70)'a' // "^(0,5)Jason" // (70)'b';
dcl d char init := '^(11)';
 
bulk: PROC ();
END bulk;
 
a := (50) '^(255,0,222,127)';
b := (1)'^(200)';
d := 'a';
 
c:= (256)" ";
 
DO FOR i:= 0 BY 1 TO 255;
c (255-i) := char (i);
OD;
bulk ();
 
end xx;
/gch922.exp
0,0 → 1,183
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file tests various Chill values, expressions, and types.
 
# This file was written by Wilfried Moser (moser@aut.alcatel.at)
# Kurt Fuchs (fuchs_k@aut.alcatel.at)
#
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "gch922"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
# Set the current language to chill. This counts as a test. If it
# fails, then we skip the other tests.
 
proc set_lang_chill {} {
global gdb_prompt
global binfile objdir subdir
 
verbose "loading file '$binfile'"
gdb_load $binfile
send_gdb "set language chill\n"
gdb_expect {
-re ".*$gdb_prompt $" {}
timeout { fail "set language chill (timeout)" ; return 0 }
}
 
send_gdb "show language\n"
gdb_expect {
-re ".* source language is \"chill\".*$gdb_prompt $" {
pass "set language to \"chill\""
send_gdb "break xx_\n"
gdb_expect {
-re ".*$gdb_prompt $" {
send_gdb "run\n"
gdb_expect -re ".*$gdb_prompt $" {}
return 1
}
timeout {
fail "can't set breakpoint (timeout)"
return 0
}
}
}
-re ".*$gdb_prompt $" {
fail "setting language to \"chill\""
return 0
}
timeout {
fail "can't show language (timeout)"
return 0
}
}
}
 
# Testing printing of a specific value. Increment passcount for
# success or issue fail message for failure. In both cases, return
# a 1 to indicate that more tests can proceed. However a timeout
# is a serious error, generates a special fail message, and causes
# a 0 to be returned to indicate that more tests are likely to fail
# as well.
#
# Args are:
#
# First one is string to send_gdb to gdb
# Second one is string to match gdb result to
# Third one is an optional message to be printed
 
proc test_print_accept { args } {
global gdb_prompt
global passcount
global verbose
 
if [llength $args]==3 then {
set message [lindex $args 2]
} else {
set message [lindex $args 0]
}
set sendthis [lindex $args 0]
set expectthis [lindex $args 1]
set result [gdb_test $sendthis ".* = ${expectthis}" $message]
if $result==0 {incr passcount}
return $result
}
 
 
proc test_chars {} {
global passcount gdb_prompt
 
verbose "Testing Chars"
set passcount 0
 
test_print_accept "print a" {'\^\(0\)'<repeats 70 times>//"Jason""\^\(0,5\)""Hugo\^\(10\)"//'\^\(1\)'<repeats 70 times>}
test_print_accept "print b" {"Jason""\^\(0,5\)""Hugo\^\(10\)"}
test_print_accept "print c" {'a'<repeats 70 times>//"\^\(0,5\)Jason"//'b'<repeats 70 times>}
test_print_accept "print d" {'\^\(11\)'}
 
gdb_test "set var a := (100)'\^(0,255)'" ""
test_print_accept "print a" {"\^\(0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255\)"}
 
send_gdb "set var a := (10)'\^(1)'//(26)\"\^(66,67)\"//\" \"//'I'//' '//'a'//'m'//\" Hugo\" \n" ; gdb_expect -re "$gdb_prompt $"
test_print_accept "print a" {"\^\(1,1,1,1,1,1,1,1,1,1\)BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC I am Hugo"}
send_gdb "set var b := \"Hugo \"\"\^(3,4)\"\"Otto\^(17)\" \n" ; gdb_expect -re "$gdb_prompt $"
test_print_accept "print b" {"Hugo ""\^\(3,4\)""Otto\^\(17\)"}
send_gdb "set var c := (70)'b' // \"\^(2,3)Hugo \" // (70)'c' \n" ; gdb_expect -re "$gdb_prompt $"
test_print_accept "print c" {'b'<repeats 70 times>//"\^\(2,3\)Hugo "//'c'<repeats 70 times>}
gdb_test "set var d := '\^(199)'" ""
test_print_accept "print d" {'\^\(199\)'}
 
test_print_accept "print (10)'\^(0)'//(26)\"\^(66,67)\"//\" \"//'I'//' '//'a'//'m'//\" Hugo\"" {"\^\(0,0,0,0,0,0,0,0,0,0\)BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC I am Hugo"}
test_print_accept "print \"Jason\"\"\^(0,5)\"\"Hugo\^(10)\"" {"Jason""\^\(0,5\)""Hugo\^\(10\)"}
 
send_gdb "set var a := \"\" \n" ; gdb_expect -re "$gdb_prompt $"
test_print_accept "print a" {""}
send_gdb "set var a := \"\"\"\" \n" ; gdb_expect -re "$gdb_prompt $"
test_print_accept "print a" {""""}
send_gdb "set var a := \" \"\"\" \n" ; gdb_expect -re "$gdb_prompt $"
test_print_accept "print a" {" """}
send_gdb "set var a := \"\^\^\" \n" ; gdb_expect -re "$gdb_prompt $"
test_print_accept "print a" {"\^\^"}
send_gdb "set var a := \"'\" \n" ; gdb_expect -re "$gdb_prompt $"
test_print_accept "print a" {"'"}
}
 
 
proc test_code {} {
global passcount gdb_prompt
 
verbose "Testing Chars"
set passcount 0
 
runto bulk
test_print_accept "print a" {"\^\(255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127,255,0,222,127\)"}
test_print_accept "print b" {"\^\(200\)"}
# test_print_accept "print c" {'a'<repeats 70 times>//"\^\(0,5\)Jason"//'b'<repeats 70 times>}
test_print_accept "print d" {'a'}
}
 
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
 
gdb_test "set print sevenbit-strings" ".*"
 
 
if [set_lang_chill] then {
# test builtins as described in chapter 6.20.3 Z.200
 
test_chars
# test_code
} else {
warning "$test_name tests suppressed."
}
/string.ch
0,0 → 1,24
ss: MODULE
 
/* These declarations are from Cygnus PR chill/9078. */
SYNMODE m_char20 = CHARS(20) VARYING;
 
DCL foo m_char20 INIT := "Moser ";
DCL bar m_char20 INIT := "Wilfried";
 
DCL foo1 CHARS(5) INIT := "12345";
DCL bar1 CHARS(5) INIT := "abcde";
 
/* This is Cynus PR chill/5696. */
 
DCL s20 CHARS(20) VARYING;
 
DCL s10 CHARS(10);
 
 
s20 := "Moser Wilfried";
S10 := "1234567890";
 
WRITETEXT (stdout, "s20 := ""%C"", s10 := ""%C""%/", s20, s10);
 
END ss;
/enum.exp
0,0 → 1,85
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Wilfried Moser (moser@aut.alcatel.at
#
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "enum"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
# Set the current language to chill. This counts as a test. If it
# fails, then we skip the other tests.
 
proc set_lang_chill {} {
global gdb_prompt
global binfile objdir subdir
 
verbose "loading file '$binfile'"
gdb_load $binfile
 
send_gdb "set language chill\n"
gdb_expect {
-re ".*$gdb_prompt $" {}
timeout { fail "set language chill (timeout)" ; return 0 }
}
 
return [gdb_test "show language" ".* source language is \"chill\".*" \
"set language to \"chill\""]
}
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
 
gdb_test "set print sevenbit-strings" ".*"
 
if ![set_lang_chill] then {
runto hugo_
 
send_gdb "set var \$i := d\n"
gdb_expect -re ".*$gdb_prompt $"
gdb_test "print \$i" { = d}
gdb_test "print size (\$i)" { = 1}
gdb_test "print b+c" { = 3}
gdb_test "print c*d" { = 6}
gdb_test "print a<b" { = TRUE}
gdb_test "print a=b" { = FALSE}
gdb_test "print a=a" { = TRUE}
gdb_test "print a/=\$i" { = TRUE}
 
# This is PR 8870
gdb_test "break malloc" ".*"
gdb_test {set var $j := m_set[b]} ".*invalid.*tuple.*"
}
/xstruct-grt.ch
0,0 → 1,12
pot1: MODULE
 
SYNMODE m_array1 = ARRAY (2:3) ulong;
SYNMODE m_struct = STRUCT (f1 int,
f2 REF m_array1,
f3 m_array1);
SYNMODE m_array3 = ARRAY (5:6) m_struct;
SYNMODE m_array4 = ARRAY (7:8) ARRAY (9:10) m_struct;
 
GRANT all;
 
END pot1;
/pr-5020.exp
0,0 → 1,85
# Copyright (C) 1992, 1994, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "pr-5020"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
# This is needed (at least on SunOS4) to make sure the
# the symbol table is read.
gdb_test "break chillvars.ch:3" ""
gdb_test "delete 1" ""
 
gdb_test "set width 0" ""
gdb_test "set print sevenbit-strings" ""
gdb_test "set print address off" ""
 
test_pr_5020
}
 
proc test_pr_5020 {} {
global gdb_prompt
runto dummy_pr_5020
gdb_test_exact "print y" \
{= [('a'): [.l: 10, .b: TRUE], ('b'): [.l: 111, .b: FALSE]]}
gdb_test_exact "print boolarr" \
{= [(FALSE): [.l: 10, .b: TRUE], (TRUE): [.l: 111, .b: FALSE]]}
gdb_test_exact "print intarr" \
{= [(10): [.l: 10, .b: TRUE], (11): [.l: 111, .b: FALSE]]}
gdb_test_exact "print setarr" \
{= [(aa): [.l: 10, .b: TRUE], (bb): [.l: 111, .b: FALSE]]}
gdb_test "set print pretty" ""
gdb_test_exact "print y" \
{= [('a'): [
.l: 10,
.b: TRUE
], ('b'): [
.l: 111,
.b: FALSE
]]} "print y pretty"
}
 
do_tests
/string.exp
0,0 → 1,73
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "string"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
# These tests based on Cygnus PR chill/5696.
runto string.ch:22
gdb_test "p s20" { = "Moser Wilfried"} "print simple vstring"
gdb_test "p s20(1)" { = 'o'} "print vstring element"
gdb_test "p s20(1:3)" { = "ose"} "print vstring slice (:)"
gdb_test "p s20(2 up 3)" { = "ser"} "print vstring slice (up)"
gdb_test "p s10" { = "1234567890"} "print simple string"
gdb_test "p s10(1)" { = '2'} "print string element"
gdb_test "p s10(1:3)" { = "234"} "print string slice (:)"
gdb_test "p s10(2 up 3)" { = "345"} "print string slice (up)"
 
gdb_test "p length(s10)" { = 10} "print string length"
gdb_test "p length(s20)" { = 14} "print varying string length"
gdb_test "p lower(s10)" { = 0} "print string lower"
gdb_test "p upper(s10)" { = 9} "print string upper"
gdb_test "p lower(s20)" { = 0} "print varying string lower"
gdb_test "p upper(s20)" { = 19} "print varying string upper"
 
# These tests are based on Cygnus PR chill/9078.
gdb_test "print foo // bar" { = "Moser Wilfried"}
gdb_test "print foo // bar1" { = "Moser abcde"}
gdb_test "print foo1 // bar1" { = "12345abcde"}
}
 
do_tests
/pr-5022.exp
0,0 → 1,70
# Copyright (C) 1992, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "pr-5022"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
# This is needed (at least on SunOS4) to make sure the
# the symbol table is read.
gdb_test "break gdbme.ch:3" ""
gdb_test "delete 1" ""
 
gdb_test "set width 0" ""
gdb_test "set print sevenbit-strings" ""
 
test_pr_5022
}
 
proc test_pr_5022 {} {
global gdb_prompt
runto dummy_pr_5022
gdb_test "p p" " = NULL" "print NULL pointer"
gdb_test "continue" ""
gdb_test "p p" {= PTR\(H'[0-9a-fA-F]+\)} "print non-NULL pointer"
}
 
do_tests
/pr-6632-grt.ch
0,0 → 1,34
markus1: MODULE
 
SYNMODE m_dummy = SET (dummy_1,
dummy_2,
dummy_3,
dummy_4,
dummy_5,
dummy_6,
dummy_7,
dummy_8,
dummy_9,
dummy_10,
dummy_11,
dummy_12,
dummy_13,
dummy_14,
dummy_15,
dummy_16,
dummy_17,
dummy_18,
dummy_19,
dummy_20,
dummy_21,
dummy_22,
dummy_23,
dummy_24,
dummy_25,
dummy_26);
 
SYNMODE m_dummy_range = m_dummy(dummy_6 : dummy_22);
 
GRANT m_dummy, m_dummy_range;
 
END markus1;
/powerset.exp
0,0 → 1,187
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file tests various Chill values, expressions, and types.
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "powerset"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
# Set the current language to chill. This counts as a test. If it
# fails, then we skip the other tests.
 
proc set_lang_chill {} {
global gdb_prompt
global binfile objdir subdir
 
verbose "loading file '$binfile'"
gdb_load $binfile
send_gdb "set language chill\n"
gdb_expect {
-re ".*$gdb_prompt $" {}
timeout { fail "set language chill (timeout)" ; return 0 }
}
 
send_gdb "show language\n"
gdb_expect {
-re ".* source language is \"chill\".*$gdb_prompt $" {
pass "set language to \"chill\""
send_gdb "break xx_\n"
gdb_expect {
-re ".*$gdb_prompt $" {
send_gdb "run\n"
gdb_expect -re ".*$gdb_prompt $" {}
return 1
}
timeout {
fail "can't set breakpoint (timeout)"
return 0
}
}
}
-re ".*$gdb_prompt $" {
fail "setting language to \"chill\""
return 0
}
timeout {
fail "can't show language (timeout)"
return 0
}
}
}
 
# Testing printing of a specific value. Increment passcount for
# success or issue fail message for failure. In both cases, return
# a 1 to indicate that more tests can proceed. However a timeout
# is a serious error, generates a special fail message, and causes
# a 0 to be returned to indicate that more tests are likely to fail
# as well.
#
# Args are:
#
# First one is string to send_gdb to gdb
# Second one is string to match gdb result to
# Third one is an optional message to be printed
 
proc test_print_accept { args } {
global gdb_prompt
global passcount
global verbose
 
if [llength $args]==3 then {
set message [lindex $args 2]
} else {
set message [lindex $args 0]
}
set sendthis [lindex $args 0]
set expectthis [lindex $args 1]
set result [gdb_test $sendthis ".* = ${expectthis}" $message]
if $result==0 {incr passcount}
return $result
}
 
proc test_card {} {
global passcount
 
verbose "testing builtin CARD"
set passcount 0
 
# discrete mode names
test_print_accept "print card(v_ps1)" "4"
test_print_accept "print card(v_ps2)" "15"
test_print_accept "print card(v_ps3)" "4"
test_print_accept "print card(v_ps4)" "11"
test_print_accept "print card(v_ps5)" "1"
test_print_accept "print card(v_ps51)" "0"
test_print_accept "print card(v_ps6)" "101"
 
# a failure
setup_xfail "*-*-*"
test_print_accept "print card(m_ps1)" "typename in invalid context"
}
 
proc test_min {} {
global passcount
 
verbose "testing builtin MIN"
set passcount 0
 
# discrete mode names
test_print_accept "print min(v_ps1)" "1"
test_print_accept "print min(v_ps2)" "-100"
test_print_accept "print min(v_ps3)" "bb"
test_print_accept "print min(v_ps4)" "','"
test_print_accept "print min(v_ps5)" "FALSE"
test_print_accept "print min(v_ps6)" "-50"
 
# a failure
setup_xfail "*-*-*"
test_print_accept "print min(v_ps51)" "MIN for empty powerset"
setup_xfail "*-*-*"
test_print_accept "print min(m_ps1)" "typename in invalid context"
}
 
proc test_max {} {
global passcount
 
verbose "testing builtin MIN"
set passcount 0
 
# discrete mode names
test_print_accept "print max(v_ps1)" "7"
test_print_accept "print max(v_ps2)" "100"
test_print_accept "print max(v_ps3)" "ii"
test_print_accept "print max(v_ps4)" "'z'"
test_print_accept "print max(v_ps5)" "FALSE"
test_print_accept "print max(v_ps6)" "50"
 
# test an IN
test_print_accept "print 0 in v_ps6" "TRUE"
 
# a failure
setup_xfail "*-*-*"
test_print_accept "print max(v_ps51)" "MAX for empty powerset"
}
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
 
gdb_test "set print sevenbit-strings" ".*"
 
if [set_lang_chill] then {
# test builtins as described in chapter 6.20.3 Z.200
test_card
test_min
test_max
} else {
warning "$test_name tests suppressed."
}
/gch1280.ch
0,0 → 1,13
gch1280: MODULE
 
SYNMODE m_x = ARRAY (1:3) LONG;
DCL v_x m_x;
DCL v_xx m_x;
 
doit: PROC ()
END doit;
 
v_x := [ 11, 12, 13 ];
doit ();
 
END gch1280;
/result.ch
0,0 → 1,29
test_result: MODULE
 
DCL i INT := 5;
 
SYNMODE m_struct = STRUCT (l LONG, b BOOL);
DCL v_struct m_struct := [ 20, TRUE ];
 
simple_func: PROC () RETURNS (INT);
DCL j INT := i;
RESULT 10;
i + := 2;
RESULT j + 2;
i + := 2;
END simple_func;
 
ret_struct: PROC () RETURNS (m_struct)
DCL v m_struct := [ 33, FALSE ];
RESULT v;
v.l := 18;
END ret_struct;
 
i := simple_func ();
i := simple_func ();
i * := 10;
 
v_struct := ret_struct ();
 
i := 33; -- for gdb
END test_result;
/tuples.exp
0,0 → 1,161
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "tuples"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
runto tuples.ch:40
 
gdb_test_exact "print v_arri" {= [(1): -1, (2): -2, (3): -3, (4): -4, (5): -5]}
gdb_test_exact "set v_arri := \[ 33, 44, 55, 66, 77 \]" {}
gdb_test_exact "print v_arri" {= [(1): 33, (2): 44, (3): 55, (4): 66, (5): 77]} "after assignment 1 to v_arri"
gdb_test_exact "set v_arri := \[-33, -44, -55, -66, -77\]" {}
gdb_test_exact "print v_arri" {= [(1): -33, (2): -44, (3): -55, (4): -66, (5): -77]} {after assignment 2 to v_arri}
 
gdb_test_exact "print v_arrui" {= [(1): 1, (2): 2, (3): 3, (4): 4, (5): 5]}
gdb_test_exact "set v_arrui := \[ 11, 11, 11, 11, 11 \]" {}
gdb_test_exact "print v_arrui" {= [(1:5): 11]} "after assignment to v_arrui"
 
gdb_test_exact "print v_arrb" {= [(1): -3, (2): -4, (3): -5, (4): -6, (5): -7]}
 
gdb_test_exact "set v_arrb := \[ -9, -8, -7, -6, -5 \]" {}
gdb_test_exact "print v_arrb" {= [(1): -9, (2): -8, (3): -7, (4): -6, (5): -5]} "after assignment to v_arrb"
 
gdb_test_exact "print v_arrub" {= [(1): 3, (2): 4, (3): 5, (4): 6, (5): 7]}
gdb_test_exact "set v_arrub := \[ 77, 77, 77, 77, 77 \]" {}
gdb_test_exact "print v_arrub" {= [(1:5): 77]} "v_arrub after assignment"
 
gdb_test_exact "print j" {= 4}
gdb_test_exact "print j := 3+4" {= 7}
gdb_test_exact "print j := r1(3)" {= 3}
 
gdb_test_exact "print v_arrc" {= [(1): '1', (2): '2', (3): '3', (4): '4', (5): '5']}
gdb_test_exact "set v_arrc := \[ 'a', 'b', 'c', 'd', 'e' \]" {}
gdb_test_exact "print v_arrc" {= [(1): 'a', (2): 'b', (3): 'c', (4): 'd', (5): 'e']} "v_arrc after assignment"
 
gdb_test_exact "print v_ps" {= [1, 3, 5]}
gdb_test_exact "set v_ps := \[ 2, 4 \]" {}
gdb_test_exact "print v_ps" {= [2, 4]} {v_ps after assignment}
gdb_test_exact "print v_ps := \[\]" {= []} {assign [] to v_ps}
 
gdb_test_exact "print m_arri\[1, 2, 3, 4, 5\]" {= [(1): 1, (2): 2, (3): 3, (4): 4, (5): 5]}
gdb_test_exact "print m_arrub\[45, 46, 47, 48, 49\]" {= [(1): 45, (2): 46, (3): 47, (4): 48, (5): 49]}
 
gdb_test_exact "print v_cv" {= "foo"}
gdb_test_exact "set v_cv := \"foo-bar\"" {}
gdb_test_exact "print v_cv" {= "foo-bar"} "v_cv after assignment"
gdb_test_exact "set v_cv(3) := ' '" {}
gdb_test_exact "print v_cv" {= "foo bar"} "v_cv after element assignment"
 
gdb_test_exact "print v_arrbool" {= [(1): TRUE, (2): FALSE, (3): TRUE, (4): FALSE, (5): TRUE]}
gdb_test_exact "set v_arrbool := \[ false, false, false, false, false \]" {}
gdb_test_exact "print v_arrbool" {= [(1:5): FALSE]} "v_arrbool after assignment 1"
gdb_test_exact "set v_arrbool := \[true, true, true, true, true\]" {}
gdb_test_exact "print v_arrbool" {= [(1:5): TRUE]} "v_arrbool after assignment 2"
gdb_test_exact "set v_arrbool(3) := false" {}
gdb_test_exact "print v_arrbool" {= [(1:2): TRUE, (3): FALSE, (4:5): TRUE]} "v_arrbool after element assignment"
 
gdb_test_exact "set v_arrbool(1 up 2) := \[ false, true \]" {}
gdb_test_exact "print v_arrbool" {= [(1): FALSE, (2): TRUE, (3): FALSE, (4:5): TRUE]} "v_arrbool after slice assignment 1"
gdb_test_exact "set v_arrbool(3 : 5) := \[ true, true, false \]" {}
gdb_test_exact "print v_arrbool" {= [(1): FALSE, (2:4): TRUE, (5): FALSE]} "v_arrbool after slice assignment 2"
 
gdb_test_exact "set vstr := \[ .a: 2+3, .b: 12, .ch1: 'x' \]" {}
gdb_test_exact "print vstr.a" {= 5} "vstr.a after assignment"
gdb_test_exact "print vstr.ch1" {= 'x'} "vstr.ch1 after assignment"
 
# These tests are from Cygnus PR chill/5024:
gdb_test "break printdow" ""
gdb_test "continue" ""
gdb_test_exact "set var w:= dow\[monday\]" {}
gdb_test "print w" " = \\\[monday\\\]" \
"print bitstring after assignment"
gdb_test_exact "set var w:=\[\]" {}
gdb_test "print w" " = \\\[\\\]" \
"print bitstring after assignment of \[\]"
 
# These tests are from Cygnus PR chill/8643:
runto tuples.ch:40
gdb_test_exact "set var vs1 := \[ \"foo\", 41, \[ b \] \]" {}
gdb_test_exact "print vs1" { = [.str: "foo", .i: 41, .ps: [b]]} \
"print vs1 after tuple assign 1"
setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
gdb_test_exact "set var vs1 := \[ \"bar\", 42, m_ps\[ a \] \]" {}
setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
gdb_test_exact "print vs1" { = [.str: "bar", .i: 42, .ps: [a]]} \
"print vs1 after tuple assign 2"
 
gdb_test_exact "set var \$i := m_s1\[\"foo\", 42, \[a \]\]" {}
gdb_test_exact {print $i} { = [.str: "foo", .i: 42, .ps: [a]]} \
"print \$i after tuple assign 1"
setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
gdb_test_exact "set var \$i := m_s1\[\"foo\", 44, m_ps\[a \]\]" {}
setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
gdb_test_exact {print $i} { = [.str: "foo", .i: 44, .ps: [a]]} \
"print \$i after tuple assign 2"
 
gdb_test_exact "set var vs2 := \[ 10, \[ \"foo\" , 42, \[ b \] \] \]" {}
gdb_test_exact "print vs2" \
{ = [.i: 10, .s: [.str: "foo", .i: 42, .ps: [b]]]} \
"print vs2 after tuple assign 1"
setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
gdb_test_exact "set var vs2 := \[ 10+3, m_s1\[ \"foo\" , 42, m_ps\[ b \] \] \]" {}
setup_xfail "i*86-pc-linux*-gnu" "sparc-*-solaris*" "sparc-*-sunos*"
gdb_test_exact "print vs2" \
{ = [.i: 13, .s: [.str: "foo", .i: 42, .ps: [b]]]} \
"print vs2 after tuple assign 2"
 
gdb_test_exact "set var vs3 := \[ 33, \[ -1, -2, -3 \] \]" {}
gdb_test_exact "print vs3" {[.i: 33, .a: [(1): -1, (2): -2, (3): -3]]} \
"print vs3 after tuple assign"
gdb_test_exact "set var \$k := m_s3\[ 33, m_arr\[ 4, 3, 2 \] \]" {}
gdb_test_exact {print $k} { = [.i: 33, .a: [(1): 4, (2): 3, (3): 2]]} \
"print \$k after tuple assign"
 
}
 
do_tests
/result.exp
0,0 → 1,77
# Copyright (C) 1994, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile "result"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
gdb_test "set width 0" ""
gdb_test "set print sevenbit-strings" ""
gdb_test "set print address off" ""
 
# simple function
runto simple_func
gdb_test "step 2" ""
gdb_test "print j" "= 5"
gdb_test "p RESULT" "= 10"
gdb_test "continue" ""
gdb_test "print i" "= 7"
gdb_test "step 4" ""
gdb_test "set RESULT := 50" ""
gdb_test "finish" ""
gdb_test "step" ""
gdb_test "print i" "= 50"
 
# returning a structure
runto ret_struct
gdb_test "step 2" ""
gdb_test "p result" {\[.l: 33, .b: FALSE\]}
gdb_test "set var result := \[383, TRUE\]" ""
gdb_test "finish" ""
gdb_test "p v_struct" {\[.l: 383, .b: TRUE\]}
}
 
do_tests
/pr-8134.exp
0,0 → 1,65
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
# Note we use pr-8136.ch for pr-8134.exp as well as pr-8136.exp.
set testfile2 "func1"
set srcfile2 ${srcdir}/$subdir/${testfile2}.ch
set objfile2 ${objdir}/$subdir/${testfile2}.o
if { [compile "${srcfile2} -g -c -o ${objfile2}"] != "" } {
perror "Couldn't compile ${srcfile2}"
return -1
}
 
set testfile "pr-8134"
set srcfile ${srcdir}/$subdir/pr-8136.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g ${objfile2} -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
runto p1
gdb_test "print first" "= 1"
gdb_test "print last" "= 10"
}
 
do_tests
/pr-4975-grt.ch
0,0 → 1,13
gdb_bug_grt: MODULE
NEWMODE is_channel_type = SET (chan_1,
chan_2,
chan_3,
chan_4,
chan_5,
chan_6,
chan_7,
chan_8,
chan_9,
chan_10);
GRANT is_channel_type;
END;
/pr-6632.exp
0,0 → 1,66
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
 
if [skip_chill_tests] then { continue }
 
set testfile2 "pr-6632-grt"
set srcfile2 ${srcdir}/$subdir/${testfile2}.ch
set objfile2 ${objdir}/$subdir/${testfile2}.o
if { [compile "${srcfile2} -g -c -o ${objfile2}"] != "" } {
perror "Couldn't compile ${srcfile2}"
return -1
}
 
set testfile "pr-6632"
set srcfile ${srcdir}/$subdir/${testfile}.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} ${objfile2} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
runto p
gdb_test "whatis x" {type = m_dummy_range}
gdb_test_exact "ptype x" {type = m_dummy (dummy_6:dummy_22)}
gdb_test "print x" { = dummy_10}
}
 
do_tests
/pr-8136.exp
0,0 → 1,63
# Copyright (C) 1995, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
 
# This file was written by Per Bothner. (bothner@cygnus.com)
 
if $tracelevel then {
strace $tracelevel
}
 
if [skip_chill_tests] then { continue }
 
set testfile2 "func1"
set srcfile2 ${srcdir}/$subdir/${testfile2}.ch
set objfile2 ${objdir}/$subdir/${testfile2}.o
if { [compile "${srcfile2} -g -c -o ${objfile2}"] != "" } {
perror "Couldn't compile ${srcfile2}"
return -1
}
 
set testfile "pr-8136"
set srcfile ${srcdir}/$subdir/pr-8136.ch
set binfile ${objdir}/${subdir}/${testfile}.exe
if { [compile "${srcfile} -g ${objfile2} -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
 
proc do_tests {} {
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
 
set prms_id 0
set bug_id 0
 
# Start with a fresh gdb.
 
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
 
gdb_test "set language chill" ""
 
runto p1
gdb_test "print ps" {= \[e3, e7:e9\]}
}
 
do_tests
/pr-8742.ch
0,0 → 1,32
hugo : module
synmode a = range(1:10);
synmode p = powerset a;
synmode s = set (sa, sb, sc);
synmode s_ps = powerset s;
x: proc (ps p);
dcl i a;
do for i in ps;
writetext (stdout, "%C ", i);
od;
writetext(stdout, "%/");
end x;
y : proc (ps s_ps);
dcl i s;
do for i in ps;
writetext (stdout, "%C ", i);
od;
writetext(stdout, "%/");
end y;
 
dummy: proc ();
end dummy;
x([1,2,3]);
y([sa, sc]);
dummy ();
end hugo;
/tests1.ch
0,0 → 1,240
-- Copyright (C) 1992, 1995 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 2 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, write to the Free Software
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-- Please email any bugs, comments, and/or additions to this file to:
-- bug-gdb@prep.ai.mit.edu
 
--
-- test program 1 (refer to tests1.exp)
--
 
/* These functions are defined in libchill.a */
 
runtime: SPEC MODULE
DCL chill_argc long;
DCL chill_argv REF ARRAY (0:1000) REF CHARS (1000) VARYING;
__print_event: PROC (arg0 ptr,
arg1 ptr) END;
__print_buffer: PROC (arg0 ptr,
arg1 ptr) END;
GRANT ALL;
END;
 
tests1: module;
 
seize __print_event,
__print_buffer;
 
newmode set1 = set(aaa, bbb, ccc);
newmode nset1 = set(na = 1, nb = 34, nc = 20);
newmode r11 = range (0 : upper(ubyte));
newmode r12 = range (0 : upper(uint));
--newmode r13 = range (0 : upper(ulong)); -- bug in gnuchill
newmode r14 = range (lower(byte) : upper(byte));
newmode r15 = range (lower(int) : upper(int));
newmode r16 = range (lower(long): upper(long));
newmode r2 = set1(bbb : ccc);
newmode r3 = nset1(na : na);
newmode r4 = nset1(nc : nb);
newmode r5 = nset1(lower(nset1) : upper(nset1));
 
newmode pm1 = powerset set(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
newmode pm2 = powerset byte (1:8);
newmode pm3 = powerset int (-32768:32767);
newmode pm4 = powerset long (-32768:32768);
newmode pm5 = powerset long (lower(long):upper(long));
newmode ref1 = ref pm1;
newmode ref2 = ref byte;
newmode ref3 = ptr;
synmode ref4 = ptr;
synmode syn_int = int;
 
newmode prm1 = proc ();
newmode prm2 = proc (bool in, int out, long inout) returns (char);
newmode prm3 = proc (pm1, ref1 loc) returns (ref3);
newmode prm4 = proc () exceptions(ex1, ex2, ex3);
newmode prm5 = proc (r11, r16 inout, r5 out) returns (r2) exceptions (ex1);
 
newmode ev1m = event;
newmode ev2m = event (42);
 
newmode bu1m = buffer ref1;
newmode bu2m = buffer (42) ubyte;
 
newmode strm1 = char (5);
synmode strm2 = char (7) varying;
 
synmode bstr1 = bit(20);
--newmode bstr2 = bit(10) varying;
 
newmode arr1m = array(1:100) set1;
newmode arr2m = array(1:100, 1:100) set1;
newmode arr3m = array(r11, r12, r14) set1;
newmode arr4m = array(r2) array (r3) array (r4, r5) pm1;
newmode arr5m = array(1:10) int;
newmode arr6m = array(1:5, 1:3, 1:2) long;
 
newmode stru1m = struct (a, b long,
case b of
(42): ch1 chars(20),
(52): ch2 chars(10)
else ch3 chars(1)
esac);
 
newmode stru2m = struct (f set1,
case f of
(aaa): ch1 char(20),
(bbb): ch2 char(10) varying
else ch3 char(0) varying
esac);
newmode stru3m = struct (f r3,
case f of
(na): ch1 char(20)
esac);
newmode stru4m = struct (i long,
case of
: i1, i11 int,
b1 bool,
c1 char,
: i2, i22 long,
bs2 bools (10),
:
s3 struct (i3 int,
case of
: foo long
else bar char
esac)
else
x stru2m
esac,
y stru3m);
 
synmode m_xyzmode = struct (next ref m_xyzmode,
i long);
 
-- set mode locations
dcl s1l set1 := ccc;
dcl s2l nset1 := nb;
 
-- range mode locations
dcl rl1 r11 := 3;
dcl rl2 r11 := lower(r11);
dcl rl3 r11 := upper(r11);
 
dcl rl5 r12 := 65530;
dcl rl6 r12 := lower(r12);
dcl rl7 r12 := upper(r12);
 
--dcl rl9 r13 := 128;
--dcl rl10 r13 := lower(r13);
--dcl rl11 r13 := upper(r13);
 
dcl rl13 r14 := -121;
dcl rl14 r14 := lower(r14);
dcl rl15 r14 := upper(r14);
 
dcl rl17 r15 := -32720;
dcl rl18 r15 := lower(r15);
dcl rl19 r15 := upper(r15);
 
dcl rl21 r16 := 2147483643;
dcl rl22 r16 := lower(r16);
dcl rl23 r16 := upper(r16);
 
-- powerset mode locations
dcl pl1 pm1 := [p1:p10];
dcl pl2 pm1 := [];
dcl pl3 pm1 := [p1, p10];
dcl pl4 pm1 := [p1:p2, p4:p6, p8:p10];
dcl pl5 pm1 := [p1:p4, p6, p8:p10];
dcl pl6 pm1 := [p1, p3:p8, p10];
 
dcl pl7 pm2 := [1:8];
dcl pl8 pm3 := [-32768:32767];
--dcl pl9 pm5 := [-2147483648:2147483647];
 
-- reference mode locations
dcl ref3l ref3;
dcl ref4l ref4;
dcl ref5l, ref6l, ref7l, ref8l ptr;
dcl syn_intl1 syn_int := 42;
dcl intl1 int := -42;
 
-- synchronization mode locations
dcl ev1l ev1m;
dcl ev2l ev2m;
dcl bu1l bu1m;
dcl bu2l bu2m;
 
-- timing mode locations
dcl til1 time;
 
-- string mode locations
dcl strl1, strl2 strm2;
dcl bstrl1 bstr1 := B'10101010101010101010';
 
-- array mode locations
dcl arrl1 arr1m;
dcl arrl2 arr5m := [1, -1, 32767, -32768, 0, 10, 11, 12, 13, 42];
dcl arrl3 arr6m := [(1:5): [(1:3): [(1:2): -2147483648]]];
dcl arrl4 arr6m := [(1:2): [(1:3): [(1:2): -2147483648]],
(3): [(1:3): [(1:2): 100]],
(4:5): [(1:3): [(1:2): -2147483648]]];
dcl arrl5 array(1:10) nset1;
 
-- structure mode locations
dcl strul1 stru1m := [-2147483648, 42, "12345678900987654321"];
 
dummyfunc: proc();
end dummyfunc;
 
ref3l:=->pl1; -- newmode ref
ref4l:=->pl1; -- synmode ref
ref5l:=->pl1; -- ptr
 
ref6l:=->syn_intl1; -- ref to synmode
ref7l:=->intl1; -- ref to predefined mode
ref8l:=->pl1; -- ref to newmode
 
strl1 := "ha" // C'6e' // "s" // "i" // C'00';
strl2 := C'00' // "ope";
 
__print_event(addr(ev1l), addr("ev1l"));
__print_event(addr(ev2l), addr("ev2l"));
__print_buffer(addr(bu1l), addr("bu1m"));
__print_buffer(addr(bu2l), addr("bu2m"));
 
til1 := abstime(1970, 3, 12, 10, 43, 0);
writetext(stdout, "lower(pm3) = %C; upper(pm3) = %C%..%/",
lower(pm3), upper(pm3));
writetext(stdout, "lower(pm5) = %C; upper(pm5) = %C%..%/",
lower(pm5), upper(pm5));
--writetext(stdout, "lower(pl9) = %C; upper(pl9) = %C%..%/",
-- lower(pl9), upper(pl9));
writetext(stdout, "date = %C%..%/", til1);
 
writetext(stdout, "slice1 = %C%..%/", strl1(3 : 5));
writetext(stdout, "slice2 = %C%..%/", strl2(0 : 3));
--writetext(stdout, "slice3 = %C%..%/", strl1(0 up 20));
writetext(stdout, "slice4 = %C%..%/", bstrl1(0));
--writetext(stdout, "slice5 = %C%..%/", arrl3(1:5));
 
 
writetext(stdout, "done.%/");
 
dummyfunc();
 
end tests1;
/pr-9095.ch
0,0 → 1,13
gdb1: MODULE
 
SYNMODE m_arr1 = ARRAY (1:10) UBYTE;
SYNMODE m_struct = STRUCT ( i LONG,
p REF m_arr1);
SYNMODE m_arr2 = ARRAY (0:10) REF m_struct;
 
DCL v_arr1 m_arr1 INIT := [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
DCL v_struct m_struct INIT := [ 10, ->v_arr1 ];
DCL v_arr2 m_arr2 INIT := [ (5): ->v_struct, (ELSE): NULL ];
 
WRITETEXT (stdout, "v_arr2(5)->.p->(5) = %C%/", v_arr2(5)->.p->(5));
END gdb1;
/pr-8894-grt.ch
0,0 → 1,6
yy: MODULE
 
SYNMODE m_byte = INT (0:255);
GRANT ALL;
 
END yy;
/configure
0,0 → 1,899
#! /bin/sh
 
# Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf version 2.12.1
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
 
# Defaults:
ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
 
# Initialize some variables set by options.
# The variables have the same names as the options, with
# dashes changed to underlines.
build=NONE
cache_file=./config.cache
exec_prefix=NONE
host=NONE
no_create=
nonopt=NONE
no_recursion=
prefix=NONE
program_prefix=NONE
program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
srcdir=
target=NONE
verbose=
x_includes=NONE
x_libraries=NONE
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
datadir='${prefix}/share'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
oldincludedir='/usr/include'
infodir='${prefix}/info'
mandir='${prefix}/man'
 
# Initialize some other variables.
subdirs=
MFLAGS= MAKEFLAGS=
SHELL=${CONFIG_SHELL-/bin/sh}
# Maximum number of lines to put in a shell here document.
ac_max_here_lines=12
 
ac_prev=
for ac_option
do
 
# If the previous option needs an argument, assign it.
if test -n "$ac_prev"; then
eval "$ac_prev=\$ac_option"
ac_prev=
continue
fi
 
case "$ac_option" in
-*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) ac_optarg= ;;
esac
 
# Accept the important Cygnus configure options, so we can diagnose typos.
 
case "$ac_option" in
 
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
bindir="$ac_optarg" ;;
 
-build | --build | --buil | --bui | --bu)
ac_prev=build ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
build="$ac_optarg" ;;
 
-cache-file | --cache-file | --cache-fil | --cache-fi \
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
ac_prev=cache_file ;;
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
cache_file="$ac_optarg" ;;
 
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
ac_prev=datadir ;;
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
| --da=*)
datadir="$ac_optarg" ;;
 
-disable-* | --disable-*)
ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
{ echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
fi
ac_feature=`echo $ac_feature| sed 's/-/_/g'`
eval "enable_${ac_feature}=no" ;;
 
-enable-* | --enable-*)
ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
{ echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
fi
ac_feature=`echo $ac_feature| sed 's/-/_/g'`
case "$ac_option" in
*=*) ;;
*) ac_optarg=yes ;;
esac
eval "enable_${ac_feature}='$ac_optarg'" ;;
 
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
| --exec | --exe | --ex)
ac_prev=exec_prefix ;;
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
exec_prefix="$ac_optarg" ;;
 
-gas | --gas | --ga | --g)
# Obsolete; use --with-gas.
with_gas=yes ;;
 
-help | --help | --hel | --he)
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat << EOF
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
--cache-file=FILE cache test results in FILE
--help print this message
--no-create do not create output files
--quiet, --silent do not print \`checking...' messages
--version print the version of autoconf that created configure
Directory and file names:
--prefix=PREFIX install architecture-independent files in PREFIX
[$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[same as prefix]
--bindir=DIR user executables in DIR [EPREFIX/bin]
--sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
--libexecdir=DIR program executables in DIR [EPREFIX/libexec]
--datadir=DIR read-only architecture-independent data in DIR
[PREFIX/share]
--sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data in DIR
[PREFIX/com]
--localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
--libdir=DIR object code libraries in DIR [EPREFIX/lib]
--includedir=DIR C header files in DIR [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
--infodir=DIR info documentation in DIR [PREFIX/info]
--mandir=DIR man documentation in DIR [PREFIX/man]
--srcdir=DIR find the sources in DIR [configure dir or ..]
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM
run sed PROGRAM on installed program names
EOF
cat << EOF
Host type:
--build=BUILD configure for building on BUILD [BUILD=HOST]
--host=HOST configure for HOST [guessed]
--target=TARGET configure for TARGET [TARGET=HOST]
Features and packages:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--x-includes=DIR X include files are in DIR
--x-libraries=DIR X library files are in DIR
EOF
if test -n "$ac_help"; then
echo "--enable and --with options recognized:$ac_help"
fi
exit 0 ;;
 
-host | --host | --hos | --ho)
ac_prev=host ;;
-host=* | --host=* | --hos=* | --ho=*)
host="$ac_optarg" ;;
 
-includedir | --includedir | --includedi | --included | --include \
| --includ | --inclu | --incl | --inc)
ac_prev=includedir ;;
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
includedir="$ac_optarg" ;;
 
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
infodir="$ac_optarg" ;;
 
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
libdir="$ac_optarg" ;;
 
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
| --libexe | --libex | --libe)
ac_prev=libexecdir ;;
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
libexecdir="$ac_optarg" ;;
 
-localstatedir | --localstatedir | --localstatedi | --localstated \
| --localstate | --localstat | --localsta | --localst \
| --locals | --local | --loca | --loc | --lo)
ac_prev=localstatedir ;;
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
localstatedir="$ac_optarg" ;;
 
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
mandir="$ac_optarg" ;;
 
-nfp | --nfp | --nf)
# Obsolete; use --without-fp.
with_fp=no ;;
 
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
| --no-cr | --no-c)
no_create=yes ;;
 
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
no_recursion=yes ;;
 
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
| --oldin | --oldi | --old | --ol | --o)
ac_prev=oldincludedir ;;
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
oldincludedir="$ac_optarg" ;;
 
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
prefix="$ac_optarg" ;;
 
-program-prefix | --program-prefix | --program-prefi | --program-pref \
| --program-pre | --program-pr | --program-p)
ac_prev=program_prefix ;;
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
program_prefix="$ac_optarg" ;;
 
-program-suffix | --program-suffix | --program-suffi | --program-suff \
| --program-suf | --program-su | --program-s)
ac_prev=program_suffix ;;
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
program_suffix="$ac_optarg" ;;
 
-program-transform-name | --program-transform-name \
| --program-transform-nam | --program-transform-na \
| --program-transform-n | --program-transform- \
| --program-transform | --program-transfor \
| --program-transfo | --program-transf \
| --program-trans | --program-tran \
| --progr-tra | --program-tr | --program-t)
ac_prev=program_transform_name ;;
-program-transform-name=* | --program-transform-name=* \
| --program-transform-nam=* | --program-transform-na=* \
| --program-transform-n=* | --program-transform-=* \
| --program-transform=* | --program-transfor=* \
| --program-transfo=* | --program-transf=* \
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
program_transform_name="$ac_optarg" ;;
 
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
 
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
sbindir="$ac_optarg" ;;
 
-sharedstatedir | --sharedstatedir | --sharedstatedi \
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
| --sharedst | --shareds | --shared | --share | --shar \
| --sha | --sh)
ac_prev=sharedstatedir ;;
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
sharedstatedir="$ac_optarg" ;;
 
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
site="$ac_optarg" ;;
 
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
srcdir="$ac_optarg" ;;
 
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
| --syscon | --sysco | --sysc | --sys | --sy)
ac_prev=sysconfdir ;;
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
sysconfdir="$ac_optarg" ;;
 
-target | --target | --targe | --targ | --tar | --ta | --t)
ac_prev=target ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
target="$ac_optarg" ;;
 
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
 
-version | --version | --versio | --versi | --vers)
echo "configure generated by autoconf version 2.12.1"
exit 0 ;;
 
-with-* | --with-*)
ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
{ echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
fi
ac_package=`echo $ac_package| sed 's/-/_/g'`
case "$ac_option" in
*=*) ;;
*) ac_optarg=yes ;;
esac
eval "with_${ac_package}='$ac_optarg'" ;;
 
-without-* | --without-*)
ac_package=`echo $ac_option|sed -e 's/-*without-//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
{ echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
fi
ac_package=`echo $ac_package| sed 's/-/_/g'`
eval "with_${ac_package}=no" ;;
 
--x)
# Obsolete; use --with-x.
with_x=yes ;;
 
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
| --x-incl | --x-inc | --x-in | --x-i)
ac_prev=x_includes ;;
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
x_includes="$ac_optarg" ;;
 
-x-libraries | --x-libraries | --x-librarie | --x-librari \
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
ac_prev=x_libraries ;;
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries="$ac_optarg" ;;
 
-*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
;;
 
*)
if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
echo "configure: warning: $ac_option: invalid host type" 1>&2
fi
if test "x$nonopt" != xNONE; then
{ echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
fi
nonopt="$ac_option"
;;
 
esac
done
 
if test -n "$ac_prev"; then
{ echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
fi
 
trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
 
# File descriptor usage:
# 0 standard input
# 1 file creation
# 2 errors and warnings
# 3 some systems may open it to /dev/tty
# 4 used on the Kubota Titan
# 6 checking for... messages and results
# 5 compiler messages saved in config.log
if test "$silent" = yes; then
exec 6>/dev/null
else
exec 6>&1
fi
exec 5>./config.log
 
echo "\
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
" 1>&5
 
# Strip out --no-create and --no-recursion so they do not pile up.
# Also quote any args containing shell metacharacters.
ac_configure_args=
for ac_arg
do
case "$ac_arg" in
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
| --no-cr | --no-c) ;;
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
*" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
ac_configure_args="$ac_configure_args '$ac_arg'" ;;
*) ac_configure_args="$ac_configure_args $ac_arg" ;;
esac
done
 
# NLS nuisances.
# Only set these to C if already set. These must not be set unconditionally
# because not all systems understand e.g. LANG=C (notably SCO).
# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
# Non-C LC_CTYPE values break the ctype check.
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
 
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -rf conftest* confdefs.h
# AIX cpp loses on an empty file, so make sure it contains at least a newline.
echo > confdefs.h
 
# A filename unique to this package, relative to the directory that
# configure is in, which we can look for to find out if srcdir is correct.
ac_unique_file=chexp.exp
 
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then its parent.
ac_prog=$0
ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
srcdir=$ac_confdir
if test ! -r $srcdir/$ac_unique_file; then
srcdir=..
fi
else
ac_srcdir_defaulted=no
fi
if test ! -r $srcdir/$ac_unique_file; then
if test "$ac_srcdir_defaulted" = yes; then
{ echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
else
{ echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
fi
fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
 
# Prefer explicitly selected file to automatically selected ones.
if test -z "$CONFIG_SITE"; then
if test "x$prefix" != xNONE; then
CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
else
CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
echo "loading site script $ac_site_file"
. "$ac_site_file"
fi
done
 
if test -r "$cache_file"; then
echo "loading cache $cache_file"
. $cache_file
else
echo "creating cache $cache_file"
> $cache_file
fi
 
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cc_cross
 
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
ac_n= ac_c='
' ac_t=' '
else
ac_n=-n ac_c= ac_t=
fi
else
ac_n= ac_c='\c' ac_t=
fi
 
 
 
CC=${CC-cc}
 
ac_aux_dir=
for ac_dir in `cd $srcdir;pwd`/../../.. $srcdir/`cd $srcdir;pwd`/../../..; do
if test -f $ac_dir/install-sh; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install-sh -c"
break
elif test -f $ac_dir/install.sh; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install.sh -c"
break
fi
done
if test -z "$ac_aux_dir"; then
{ echo "configure: error: can not find install-sh or install.sh in `cd $srcdir;pwd`/../../.. $srcdir/`cd $srcdir;pwd`/../../.." 1>&2; exit 1; }
fi
ac_config_guess=$ac_aux_dir/config.guess
ac_config_sub=$ac_aux_dir/config.sub
ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 
 
# Do some error checking and defaulting for the host and target type.
# The inputs are:
# configure --host=HOST --target=TARGET --build=BUILD NONOPT
#
# The rules are:
# 1. You are not allowed to specify --host, --target, and nonopt at the
# same time.
# 2. Host defaults to nonopt.
# 3. If nonopt is not specified, then host defaults to the current host,
# as determined by config.guess.
# 4. Target and build default to nonopt.
# 5. If nonopt is not specified, then target and build default to host.
 
# The aliases save the names the user supplied, while $host etc.
# will get canonicalized.
case $host---$target---$nonopt in
NONE---*---* | *---NONE---* | *---*---NONE) ;;
*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
esac
 
 
# Make sure we can run config.sub.
if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
 
echo $ac_n "checking host system type""... $ac_c" 1>&6
echo "configure:573: checking host system type" >&5
 
host_alias=$host
case "$host_alias" in
NONE)
case $nonopt in
NONE)
if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
fi ;;
*) host_alias=$nonopt ;;
esac ;;
esac
 
host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
 
echo $ac_n "checking target system type""... $ac_c" 1>&6
echo "configure:594: checking target system type" >&5
 
target_alias=$target
case "$target_alias" in
NONE)
case $nonopt in
NONE) target_alias=$host_alias ;;
*) target_alias=$nonopt ;;
esac ;;
esac
 
target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
 
echo $ac_n "checking build system type""... $ac_c" 1>&6
echo "configure:612: checking build system type" >&5
 
build_alias=$build
case "$build_alias" in
NONE)
case $nonopt in
NONE) build_alias=$host_alias ;;
*) build_alias=$nonopt ;;
esac ;;
esac
 
build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$build" 1>&6
 
test "$host_alias" != "$target_alias" &&
test "$program_prefix$program_suffix$program_transform_name" = \
NONENONEs,x,x, &&
program_prefix=${target_alias}-
 
 
trap '' 1 2 15
cat > confcache <<\EOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
# scripts and configure runs. It is not useful on other systems.
# If it contains results you don't want to keep, you may remove or edit it.
#
# By default, configure uses ./config.cache as the cache file,
# creating it if it does not exist already. You can give configure
# the --cache-file=FILE option to use a different cache file; that is
# what configure does when it calls configure scripts in
# subdirectories, so they share the cache.
# Giving --cache-file=/dev/null disables caching, for debugging configure.
# config.status only pays attention to the cache file if you give it the
# --recheck option to rerun configure.
#
EOF
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, don't put newlines in cache variables' values.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(set) 2>&1 |
case `(ac_space=' '; set) 2>&1 | grep ac_space` in
*ac_space=\ *)
# `set' does not quote correctly, so add quotes (double-quote substitution
# turns \\\\ into \\, and sed turns \\ into \).
sed -n \
-e "s/'/'\\\\''/g" \
-e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
;;
*)
# `set' quotes correctly as required by POSIX, so do not add quotes.
sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
;;
esac >> confcache
if cmp -s $cache_file confcache; then
:
else
if test -w $cache_file; then
echo "updating cache $cache_file"
cat confcache > $cache_file
else
echo "not updating unwritable cache $cache_file"
fi
fi
rm -f confcache
 
trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
 
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 
# Any assignment to VPATH causes Sun make to only execute
# the first set of double-colon rules, so remove it if not needed.
# If there is a colon in the path, we need to keep it.
if test "x$srcdir" = x.; then
ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
fi
 
trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
 
# Transform confdefs.h into DEFS.
# Protect against shell expansion while executing Makefile rules.
# Protect against Makefile macro expansion.
cat > conftest.defs <<\EOF
s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
s%\[%\\&%g
s%\]%\\&%g
s%\$%$$%g
EOF
DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
rm -f conftest.defs
 
 
# Without the "./", some shells look in PATH for config.status.
: ${CONFIG_STATUS=./config.status}
 
echo creating $CONFIG_STATUS
rm -f $CONFIG_STATUS
cat > $CONFIG_STATUS <<EOF
#! /bin/sh
# Generated automatically by configure.
# Run this file to recreate the current configuration.
# This directory was configured as follows,
# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
#
# $0 $ac_configure_args
#
# Compiler output produced by configure, useful for debugging
# configure, is in ./config.log if it exists.
 
ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
for ac_option
do
case "\$ac_option" in
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
echo "$CONFIG_STATUS generated by autoconf version 2.12.1"
exit 0 ;;
-help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;;
*) echo "\$ac_cs_usage"; exit 1 ;;
esac
done
 
ac_given_srcdir=$srcdir
 
trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
 
# Protect against being on the right side of a sed subst in config.status.
sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
$ac_vpsub
$extrasub
s%@SHELL@%$SHELL%g
s%@CFLAGS@%$CFLAGS%g
s%@CPPFLAGS@%$CPPFLAGS%g
s%@CXXFLAGS@%$CXXFLAGS%g
s%@DEFS@%$DEFS%g
s%@LDFLAGS@%$LDFLAGS%g
s%@LIBS@%$LIBS%g
s%@exec_prefix@%$exec_prefix%g
s%@prefix@%$prefix%g
s%@program_transform_name@%$program_transform_name%g
s%@bindir@%$bindir%g
s%@sbindir@%$sbindir%g
s%@libexecdir@%$libexecdir%g
s%@datadir@%$datadir%g
s%@sysconfdir@%$sysconfdir%g
s%@sharedstatedir@%$sharedstatedir%g
s%@localstatedir@%$localstatedir%g
s%@libdir@%$libdir%g
s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
s%@CC@%$CC%g
s%@host@%$host%g
s%@host_alias@%$host_alias%g
s%@host_cpu@%$host_cpu%g
s%@host_vendor@%$host_vendor%g
s%@host_os@%$host_os%g
s%@target@%$target%g
s%@target_alias@%$target_alias%g
s%@target_cpu@%$target_cpu%g
s%@target_vendor@%$target_vendor%g
s%@target_os@%$target_os%g
s%@build@%$build%g
s%@build_alias@%$build_alias%g
s%@build_cpu@%$build_cpu%g
s%@build_vendor@%$build_vendor%g
s%@build_os@%$build_os%g
 
CEOF
EOF
 
cat >> $CONFIG_STATUS <<\EOF
 
# Split the substitutions into bite-sized pieces for seds with
# small command number limits, like on Digital OSF/1 and HP-UX.
ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
ac_file=1 # Number of current file.
ac_beg=1 # First line for current file.
ac_end=$ac_max_sed_cmds # Line after last line for current file.
ac_more_lines=:
ac_sed_cmds=""
while $ac_more_lines; do
if test $ac_beg -gt 1; then
sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
else
sed "${ac_end}q" conftest.subs > conftest.s$ac_file
fi
if test ! -s conftest.s$ac_file; then
ac_more_lines=false
rm -f conftest.s$ac_file
else
if test -z "$ac_sed_cmds"; then
ac_sed_cmds="sed -f conftest.s$ac_file"
else
ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
fi
ac_file=`expr $ac_file + 1`
ac_beg=$ac_end
ac_end=`expr $ac_end + $ac_max_sed_cmds`
fi
done
if test -z "$ac_sed_cmds"; then
ac_sed_cmds=cat
fi
EOF
 
cat >> $CONFIG_STATUS <<EOF
 
CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case "$ac_file" in
*:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
*) ac_file_in="${ac_file}.in" ;;
esac
 
# Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
 
# Remove last slash and all that follows it. Not all systems have dirname.
ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
# The file is in a subdirectory.
test ! -d "$ac_dir" && mkdir "$ac_dir"
ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
# A "../" for each directory in $ac_dir_suffix.
ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
else
ac_dir_suffix= ac_dots=
fi
 
case "$ac_given_srcdir" in
.) srcdir=.
if test -z "$ac_dots"; then top_srcdir=.
else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
/*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
*) # Relative path.
srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
 
 
echo creating "$ac_file"
rm -f "$ac_file"
configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
case "$ac_file" in
*Makefile*) ac_comsub="1i\\
# $configure_input" ;;
*) ac_comsub= ;;
esac
 
ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
sed -e "$ac_comsub
s%@configure_input@%$configure_input%g
s%@srcdir@%$srcdir%g
s%@top_srcdir@%$top_srcdir%g
" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
fi; done
rm -f conftest.s*
 
EOF
cat >> $CONFIG_STATUS <<EOF
 
EOF
cat >> $CONFIG_STATUS <<\EOF
 
exit 0
EOF
chmod +x $CONFIG_STATUS
rm -fr confdefs* $ac_clean_files
test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
 
configure Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: pr-4975.exp =================================================================== --- pr-4975.exp (nonexistent) +++ pr-4975.exp (revision 1765) @@ -0,0 +1,67 @@ +# Copyright (C) 1992, 1994, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Per Bothner. (bothner@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile2 "pr-4975-grt" +set srcfile2 ${srcdir}/$subdir/${testfile2}.ch +set objfile2 ${objdir}/$subdir/${testfile2}.o +if { [compile "${srcfile2} -g -c -o ${objfile2}"] != "" } { + perror "Couldn't compile ${srcfile2}" + return -1 +} + +set testfile "pr-4975" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g ${objfile2} -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +proc do_tests {} { + global prms_id bug_id subdir objdir srcdir binfile gdb_prompt + + set prms_id 0 + set bug_id 0 + + # Start with a fresh gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile + + gdb_test "set language chill" "" + + # This is needed (at least on SunOS4) to make sure the + # the symbol table is read. + runto "x" + # "You loose"? Why, thank you. (But I suspect "You lose" might have + # been what was intended). + gdb_test "finish" "You loose.*" "Runs and reads symbols OK" +} + +do_tests Index: chillvars.exp =================================================================== --- chillvars.exp (nonexistent) +++ chillvars.exp (revision 1765) @@ -0,0 +1,316 @@ +# Copyright (C) 1992, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Fred Fish. (fnf@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "chillvars" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +proc do_tests {} { + global prms_id bug_id subdir objdir srcdir binfile gdb_prompt + + set prms_id 0 + set bug_id 0 + + # Start with a fresh gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile + + gdb_test "set language chill" "" + + # This is needed (at least on SunOS4) to make sure the + # the symbol table is read. + gdb_test "break chillvars.ch:3" "" + gdb_test "delete 1" "" + + gdb_test "set width 0" "" + gdb_test "set print sevenbit-strings" "" + gdb_test "set print address off" "" + + test_BOOL + test_CHAR + test_BYTE + test_UBYTE + test_INT + test_UINT + test_LONG + test_ULONG + test_REAL + test_LONG_REAL + test_POWERSET + test_arrays + test_strings + test_structs + + test_ptr +} + +proc test_BOOL {} { + + gdb_test "ptype bool_true" "type = (BOOL|bool)" + gdb_test "ptype bool_false" "type = (BOOL|bool)" + gdb_test "whatis bool_true" "type = (BOOL|bool)" + gdb_test "whatis bool_false" "type = (BOOL|bool)" + gdb_test "print bool_false" " = FALSE" + gdb_test "print bool_true" " = TRUE" + +} + +proc test_CHAR {} { + gdb_test "ptype control_char" "type = (CHAR|char)" + gdb_test "whatis control_char" "type = (CHAR|char)" + gdb_test "print control_char" { = '\^[(]7[)]'} + gdb_test "ptype printable_char" "type = (CHAR|char)" + gdb_test "whatis printable_char" "type = (CHAR|char)" + gdb_test "print printable_char" " = 'a'" + + gdb_test "print lower(char)" { = '\^[(]0[)]'} + gdb_test "print upper(char)" { = '\^[(]255[)]'} +} + +proc test_BYTE {} { + gdb_test "ptype byte_low" "type = (BYTE|byte)" + gdb_test "whatis byte_low" "type = (BYTE|byte)" + gdb_test "print byte_low" " = -128" + gdb_test "ptype byte_high" "type = (BYTE|byte)" + gdb_test "whatis byte_high" "type = (BYTE|byte)" + gdb_test "print byte_high" " = 127" + + gdb_test "print lower(byte)" " = -128" + gdb_test "print upper(byte)" " = 127" + gdb_test "print lower(byte_high)" " = -128" + gdb_test "print upper(byte_high)" " = 127" +} + +proc test_UBYTE {} { + gdb_test "ptype ubyte_low" "type = (UBYTE|ubyte)" + gdb_test "whatis ubyte_low" "type = (UBYTE|ubyte)" + gdb_test "print ubyte_low" " = 0" + gdb_test "ptype ubyte_high" "type = (UBYTE|ubyte)" + gdb_test "whatis ubyte_high" "type = (UBYTE|ubyte)" + gdb_test "print ubyte_high" " = 255" +} + +proc test_INT {} { + gdb_test "ptype int_low" "type = (INT|int)" + gdb_test "whatis int_low" "type = (INT|int)" + gdb_test "print int_low" " = -32768" + gdb_test "ptype int_high" "type = (INT|int)" + gdb_test "whatis int_high" "type = (INT|int)" + gdb_test "print int_high" " = 32767" +} + +proc test_UINT {} { + gdb_test "ptype uint_low" "type = (UINT|uint)" + gdb_test "whatis uint_low" "type = (UINT|uint)" + gdb_test "print uint_low" " = 0" + gdb_test "ptype uint_high" "type = (UINT|uint)" + gdb_test "whatis uint_high" "type = (UINT|uint)" + gdb_test "print uint_high" " = 65535" +} + +proc test_LONG {} { + gdb_test "ptype long_low" "type = (LONG|long)" + gdb_test "whatis long_low" "type = (LONG|long)" + gdb_test "print long_low" " = -2147483648" + gdb_test "ptype long_high" "type = (LONG|long)" + gdb_test "whatis long_high" "type = (LONG|long)" + gdb_test "print long_high" " = 2147483647" +} + +proc test_ULONG {} { + gdb_test "ptype ulong_low" "type = (ULONG|ulong)" + gdb_test "whatis ulong_low" "type = (ULONG|ulong)" + gdb_test "print ulong_low" " = 0" + gdb_test "ptype ulong_high" "type = (ULONG|ulong)" + gdb_test "whatis ulong_high" "type = (ULONG|ulong)" + gdb_test "print ulong_high" " = 4294967295" +} + +proc test_REAL {} { + gdb_test "ptype real1" "type = (FLOAT|float)" + gdb_test "whatis real1" "type = (FLOAT|float)" + gdb_test "print real1" " = 3.14159274" +} + +proc test_LONG_REAL {} { + gdb_test "ptype long_real1" "type = (DOUBLE|double)" + gdb_test "whatis long_real1" "type = (DOUBLE|double)" + gdb_test "print long_real1" " = 3\\.1400000000000001e\\+300" +} + +proc test_POWERSET {} { +} + +proc test_arrays {} { + gdb_test "ptype booltable1" "type = ARRAY \\(+0:3\\)+ (BOOL|bool)" + gdb_test_exact "print booltable1" \ + { = [(0): TRUE, (1:2): FALSE, (3): TRUE]} + + gdb_test "ptype booltable2" "type = ARRAY \\(+4:7\\)+ (BOOL|bool)" + gdb_test_exact "print booltable2" { = [(4): TRUE, (5:6): FALSE, (7): TRUE]} + + gdb_test "ptype chartable1" "type = ARRAY \\(+0:2\\)+ (CHAR|char)" + gdb_test_exact "print chartable1" {= [(0): '^(0)', (1): '^(1)', (2): '^(2)']} + + gdb_test "ptype chartable2" "type = ARRAY \\(+3:5\\)+ (CHAR|char)" + gdb_test_exact "print chartable2" \ + {= [(3): '^(0)', (4): '^(1)', (5): '^(2)']} + + gdb_test "ptype bytetable1" "type = ARRAY \\(+0:4\\)+ (BYTE|byte)" + gdb_test_exact "print bytetable1" \ + {= [(0): -2, (1): -1, (2): 0, (3): 1, (4): 2]} + + gdb_test "ptype bytetable2" "type = ARRAY \\(+5:9\\)+ (BYTE|byte)" + gdb_test_exact "print bytetable2" \ + {= [(5): -2, (6): -1, (7): 0, (8): 1, (9): 2]} + + gdb_test "ptype bytetable3" \ + "type = ARRAY \\(1:2\\) ARRAY \\('c':'d'\\) ARRAY \\(FALSE:TRUE\\) (BYTE|byte)" + gdb_test_exact "print bytetable3" \ + {= [(1): [('c'): [(FALSE): 0, (TRUE): 1], ('d'): [(FALSE): 2, (TRUE): 3]], (2): [('c'): [(FALSE): 4, (TRUE): 5], ('d'): [(FALSE): 6, (TRUE): 7]]]} + gdb_test "ptype bytetable4" \ + "type = ARRAY \\(1:2\\) ARRAY \\('c':'d'\\) ARRAY \\(FALSE:TRUE\\) (BYTE|byte)" + gdb_test_exact "print bytetable4" \ + {= [(1): [('c'): [(FALSE): 0, (TRUE): 1], ('d'): [(FALSE): 2, (TRUE): 3]], (2): [('c'): [(FALSE): 4, (TRUE): 5], ('d'): [(FALSE): 6, (TRUE): 7]]]} + + gdb_test "ptype ubytetable1" "type = ARRAY \\(+0:4\\)+ (UBYTE|ubyte)" + gdb_test_exact "print ubytetable1" \ + {= [(0): 0, (1): 1, (2): 2, (3): 3, (4): 4]} + + gdb_test "ptype ubytetable2" "type = ARRAY \\(+5:9\\)+ (UBYTE|ubyte)" + gdb_test_exact "print ubytetable2" \ + {= [(5): 0, (6): 1, (7): 2, (8): 3, (9): 4]} + + gdb_test "ptype inttable1" "type = ARRAY \\(+0:4\\)+ (INT|int)" + gdb_test_exact "print inttable1" \ + {= [(0): -2, (1): -1, (2): 0, (3): 1, (4): 2]} + + gdb_test "ptype inttable2" "type = ARRAY \\(+5:9\\)+ (INT|int)" + gdb_test_exact "print inttable2" \ + {= [(5): -2, (6): -1, (7): 0, (8): 1, (9): 2]} + + gdb_test "ptype uinttable1" "type = ARRAY \\(+0:4\\)+ (UINT|uint)" + gdb_test_exact "print uinttable1" \ + {= [(0): 0, (1): 1, (2): 2, (3): 3, (4): 4]} + + gdb_test "ptype uinttable2" "type = ARRAY \\(+5:9\\)+ (UINT|uint)" + gdb_test_exact "print uinttable2" \ + {= [(5): 0, (6): 1, (7): 2, (8): 3, (9): 4]} + + gdb_test "ptype longtable1" "type = ARRAY \\(+0:4\\)+ (LONG|long)" + gdb_test_exact "print longtable1" \ + {= [(0): -2, (1): -1, (2): 0, (3): 1, (4): 2]} + + gdb_test "ptype longtable2" "type = ARRAY \\(+5:9\\)+ (LONG|long)" + gdb_test_exact "print longtable2" \ + {= [(5): -2, (6): -1, (7): 0, (8): 1, (9): 2]} + + gdb_test "ptype ulongtable1" "type = ARRAY \\(+0:4\\)+ (ULONG|ulong)" + gdb_test_exact "print ulongtable1" \ + {= [(0): 0, (1): 1, (2): 2, (3): 3, (4): 4]} + + gdb_test "ptype ulongtable2" "type = ARRAY \\(+5:9\\)+ (ULONG|ulong)" + gdb_test_exact "print ulongtable2" \ + {= [(5): 0, (6): 1, (7): 2, (8): 3, (9): 4]} + + gdb_test "ptype realtable1" "type = ARRAY \\(+0:4\\)+ (FLOAT|float)" + gdb_test_exact "print realtable1" \ + {= [(0): -2, (1): -1, (2): 0, (3): 1, (4): 2]} + + gdb_test "ptype realtable2" "type = ARRAY \\(+5:9\\)+ (FLOAT|float)" + gdb_test_exact "print realtable2" \ + {= [(5): -2, (6): -1, (7): 0, (8): 1, (9): 2]} + + gdb_test "ptype longrealtable1" "type = ARRAY \\(+0:4\\)+ (DOUBLE|double)" + gdb_test_exact "print longrealtable1" \ + {= [(0): -2, (1): -1, (2): 0, (3): 1, (4): 2]} + + gdb_test "ptype longrealtable2" "type = ARRAY \\(+5:9\\)+ (DOUBLE|double)" + gdb_test_exact "print longrealtable2" \ + {= [(5): -2, (6): -1, (7): 0, (8): 1, (9): 2]} + + gdb_test "print length(longrealtable2)" {= 5} + gdb_test "print lower(longrealtable2)" {= 5} + gdb_test "print upper(longrealtable2)" {= 9} +} + +proc test_strings {} { + + gdb_test "ptype string1" "type = CHARS \[(\]4\[)\]+" + gdb_test "print string1" " = \"abcd\"" + + gdb_test "ptype string2" "type = CHARS \[(\]+5\[)\]+" + gdb_test "print string2" { = \"ef\^\(0\)gh\"} + + gdb_test "ptype string3" "type = CHARS \[(\]+6\[)\]+" + gdb_test "print string3" " = \"efghij\"" + + gdb_test "ptype string4" "type = CHARS \[(\]+7\[)\]+" + gdb_test "print string4" { = \"zzzzzz\^\(0\)\"} + + # These tests require a running process, so run to one of the procs + # and then do the tests. + + if [runto scalar_arithmetic] then { + gdb_test "ptype string1//string2" "type = CHARS \\(9\\)" + gdb_test "print string1//string2" { = \"abcdef\^\(0\)gh\"} + gdb_test_exact {ptype "a chill string"} {type = CHARS (14)} + gdb_test "print 'a chill string'" " = \"a chill string\"" + gdb_test "print \"ef\"//c'00'//\"gh\"" { = \"ef\^\(0\)gh\"} + gdb_test "print string1 // \"efgh\"" " = \"abcdefgh\"" + gdb_test "print (6) 'z'" " = \"zzzzzz\"" + gdb_test "ptype (6) 'z'" "type = CHARS \[(\]+6\[)\]+" + gdb_test "print (1+2*3) 'x'" " = \"xxxxxxx\"" + gdb_test "ptype (1+2*3) 'x'" "type = CHARS \[(\]+7\[)\]+" + } + +} + +proc test_structs {} { + gdb_test "ptype struct1" \ + "type = STRUCT \\(+.*abool (BOOL|bool),.*aint (INT|int),.*astring CHARS \\(+8\\)+.*\\)+" + gdb_test "print struct1" \ + ".* = \\\[\.abool: TRUE, \.aint: 123, \.astring: \"a string\"\\\]" + gdb_test "ptype struct2" \ + "type = STRUCT \\(+.*abool (BOOL|bool),.*nstruct simple_struct,.*aint (INT|int).*\\)+" + gdb_test "print struct2" \ + ".* = \\\[.abool: TRUE, \.nstruct: \\\[\.abool: FALSE, \.aint: 456, \.astring: \"deadbeef\"\\\], \.aint: 789\\\]" +} + +proc test_ptr {} { + # This is to test Cygnus PR 6932 + gdb_test "print xptr->int" ".* = 32767" +} + +do_tests Index: pr-9946.ch =================================================================== --- pr-9946.ch (nonexistent) +++ pr-9946.ch (revision 1765) @@ -0,0 +1,10 @@ +x: module + +synmode aset = SET (stopped, moving); + +DCL xyz aset; + +xyz := moving; +xyz := SUCC (xyz); + +END x; Index: pr-5984.exp =================================================================== --- pr-5984.exp (nonexistent) +++ pr-5984.exp (revision 1765) @@ -0,0 +1,57 @@ +# Copyright (C) 1992, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Per Bothner. (bothner@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "pr-5984" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +proc do_tests {} { + global prms_id bug_id subdir objdir srcdir binfile gdb_prompt + + set prms_id 0 + set bug_id 0 + + # Start with a fresh gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile + + send_gdb "set language chill\n" ; + + gdb_test "break pr-5984.ch:6" "" + send_gdb "run\n"; gdb_expect -re "Breakpoint .*pr-5984.ch:6" + gdb_expect -re "$gdb_prompt $" + gdb_test "next" "Jason Dark.*" "next over Jason Dark" +} + +do_tests Index: pr-9946.exp =================================================================== --- pr-9946.exp (nonexistent) +++ pr-9946.exp (revision 1765) @@ -0,0 +1,79 @@ +# Copyright (C) 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Fred Fish. (fnf@cygnus.com) +# Martin Pottendorfer (pottendo@aut.alcatel.at) +# + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "pr-9946" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +# Set the current language to chill. This counts as a test. If it +# fails, then we skip the other tests. + +proc set_lang_chill {} { + global gdb_prompt + global binfile objdir subdir + + verbose "loading file '$binfile'" + gdb_load $binfile + + send_gdb "set language chill\n" + gdb_expect { + -re ".*$gdb_prompt $" {} + timeout { fail "set language chill (timeout)" ; return 0 } + } + + return [gdb_test "show language" ".* source language is \"chill\".*" \ + "set language to \"chill\""] +} + +set prms_id 0 +set bug_id 0 + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test "set print sevenbit-strings" ".*" + +if ![set_lang_chill] then { + runto x_ + gdb_test "next" "" + # check comparison of SET's + gdb_test {print xyz=moving} { = TRUE} + gdb_test {print xyz/=moving} { = FALSE} + gdb_test {print xyzmoving} { = FALSE} + gdb_test {print xyz>=moving} { = TRUE} +} Index: pr-8894.exp =================================================================== --- pr-8894.exp (nonexistent) +++ pr-8894.exp (revision 1765) @@ -0,0 +1,61 @@ +# Copyright (C) 1996, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile2 "pr-8894-grt" +set srcfile2 ${srcdir}/$subdir/${testfile2}.ch +set objfile2 ${objdir}/$subdir/${testfile2}.o +if { [compile "${srcfile2} -g -c -o ${objfile2}"] != "" } { + perror "Couldn't compile ${srcfile2}" + return -1 +} + +set testfile "pr-8894" +set srcfile ${srcdir}/$subdir/$testfile.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g ${objfile2} -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +proc do_tests {} { + global prms_id bug_id subdir objdir srcdir binfile gdb_prompt + + set prms_id 0 + set bug_id 0 + + # Start with a fresh gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile + + gdb_test "set language chill" "" + + gdb_test "print size(m_byte)" { = 2} + gdb_test "print size(m_struct)" { = 6} +} + +do_tests Index: gch981.ch =================================================================== --- gch981.ch (nonexistent) +++ gch981.ch (revision 1765) @@ -0,0 +1,60 @@ +xx: MODULE + +SYNMODE m_set1 = SET (e1, e2, e3, e4, e5); +DCL v_set1 m_set1 INIT := e3; + +SYNMODE m_set2 = SET (a1=1, a2=2, a3=17, a4=9, a5=8, a6=0, a7=14, a8=33, a9=12); +DCL v1_set2 m_set2 INIT := a1; +DCL v2_set2 m_set2 INIT := a2; +DCL v3_set2 m_set2 INIT := a3; +DCL v4_set2 m_set2 INIT := a4; +DCL v5_set2 m_set2 INIT := a5; +DCL v6_set2 m_set2 INIT := a6; +DCL v7_set2 m_set2 INIT := a7; +DCL v8_set2 m_set2 INIT := a8; +DCL v9_set2 m_set2 INIT := a9; + +SYNMODE m_set3 = SET (b1, b2, b3, b4, b5 = 4711, b6, b7 = 4713); +DCL v_set3 m_set3 INIT := b7; + +SYNMODE m_set4 = SET(s1=111111, s2, s3, s4); +DCL v1_set4 m_set4 INIT := s1; + +SYNMODE m_set_range = m_set1(e2:e5); +DCL v_set_range m_set_range INIT := e3; + +SYNMODE m_set_range_arr = ARRAY (m_set_range) BYTE; +DCL v_set_range_arr ARRAY (m_set_range) BYTE; + +SYNMODE m_set_arr = ARRAY (m_set1) BYTE; +DCL v_set_arr ARRAY (m_set1) BYTE; + +NEWMODE m_power1 = POWERSET m_set1; +DCL v1_power1 READ m_power1 INIT := [e1,e2,e3,e4,e5]; +DCL v2_power1 m_power1 INIT := []; + +NEWMODE m_power2 = POWERSET m_set2; +DCL v_power2 m_power2 INIT := []; + +NEWMODE m_power3 = POWERSET m_set3; +DCL v_power3 m_power3 INIT := [b1:b2]; + +NEWMODE m_power4 = POWERSET CHAR; +DCL v_power4 m_power4 INIT := ['b':'x']; + +NEWMODE m_power5 = POWERSET INT (2:400); +DCL v_power5 m_power5 INIT := [2:100]; + +NEWMODE m_power6 = POWERSET INT; +DCL v_power6 m_power6; + +NEWMODE m_power7 = POWERSET LONG; +DCL v_power7 m_power7; + + +v_set1:= e2; +v2_power1:= [e1]; + +v_set1:= e1; + +END xx; Index: pr-5020.ch =================================================================== --- pr-5020.ch (nonexistent) +++ pr-5020.ch (revision 1765) @@ -0,0 +1,19 @@ + +PR_5020: MODULE + dummy_pr_5020: PROC (); + END; + NEWMODE x = STRUCT (l LONG, b BOOL); + NEWMODE aset = SET (aa, bb); + + DCL y ARRAY ('a':'b') x; + DCL setarr ARRAY (aset) x; + DCL intarr ARRAY(10:11) x; + DCL boolarr ARRAY (BOOL) x; + + y('a').l, setarr(aa).l, intarr(10).l, boolarr(FALSE).l := 10; + y('a').b, setarr(aa).b, intarr(10).b, boolarr(FALSE).b := TRUE; + y('b').l, setarr(bb).l, intarr(11).l, boolarr(TRUE).l := 111; + y('b').b, setarr(bb).b, intarr(11).b, boolarr(TRUE).b := FALSE; + + dummy_pr_5020 (); +END; Index: gch1041.ch =================================================================== --- gch1041.ch (nonexistent) +++ gch1041.ch (revision 1765) @@ -0,0 +1,17 @@ +arr: MODULE + +SYNMODE m_chars = CHARS(30) VARYING; +SYNMODE m_s = STRUCT (l LONG, c m_chars, b BOOL); + +DCL a1 ARRAY (1:1000) LONG INIT := [(5:100): 33, (1:4): 44, (ELSE): 55 ]; +DCL a2 ARRAY (1:10) m_s INIT := [(*): [ 22, "mowi", TRUE ] ]; +DCL a3 ARRAY (CHAR) CHAR INIT := [(*): 'X']; + +SYNMODE m_set = SET (e1, e2, e3, e4, e5, e6, e7, e9, e10); +DCL a4 ARRAY (m_set) BOOL INIT := [(*): TRUE]; + +a1 := [(5:100): 33, (1:4): 44, (ELSE): 55 ]; +a1 := [ (*): 22 ]; +a2 := [(*): [ 22, "mowi", TRUE ] ]; + +END arr; Index: chexp.exp =================================================================== --- chexp.exp (nonexistent) +++ chexp.exp (revision 1765) @@ -0,0 +1,450 @@ +# Copyright (C) 1992, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Fred Fish. (fnf@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +# Set the current language to chill. This counts as a test. If it +# fails, then we skip the other tests. + +proc set_lang_chill {} { + global gdb_prompt + + send_gdb "set language chill\n" + gdb_expect { + -re ".*$gdb_prompt $" {} + timeout { fail "set language chill (timeout)" ; return 0 } + } + + send_gdb "show language\n" + gdb_expect { + -re ".* source language is \"chill\".*$gdb_prompt $" { + pass "set language to \"chill\"" + return 1 + } + -re ".*$gdb_prompt $" { + fail "setting language to \"chill\"" + return 0 + } + timeout { + fail "can't show language (timeout)" + return 0 + } + } +} + +proc test_integer_literals_accepted {} { + global gdb_prompt + + # Test various decimal values. + + gdb_test "p 123" " = 123" + gdb_test "p -123" " = -123" + gdb_test "p D'123" " = 123" + gdb_test "p d'123" " = 123" + gdb_test "p -D'123" " = -123" + gdb_test "p -d'123" " = -123" + gdb_test "p 12_345" " = 12345" + gdb_test "p __1_2_3__" " = 123" + gdb_test "p/d 123" " = D'123" + + # Test various binary values. + + gdb_test "p B'111" " = 7" + gdb_test "p b'111" " = 7" + gdb_test "p -B'111" " = -7" + gdb_test "p B'0111" " = 7" + gdb_test "p b'0111" " = 7" + gdb_test "p -b'0111" " = -7" + gdb_test "p B'_0_1_1_1_" " = 7" + gdb_test "p b'_0_1_1_1_" " = 7" + gdb_test "p -b'_0_1_1_1_" " = -7" + gdb_test "p/t B'111" " = B'111" + + # Test various octal values. + + gdb_test "p O'123" " = 83" + gdb_test "p o'123" " = 83" + gdb_test "p -o'0123" " = -83" + gdb_test "p O'0123" " = 83" + gdb_test "p o'0123" " = 83" + gdb_test "p -o'123" " = -83" + gdb_test "p O'_1_2_3_" " = 83" + gdb_test "p o'_1_2_3_" " = 83" + gdb_test "p -o'_1_2_3_" " = -83" + gdb_test "p/o O'123" " = O'123" + + # Test various hexadecimal values. + + gdb_test "p H'123" " = 291" + gdb_test "p h'123" " = 291" + gdb_test "p -h'123" " = -291" + gdb_test "p H'0123" " = 291" + gdb_test "p h'0123" " = 291" + gdb_test "p -h'0123" " = -291" + gdb_test "p H'_1_2_3_" " = 291" + gdb_test "p h'_1_2_3_" " = 291" + gdb_test "p -h'_1_2_3_" " = -291" + gdb_test "p H'ABC" " = 2748" + gdb_test "p H'abc" " = 2748" + gdb_test "p H'AbC" " = 2748" + gdb_test "p H'_A_b_C_" " = 2748" + gdb_test "p H'_D_e_F_" " = 3567" + gdb_test "p H'_d_E_f_" " = 3567" + gdb_test "p/x H'123" " = H'123" +} + +proc test_character_literals_accepted {} { + global gdb_prompt + + # Test various decimal values. + + gdb_test "p 'a'" " = 'a'" + gdb_test "p/x 'a'" " = H'61" + gdb_test "p/d 'a'" " = D'97" + gdb_test "p/t 'a'" " = B'1100001" + # gdb_test "p '^(97)'" " = 'a'" (not in GNU Chill) + gdb_test "p C'61'" " = 'a'" + gdb_test "p c'61'" " = 'a'" + gdb_test "p/x C'FF'" " = H'ff" + # gdb_test "p/x '^(H'FF)'" " = H'ff" (not in GNU Chill) + # gdb_test "p/x '^(D'255)'" " = H'ff" (not in GNU Chill) +} + +proc test_integer_literals_rejected {} { + global gdb_prompt + + # These are valid integer literals in Z.200, but not GNU-Chill. + + test_print_reject "p _" + test_print_reject "p __" + + test_print_reject "p D'" + test_print_reject "p D'_" + test_print_reject "p D'__" + + test_print_reject "p B'" + test_print_reject "p B'_" + test_print_reject "p B'__" + + test_print_reject "p O'" + test_print_reject "p O'_" + test_print_reject "p O'__" + + test_print_reject "p H'" + test_print_reject "p H'_" + test_print_reject "p H'__" + + # Test various decimal values. + + test_print_reject "p D'DEADBEEF" + test_print_reject "p D'123DEADBEEF" + + # Test various binary values. + + test_print_reject "p B'2" "Too-large digit in bitstring or integer." + test_print_reject "p B'12" "Too-large digit in bitstring or integer." + + # Test various octal values. + + test_print_reject "p O'9" "Too-large digit in bitstring or integer." + test_print_reject "p O'79" "Too-large digit in bitstring or integer." + + # Test various hexadecimal values. + + test_print_reject "p H'G" "Invalid character in bitstring or integer." + test_print_reject "p H'AG" "Invalid character in bitstring or integer." +} + +proc test_boolean_literals_accepted {} { + global gdb_prompt + + # Test the only possible values for a boolean, TRUE and FALSE. + + gdb_test "p TRUE" " = TRUE" + gdb_test "p FALSE" " = FALSE" +} + +proc test_float_literals_accepted {} { + global gdb_prompt + + # Test various floating point formats + + gdb_test "p .44 < .45" " = TRUE" + gdb_test "p .44 > .45" " = FALSE" + gdb_test "p 0.44 < 0.45" " = TRUE" + gdb_test "p 0.44 > 0.45" " = FALSE" + gdb_test "p 44. < 45." " = TRUE" + gdb_test "p 44. > 45." " = FALSE" + gdb_test "p 44.0 < 45.0" " = TRUE" + gdb_test "p 44.0 > 45.0" " = FALSE" + gdb_test "p 10D20 < 10D21" " = TRUE" + gdb_test "p 10D20 > 10D21" " = FALSE" + gdb_test "p 10d20 < 10d21" " = TRUE" + gdb_test "p 10d20 > 10d21" " = FALSE" + gdb_test "p 10E20 < 10E21" " = TRUE" + gdb_test "p 10E20 > 10E21" " = FALSE" + gdb_test "p 10e20 < 10e21" " = TRUE" + gdb_test "p 10e20 > 10e21" " = FALSE" + gdb_test "p 10.D20 < 10.D21" " = TRUE" + gdb_test "p 10.D20 > 10.D21" " = FALSE" + gdb_test "p 10.d20 < 10.d21" " = TRUE" + gdb_test "p 10.d20 > 10.d21" " = FALSE" + gdb_test "p 10.E20 < 10.E21" " = TRUE" + gdb_test "p 10.E20 > 10.E21" " = FALSE" + gdb_test "p 10.e20 < 10.e21" " = TRUE" + gdb_test "p 10.e20 > 10.e21" " = FALSE" + gdb_test "p 10.0D20 < 10.0D21" " = TRUE" + gdb_test "p 10.0D20 > 10.0D21" " = FALSE" + gdb_test "p 10.0d20 < 10.0d21" " = TRUE" + gdb_test "p 10.0d20 > 10.0d21" " = FALSE" + gdb_test "p 10.0E20 < 10.0E21" " = TRUE" + gdb_test "p 10.0E20 > 10.0E21" " = FALSE" + gdb_test "p 10.0e20 < 10.0e21" " = TRUE" + gdb_test "p 10.0e20 > 10.0e21" " = FALSE" + gdb_test "p 10.0D+20 < 10.0D+21" " = TRUE" + gdb_test "p 10.0D+20 > 10.0D+21" " = FALSE" + gdb_test "p 10.0d+20 < 10.0d+21" " = TRUE" + gdb_test "p 10.0d+20 > 10.0d+21" " = FALSE" + gdb_test "p 10.0E+20 < 10.0E+21" " = TRUE" + gdb_test "p 10.0E+20 > 10.0E+21" " = FALSE" + gdb_test "p 10.0e+20 < 10.0e+21" " = TRUE" + gdb_test "p 10.0e+20 > 10.0e+21" " = FALSE" + gdb_test "p 10.0D-11 < 10.0D-10" " = TRUE" + gdb_test "p 10.0D-11 > 10.0D-10" " = FALSE" + gdb_test "p 10.0d-11 < 10.0d-10" " = TRUE" + gdb_test "p 10.0d-11 > 10.0d-10" " = FALSE" + gdb_test "p 10.0E-11 < 10.0E-10" " = TRUE" + gdb_test "p 10.0E-11 > 10.0E-10" " = FALSE" + gdb_test "p 10.0e-11 < 10.0e-10" " = TRUE" + gdb_test "p 10.0e-11 > 10.0e-10" " = FALSE" + # looks funny, but apparently legal + gdb_test "p _.1e+10 < _.1e+11" " = TRUE" + gdb_test "p _.1e+10 > _.1e+11" " = FALSE" + gdb_test "p __.1e-12 < __.1e-11" " = TRUE" + gdb_test "p __.1e-12 > __.1e-11" " = FALSE" +} + +proc test_convenience_variables {} { + global gdb_prompt + + gdb_test "set \$foo := 101" " := 101\[\r\]*" \ + "Set a new convenience variable" + + gdb_test "print \$foo" " = 101" \ + "Print contents of new convenience variable" + + gdb_test "set \$foo := 301" " := 301\[\r\]*" \ + "Set convenience variable to a new value" + + gdb_test "print \$foo" " = 301" \ + "Print new contents of convenience variable" + + gdb_test "set \$_ := 11" " := 11\[\r\]*" \ + "Set convenience variable \$_" + + gdb_test "print \$_" " = 11" \ + "Print contents of convenience variable \$_" + + gdb_test "print \$foo + 10" " = 311" \ + "Use convenience variable in arithmetic expression" + + gdb_test "print (\$foo := 32) + 4" " = 36" \ + "Use convenience variable assignment in arithmetic expression" + + gdb_test "print \$bar" " = void" \ + "Print contents of uninitialized convenience variable" +} + +proc test_value_history {} { + global gdb_prompt + + gdb_test "print 101" "\\\$1 = 101" \ + "Set value-history\[1\] using \$1" + + gdb_test "print 102" "\\\$2 = 102" \ + "Set value-history\[2\] using \$2" + + gdb_test "print 103" "\\\$3 = 103" \ + "Set value-history\[3\] using \$3" + + gdb_test "print \$\$" "\\\$4 = 102" \ + "Print value-history\[MAX-1\] using inplicit index \$\$" + + gdb_test "print \$\$" "\\\$5 = 103" \ + "Print value-history\[MAX-1\] again using implicit index \$\$" + + gdb_test "print \$" "\\\$6 = 103" \ + "Print value-history\[MAX\] using implicit index \$" + + gdb_test "print \$\$2" "\\\$7 = 102" \ + "Print value-history\[MAX-2\] using explicit index \$\$2" + + gdb_test "print \$0" "\\\$8 = 102" \ + "Print value-history\[MAX\] using explicit index \$0" + + gdb_test "print 108" "\\\$9 = 108" "" + + gdb_test "print \$\$0" "\\\$10 = 108" \ + "Print value-history\[MAX\] using explicit index \$\$0" + + gdb_test "print \$1" "\\\$11 = 101" \ + "Print value-history\[1\] using explicit index \$1" + + gdb_test "print \$2" "\\\$12 = 102" \ + "Print value-history\[2\] using explicit index \$2" + + gdb_test "print \$3" "\\\$13 = 103" \ + "Print value-history\[3\] using explicit index \$3" + + gdb_test "print \$-3" "\\\$14 = 100" \ + "Print (value-history\[MAX\] - 3) using implicit index \$" + + gdb_test "print \$1 + 3" "\\\$15 = 104" \ + "Use value-history element in arithmetic expression" +} + +proc test_arithmetic_expressions {} { + global gdb_prompt + + # Test unary minus with various operands + +# gdb_test "p -(TRUE)" " = -1" "unary minus applied to bool" +# gdb_test "p -('a')" " = xxx" "unary minus applied to char" + gdb_test "p -(1)" " = -1" "unary minus applied to int" + gdb_test "p -(1.0)" " = -1" "unary minus applied to real" + + # Test addition with various operands + + gdb_test "p TRUE + 1" " = 2" "bool plus int" + gdb_test "p 'a' + 1" " = 98" "char plus int" + gdb_test "p 1 + 1" " = 2" "int plus int" + gdb_test "p 1.0 + 1" " = 2" "real plus int" + gdb_test "p 1.0 + 2.0" " = 3" "real plus real" + + # Test subtraction with various operands + + gdb_test "p TRUE - 1" " = 0" "bool minus int" + gdb_test "p 'b' - 1" " = 97" "char minus int" + gdb_test "p 3 - 1" " = 2" "int minus int" + gdb_test "p 3.0 - 1" " = 2" "real minus int" + gdb_test "p 5.0 - 2.0" " = 3" "real minus real" + + # Test multiplication with various operands + + gdb_test "p TRUE * 1" " = 1" "bool times int" + gdb_test "p 'a' * 2" " = 194" "char times int" + gdb_test "p 2 * 3" " = 6" "int times int" + gdb_test "p 2.0 * 3" " = 6" "real times int" + gdb_test "p 2.0 * 3.0" " = 6" "real times real" + + # Test division with various operands + + gdb_test "p TRUE / 1" " = 1" "bool divided by int" + gdb_test "p 'a' / 2" " = 48" "char divided by int" + gdb_test "p 6 / 3" " = 2" "int divided by int" + gdb_test "p 6.0 / 3" " = 2" "real divided by int" + gdb_test "p 6.0 / 3.0" " = 2" "real divided by real" + + # Test modulo with various operands + + gdb_test "p TRUE MOD 1" " = 0" "bool modulo int" + gdb_test "p 'a' MOD 2" " = 1" "char modulo int" + gdb_test "p -5 MOD 3" " = 1" "negative int modulo int" + gdb_test "p 5 MOD 1" " = 0" "int modulo int" + gdb_test "p 5 MOD 2" " = 1" "int modulo int" + gdb_test "p 5 MOD 3" " = 2" "int modulo int" + gdb_test "p 5 MOD 4" " = 1" "int modulo int" + gdb_test "p 5 MOD 5" " = 0" "int modulo int" + gdb_test "p 0 MOD 1" " = 0" "int modulo int" + gdb_test "p 0 MOD 2" " = 0" "int modulo int" + gdb_test "p 0 MOD 3" " = 0" "int modulo int" + gdb_test "p 0 MOD 4" " = 0" "int modulo int" + gdb_test "p -5 MOD 1" " = 0" "int modulo int" + gdb_test "p -5 MOD 2" " = 1" "int modulo int" + gdb_test "p -5 MOD 3" " = 1" "int modulo int" + gdb_test "p -5 MOD 4" " = 3" "int modulo int" + gdb_test "p -5 MOD 5" " = 0" "int modulo int" + gdb_test "p -5 MOD 5" " = 0" "int modulo int" + test_print_reject "p 6.0 MOD 3" \ + "Integer-only operation on floating point number.*" + test_print_reject "p 6.0 MOD 3.0" \ + "Integer-only operation on floating point number.*" + test_print_reject "p -5 MOD -1" \ + "Second operand of MOD must be greater than zero.*" + test_print_reject "p -5 MOD 0" \ + "Second operand of MOD must be greater than zero.*" + + # Test remainder with various operands + + gdb_test "p TRUE REM 1" " = 0" "bool remainder int" + gdb_test "p 'a' REM 2" " = 1" "char remainder int" + gdb_test "p 5 REM 5" " = 0" "int remainder int" + gdb_test "p 5 REM 4" " = 1" "int remainder int" + gdb_test "p 5 REM 3" " = 2" "int remainder int" + gdb_test "p 5 REM 2" " = 1" "int remainder int" + gdb_test "p 5 REM 1" " = 0" "int remainder int" + gdb_test "p 5 REM -1" " = 0" "int remainder int" + gdb_test "p 5 REM -2" " = 1" "int remainder int" + gdb_test "p 5 REM -3" " = 2" "int remainder int" + gdb_test "p 5 REM -4" " = 1" "int remainder int" + gdb_test "p 5 REM -5" " = 0" "int remainder int" + gdb_test "p -5 REM 5" " = 0" "int remainder int" + gdb_test "p -5 REM 4" " = -1" "int remainder int" + gdb_test "p -5 REM 3" " = -2" "int remainder int" + gdb_test "p -5 REM 2" " = -1" "int remainder int" + gdb_test "p -5 REM 1" " = 0" "int remainder int" + gdb_test "p -5 REM -1" " = 0" "int remainder int" + gdb_test "p -5 REM -2" " = -1" "int remainder int" + gdb_test "p -5 REM -3" " = -2" "int remainder int" + gdb_test "p -5 REM -4" " = -1" "int remainder int" + gdb_test "p -5 REM -5" " = 0" "int remainder int" + gdb_test "p 6 REM 3" " = 0" "int remainder int" + test_print_reject "p 6.0 REM 3" \ + "Integer-only operation on floating point number.*" + test_print_reject "p 6.0 REM 3.0" \ + "Integer-only operation on floating point number.*" +} + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test "set print sevenbit-strings" "" + +if [set_lang_chill] then { + test_value_history + test_convenience_variables + test_integer_literals_accepted + test_integer_literals_rejected + test_boolean_literals_accepted + test_character_literals_accepted + test_float_literals_accepted + test_arithmetic_expressions +} else { + warning "$test_name tests suppressed." 0 +} Index: func1.ch =================================================================== --- func1.ch (nonexistent) +++ func1.ch (revision 1765) @@ -0,0 +1,9 @@ +func1: MODULE + +SYNMODE m_set = SET (e1, e2, e3, e4, e5, e6, e7, e8, e9, e10); +SYNMODE m_setrange = RANGE (e3:e8); +SYNMODE m_ps = POWERSET m_set; +SYNMODE m_rangeps = POWERSET RANGE(0:31); +GRANT ALL; + +END func1; Index: xstruct.exp =================================================================== --- xstruct.exp (nonexistent) +++ xstruct.exp (revision 1765) @@ -0,0 +1,66 @@ +# Copyright (C) 1992, 1994, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Per Bothner. (bothner@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile2 "xstruct-grt" +set srcfile2 ${srcdir}/$subdir/${testfile2}.ch +set objfile2 ${objdir}/$subdir/${testfile2}.o +if { [compile "${srcfile2} -g -c -o ${objfile2}"] != "" } { + perror "Couldn't compile ${srcfile2}" + return -1 +} + +set testfile "xstruct" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g ${objfile2} -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +proc do_tests {} { + global prms_id bug_id subdir objdir srcdir binfile gdb_prompt + + set prms_id 0 + set bug_id 0 + + # Start with a fresh gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile + + gdb_test "set language chill" "" + + gdb_test "set var \$i := m_x\[\]" "" + gdb_test "print \$i" { = \[.i: 0, .ar: \[\(5:6\): \[.f1: 0, .f2: NULL, .f3: \[\(2:3\): 0\]\]\]\]} + + gdb_test "set var \$j := m_y\[\]" "" + gdb_test "print \$j" { = \[.i: 0, .ar: \[\(7:8\): \[\(9:10\): \[.f1: 0, .f2: NULL, .f3: \[\(2:3\): 0\]\]\]\]\]} +} + +do_tests Index: gch1272.exp =================================================================== --- gch1272.exp (nonexistent) +++ gch1272.exp (revision 1765) @@ -0,0 +1,86 @@ +# Copyright (C) 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Wilfried Moser (moser@aut.alcatel.at) +# + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "gch1272" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +# Set the current language to chill. This counts as a test. If it +# fails, then we skip the other tests. + +proc set_lang_chill {} { + global gdb_prompt + global binfile objdir subdir + + verbose "loading file '$binfile'" + gdb_load $binfile + + send_gdb "set language chill\n" + gdb_expect { + -re ".*$gdb_prompt $" {} + timeout { fail "set language chill (timeout)" ; return 0 } + } + + return [gdb_test "show language" ".* source language is \"chill\".*" \ + "set language to \"chill\""] +} + +set prms_id 0 +set bug_id 0 + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test "set print sevenbit-strings" ".*" + +if ![set_lang_chill] then { + runto brrr + + # check foo + gdb_test {print foo} { = \[\(0:99\): 222\]} + gdb_test "set var foo := m_array\[\(\*\):44\]" ".*" + gdb_test {print foo} { = \[\(0:99\): 44\]} + + # check bar + gdb_test {print bar} { = \[\(-10:20\): \[.i: 0, .b: FALSE\]\]} + gdb_test "set var bar := m_bar\[\(\*\): \[42, TRUE\]\]" ".*" + gdb_test {print bar} { = \[\(-10:20\): \[.i: 42, .b: TRUE\]\]} + + # some failues + gdb_test "set var foo := \[\(\*\):44\]" {\(\*\) only possible with modename in front of tuple \(mode\[\.\.\]\)} + gdb_test "set var foo := m_xxx\[\(\*\):44\]" {Invalid cast\.} + gdb_test "set var foo := m_struct\[\(\*\):44\]" {\(\*\) in invalid context} + gdb_test "set var foo := m_ps\[\(\*\):44\]" {\(\*\) in invalid context} +} Index: pr-5646.ch =================================================================== --- pr-5646.ch (nonexistent) +++ pr-5646.ch (revision 1765) @@ -0,0 +1,15 @@ +y: MODULE + +<> USE_SEIZE_FILE "pr-5646-grt.grt" <> +SEIZE a_ps; + +p: PROC (); + + DCL xx a_ps; + + xx := [a, b]; +END p; + +p(); + +END y; Index: pr-8742.exp =================================================================== --- pr-8742.exp (nonexistent) +++ pr-8742.exp (revision 1765) @@ -0,0 +1,64 @@ +# Copyright (C) 1992, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Per Bothner. (bothner@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "pr-8742" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +proc do_tests {} { + global prms_id bug_id subdir objdir srcdir binfile gdb_prompt + + set prms_id 0 + set bug_id 0 + + # Start with a fresh gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile + + gdb_test "set language chill" "" + + runto dummy + + # Haven't investigated why these fail on mips-sgi-irix* + setup_xfail "m68*-*-hpux*" "mips*-sgi-irix*" + gdb_test {call x(p [1, 3, 5])} "1 3 5 " "pass int powerset tuple" + setup_xfail "mips*-sgi-irix*" + gdb_test {call y(s_ps [sc])} "sc " "pass set powerset tuple" + setup_xfail "m68*-*-hpux*" "mips*-sgi-irix*" + gdb_test {call x([1, 3, 5])} "1 3 5 " "pass modeless int powerset tuple" + setup_xfail "mips*-sgi-irix*" + gdb_test {call y([sc])} "sc " "pass modeless set powerset tuple" +} + +do_tests Index: tests1.exp =================================================================== --- tests1.exp (nonexistent) +++ tests1.exp (revision 1765) @@ -0,0 +1,822 @@ +# Copyright (C) 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file tests various Chill values, expressions, and types. + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "tests1" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +# Set the current language to chill. This counts as a test. If it +# fails, then we skip the other tests. + +proc set_lang_chill {} { + global gdb_prompt + global binfile objdir subdir + + verbose "loading file '$binfile'" + gdb_load $binfile + send_gdb "set language chill\n" + gdb_expect { + -re ".*$gdb_prompt $" {} + timeout { fail "set language chill (timeout)" ; return 0 } + } + + send_gdb "show language\n" + gdb_expect { + -re ".* source language is \"chill\".*$gdb_prompt $" { + pass "set language to \"chill\"" + send_gdb "break dummyfunc\n" + gdb_expect { + -re ".*$gdb_prompt $" { + send_gdb "run\n" + gdb_expect -re ".*$gdb_prompt $" {} + return 1 + } + timeout { + fail "can't set breakpoint (timeout)" + return 0 + } + } + } + -re ".*$gdb_prompt $" { + fail "setting language to \"chill\"" + return 0 + } + timeout { + fail "can't show language (timeout)" + return 0 + } + } +} + +# Testing printing of a specific value. Increment passcount for +# success or issue fail message for failure. In both cases, return +# a 1 to indicate that more tests can proceed. However a timeout +# is a serious error, generates a special fail message, and causes +# a 0 to be returned to indicate that more tests are likely to fail +# as well. +# +# Args are: +# +# First one is string to send_gdb to gdb +# Second one is string to match gdb result to +# Third one is an optional message to be printed + +proc test_print_accept { args } { + global gdb_prompt + global passcount + global verbose + + if [llength $args]==3 then { + set message [lindex $args 2] + } else { + set message [lindex $args 0] + } + set sendthis [lindex $args 0] + set expectthis [lindex $args 1] + set result [gdb_test $sendthis ".* = ${expectthis}" $message] + if $result==0 {incr passcount} + return $result +} + +# Testing printing of a specific value. Increment passcount for +# success or issue fail message for failure. In both cases, return +# a 1 to indicate that more tests can proceed. However a timeout +# is a serious error, generates a special fail message, and causes +# a 0 to be returned to indicate that more tests are likely to fail +# as well. + +# various tests if modes are treated correctly +# using ptype +proc test_modes {} { + global passcount + + verbose "testing chill modes" + set passcount 0 + + # discrete modes + test_print_accept "ptype BYTE" "byte" + test_print_accept "ptype UBYTE" "ubyte" + test_print_accept "ptype INT" "int" + test_print_accept "ptype UINT" "uint" + test_print_accept "ptype LONG" "long" + test_print_accept "ptype ULONG" "ulong" + test_print_accept "ptype BOOL" "bool" + test_print_accept "ptype CHAR" "char" + + test_print_accept "ptype set1" "SET \[(\]aaa, bbb, ccc\[)\]" \ + "print unnumbered set mode" + test_print_accept "ptype nset1" "SET \[(\]na = 1, nb = 34, nc = 20\[)\]" \ + "print numbered set mode" + + # mp: + # display maybe in hex values ? + # + test_print_accept "ptype r11" "ubyte \\(0:255\\)" \ + "print ubyte range mode" + test_print_accept "ptype r12" "uint \\(0:65535\\)" \ + "print uint range mode" +# test_print_accept "ptype r13" "ulong \\(0:4294967295\\)" \ +# "print ulong range mode" + test_print_accept "ptype r14" "byte \\(-128:127\\)" \ + "print byte range mode" + test_print_accept "ptype r15" "int \\(-32768:32767\\)" \ + "print int range mode" + test_print_accept "ptype r16" "long \\(-2147483648:2147483647\\)" \ + "print long range mode" + + test_print_accept "ptype r2" "set1 \\(bbb:ccc\\)" \ + "print unnumbered set range mode" + test_print_accept "ptype r3" "nset1 \\(na:na\\)" \ + "print numbered set range mode" + # really this order ? + # I'm not sure what should happen for the next two tests. + setup_xfail "*-*-*" + test_print_accept "ptype r4" "nset1 \\(nb = 34:nc = 20\\)" \ + "print numbered set range mode" + setup_xfail "*-*-*" + test_print_accept "ptype r5" "nset1 \\(na = 1, nb = 34, nc = 20\\)" \ + "print numbered set range mode" + + # powerset modes + test_print_accept "ptype pm1" \ + "POWERSET SET \[(\]p1, p2, p3, p4, p5, p6, p7, p8, p9, p10\[)\]" \ + "print powerset mode 1" + test_print_accept "ptype pm2" "POWERSET byte \\(1:8\\)" \ + "print powerset mode 2" + test_print_accept "ptype pm3" "POWERSET int \\(-32768:32767\\)" \ + "print powerset mode 3" + test_print_accept "ptype pm4" "POWERSET long \\(-32768:32768\\)" \ + "print powerset mode 4" + test_print_accept "ptype pm5" \ + "POWERSET long \\(-2147483648:2147483647\\)" \ + "print powerset mode 5" + + # reference modes + test_print_accept "ptype ref1" "REF pm1" \ + "print reference to powerset mode" + test_print_accept "ptype ref2" "REF byte" \ + "print reference to byte" + test_print_accept "ptype ref3" "PTR" \ + "print free reference type" + + # procedure modes + # FIXME: we have to talk about this ... + test_print_accept "ptype prm1" \ + "REF PROC \[(\]\[)\]" \ + "print procedure mode 1" + setup_xfail "*-*-*" + test_print_accept "ptype prm2" \ + "REF PROC \[(\]bool in, int out long inout\[)\] RETURNS \[(\]char\[)\]" \ + "print procedure mode 2" + setup_xfail "*-*-*" + test_print_accept "ptype prm3" \ + "REF PROC \[(\]pm1, ref loc\[)\] RETURNS \[(\]ref3\[)\]" \ + "print procedure mode 3" + setup_xfail "*-*-*" + test_print_accept "ptype prm4" \ + "\[(\] \[)\] EXCEPTIONS \[(\]ex1, ex2, ex3\[)\]" \ + "print procedure mode 4" + setup_xfail "*-*-*" + test_print_accept "ptype prm5" \ + "REF PROC \[(\]r11, r16 inout, r5 out\[)\] RETURNS \[(\]r2\[)\] EXCEPTIONS \[(\]ex1\[)\]" \ + "print procedure mode 5" + + # synchronization modes + # FIXME: since gdb doesn't process events & buffers so far, this has be + # filled later... + xfail "synchronization mode handling" + + # timing modes + test_print_accept "ptype DURATION" "duration" + test_print_accept "ptype TIME" "time" + + # string modes + # some tests are done in chillvars.exp + test_print_accept "ptype strm1" "CHARS \\(5\\)" "print char string mode" + test_print_accept "ptype strm2" "CHARS \[(\]7\[)\] VARYING" \ + "print varying char string mode" + test_print_accept "ptype bstr1" "BOOLS \\(20\\)" "print bit string mode" + + test_print_accept "ptype B'000'" "BOOLS \\(3\\)" "bit string literal" + test_print_accept "ptype B'11110000'" "BOOLS \\(8\\)" "bit string literal" + # FIXME: adjust error message + gdb_test "ptype B'00110211'" {.*Too-large digit.*[.]} \ + "reject invalid bitstring" + + # array modes + # some tests are done in chillvars.exp + test_print_accept "ptype arr1m" "ARRAY \\(1:100\\) set1" \ + "print array mode 1" + test_print_accept "ptype arr2m" "ARRAY \\(1:100\\) ARRAY \\(1:100\\) set1"\ + "print array mode 2" + test_print_accept "ptype arr3m" "ARRAY \\(0:255\\) ARRAY \\(0:65535\\) ARRAY \\(-128:127\\) set1" \ + "print array mode 3" + setup_xfail "*-*-*" + test_print_accept "ptype arr4m" "ARRAY \\(b:c\\) ARRAY \\(na = 1:na = 1\\) ARRAY \\(nc:nb\\) ARRAY \\(na = 1:nc = 20\\) POWERSET SET \[(\]p1, p2, p3, p4, p5, p6, p7, p8, p9, p10\[)\]" \ + "print array mode 4" + + # structure modes + # some checks are in chillvars.exp + # setup_xfail "*-*-*" + test_print_accept "ptype stru1m" "STRUCT \\(.*a long,.*b long,.*CASE OF.*:.*ch1 CHARS \\(20\\).*:.*ch2 CHARS \\(10\\).*ELSE.*ch3 CHARS \\(1\\).*ESAC.*\\)" \ + "print structure mode 1" + #setup_xfail "*-*-*" + test_print_accept "ptype stru2m" "STRUCT \\(.*f set1,.*CASE OF.*:.*ch1 CHARS \\(20\\).*:.*ch2 CHARS \\(10\\) VARYING.*ELSE.*ch3 CHARS \\(0\\) VARYING.*ESAC.*\\)" \ + "print structure mode 2" + #setup_xfail "*-*-*" + test_print_accept "ptype stru3m" "STRUCT \\(.*f r3,.*CASE OF.*:.*ch1 CHARS \\(20\\).*ESAC.*\\)" \ + "print structure mode 3" + # setup_xfail "*-*-*" + test_print_accept "ptype stru4m" "STRUCT \\(.*i long,.*CASE OF.*:.*i1 int,.*i11 int,.*b1 bool,.*c1 char.*:.*i2 long,.*i22 long,.*bs2 BOOLS \\(10\\).*:.*s3 STRUCT \\(.*i3 int,.*CASE OF.*:.*foo long.*ELSE.*bar char.*ESAC.*\\).*ELSE.*x stru2m.*ESAC,.*y stru3m.*\\)" \ + "print structure mode 4" + + + if $passcount then { + pass "$passcount correct modes printed" + } +} + +# various tests if locations are treated correctly +# read access using ptype, print, whatis +proc test_locations {} { + global passcount + + set passcount 0 + verbose "testing read access to locations" + # various location tests can be found in chillvars.exp + + # set locations + test_print_accept "ptype s1l" "SET \\(aaa, bbb, ccc\\)" \ + "print mode of set location" + test_print_accept "whatis s1l" "set1" \ + "print modename of set location" + test_print_accept "print s1l" "ccc" "print set location" + test_print_accept "ptype s2l" "SET \\(na = 1, nb = 34, nc = 20\\)" \ + "print mode of numbered set location" + test_print_accept "whatis s2l" "nset1" \ + "print mode name of numbered set location" + test_print_accept "print s2l" "nb" "print numberes set location" + + # range modes + test_print_accept "ptype rl1" "ubyte \\(0:255\\)" \ + "print mode of range location" + test_print_accept "whatis rl1" "r11" \ + "print mode name of range location" + test_print_accept "print rl1" "3" \ + "print range location" + + test_print_accept "ptype rl2" "ubyte \\(0:255\\)" \ + "print mode of range location" + test_print_accept "whatis rl2" "r11" \ + "print mode name of range location" + test_print_accept "print rl2" "0" \ + "print range location" + + test_print_accept "ptype rl3" "ubyte \\(0:255\\)" \ + "print mode of range location" + test_print_accept "whatis rl3" "r11" \ + "print mode name of range location" + test_print_accept "print rl3" "255" \ + "print range location" + + test_print_accept "ptype rl5" "uint \\(0:65535\\)" \ + "print mode of range location" + test_print_accept "whatis rl5" "r12" \ + "print mode name of range location" + test_print_accept "print rl5" "65530" \ + "print range location" + + test_print_accept "ptype rl6" "uint \\(0:65535\\)" \ + "print mode of range location" + test_print_accept "whatis rl6" "r12" \ + "print mode name of range location" + test_print_accept "print rl6" "0" \ + "print range location" + + test_print_accept "ptype rl7" "uint \\(0:65535\\)" \ + "print mode of range location" + test_print_accept "whatis rl7" "r12" \ + "print mode name of range location" + test_print_accept "print rl7" "65535" \ + "print range location" + +# test_print_accept "ptype rl9" "ulong \\(0:4294967295\\)" \ +# "print mode of range location" +# test_print_accept "whatis rl9" "r13" \ +# "print mode name of range location" +# test_print_accept "print rl9" "128" \ +# "print range location" + +# test_print_accept "ptype rl10" "ulong \\(0:4294967295\\)" \ +# "print mode of range location" +# test_print_accept "whatis rl10" "r13" \ +# "print mode name of range location" +# test_print_accept "print rl10" "0" \ +# "print range location" + +# test_print_accept "ptype rl11" "ulong \\(0:4294967295\\)" \ +# "print mode of range location" +# test_print_accept "whatis rl11" "r13" \ +# "print mode name of range location" +# test_print_accept "print rl11" "4294967295" \ +# "print range location" + + test_print_accept "ptype rl13" "byte \\(-128:127\\)" \ + "print mode of range location" + test_print_accept "whatis rl13" "r14" \ + "print mode name of range location" + test_print_accept "print rl13" "-121" \ + "print range location" + + test_print_accept "ptype rl14" "byte \\(-128:127\\)" \ + "print mode of range location" + test_print_accept "whatis rl14" "r14" \ + "print mode name of range location" + test_print_accept "print rl14" "-128" \ + "print range location" + + test_print_accept "ptype rl15" "byte \\(-128:127\\)" \ + "print mode of range location" + test_print_accept "whatis rl15" "r14" \ + "print mode name of range location" + test_print_accept "print rl15" "127" \ + "print range location" + + test_print_accept "ptype rl17" "int \\(-32768:32767\\)" \ + "print mode of range location" + test_print_accept "whatis rl17" "r15" \ + "print mode name of range location" + test_print_accept "print rl17" "-32720" \ + "print range location" + + test_print_accept "ptype rl18" "int \\(-32768:32767\\)" \ + "print mode of range location" + test_print_accept "whatis rl18" "r15" \ + "print mode name of range location" + test_print_accept "print rl18" "-32768" \ + "print range location" + + test_print_accept "ptype rl19" "int \\(-32768:32767\\)" \ + "print mode of range location" + test_print_accept "whatis rl19" "r15" \ + "print mode name of range location" + test_print_accept "print rl19" "32767" \ + "print range location" + + test_print_accept "ptype rl21" "long \\(-2147483648:2147483647\\)" \ + "print mode of range location" + test_print_accept "whatis rl21" "r16" \ + "print mode name of range location" + test_print_accept "print rl21" "2147483643" \ + "print range location" + + test_print_accept "ptype rl22" "long \\(-2147483648:2147483647\\)" \ + "print mode of range location" + test_print_accept "whatis rl22" "r16" \ + "print mode name of range location" + test_print_accept "print rl22" "-2147483648" \ + "print range location" + + test_print_accept "ptype rl23" "long \\(-2147483648:2147483647\\)" \ + "print mode of range location" + test_print_accept "whatis rl23" "r16" \ + "print mode name of range location" + test_print_accept "print rl23" "2147483647" \ + "print range location" + + # powerset locations + test_print_accept "ptype pl1" \ + "POWERSET SET \\(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10\\)" \ + "print mode of powerset location 1" + test_print_accept "whatis pl1" "pm1" \ + "print mode mode name of powerset location" + test_print_accept "print pl1" \ + "\[\[\]p1:p10\[\]\]" \ + "print powerset location 1" + test_print_accept "print pl2" {\[\]} \ + "print powerset location 2" + test_print_accept "print pl3" "\[\[\]p1, p10\[\]\]" \ + "print powerset location 3" + test_print_accept "print pl4" {\[p1:p2, p4:p6, p8:p10\]} \ + "print powerset location 4" + test_print_accept "print pl5" {\[p1:p4, p6, p8:p10\]} \ + "print powerset location 5" + test_print_accept "print pl6" {\[p1, p3:p8, p10\]} \ + "print powerset location 6" + + test_print_accept "ptype pl7" \ + "POWERSET byte \\(1:8\\)" \ + "print mode of byte powerset location" + test_print_accept "whatis pl7" "pm2" \ + "print modename of byte powerset location" + test_print_accept "print pl7" {\[1:8\]} \ + "print powerset location 7" + + test_print_accept "ptype pl8" \ + "POWERSET int \\(-32768:32767\\)" \ + "print mode of int powerset location" + test_print_accept "whatis pl8" "pm3" \ + "print modename of int powerset location" + test_print_accept "print pl8" {\[-32768:32767\]} \ + "print powerset location 8" + +# test_print_accept "ptype pl9" \ +# "POWERSET long \\(-2147483648:2147483647\\)" \ +# "print mode of long powerset location" +# test_print_accept "whatis pl9" "pm5" \ +# "print modename of long powerset location" +# test_print_accept "print pl9" {\[-2147483648:2147483647\]} \ +# "print powerset location 9" + + # reference modes + test_print_accept "ptype ref3l" "PTR" "print mode of reference location" + # setup_xfail "*-*-*" + test_print_accept "whatis ref3l" "ref3" \ + "print modename of reference location" + # setup_xfail "*-*-*" + test_print_accept "print ref3l" "ref3\\(H'.*\\)" \ + "print reference location" + test_print_accept "ptype ref4l" "PTR" "print mode of reference location" + # setup_xfail "*-*-*" + test_print_accept "whatis ref4l" "ref4" \ + "print modename of reference location" + # setup_xfail "*-*-*" + test_print_accept "print ref4l" "ref4\\(H'.*\\)" \ + "print reference location" + test_print_accept "ptype ref5l" "PTR" "print mode of reference location" + test_print_accept "whatis ref5l" "PTR" \ + "print modename of reference location" + test_print_accept "print ref5l" "PTR\\(H'.*\\)" \ + "print reference location" + + # dereference a little bit.. + test_print_accept "print ref6l->syn_int" "42" \ + "dereference reference to synmode location" + test_print_accept "print ref7l->int" "-42" \ + "dereference reference to predefined mode location" + test_print_accept "print ref8l->pm1" \ + "\[\[\]p1:p10\[\]\]" \ + "dereference reference to newmode location" + + # synchronization mode locations + # FIXME: synchronization modes are not supported so far... + xfail "no synchronization mode location support, not implemented yet" + + # timing mode locations + # FIXME: callbacks to abstime, inttime not implemented + xfail "timing modes not implemented properly yet" + + # char string locations + # some tests are don in chillvars.exp + test_print_accept "ptype strl1" \ + "CHARS \\(7\\) VARYING" \ + "print varying string location" + test_print_accept "whatis strl1" "strm2" \ + "print string locationa mode name" + test_print_accept "print strl1" \ + {\"hansi\^\(0\)\"} \ + "print string location" + # string elements + test_print_accept "print strl1(0)" "\'h\'" \ + "print string element 1" + test_print_accept "print strl1(5)" {'\^[(]0[)]'} \ + "print string element 2" + test_print_accept "print strl1(3)" "\'s\'" \ + "print string element 3" + test_print_accept "ptype strl1(0)" "char" \ + "print mode of string element" + # slices + test_print_accept "print strl1(3:4)" "\"si\"" \ + "print string slice 1" + test_print_accept "print strl1(0:5)" \ + {\"hansi\^\(0\)\"} \ + "print string slice 2" + test_print_accept "print strl1(0:0)" "\"h\"" \ + "print string slice 3" + test_print_accept "print strl1(0 up 6)" \ + {\"hansi\^\(0\)\"} \ + "print string slice 4" + # FIXME: adjust error message, when implented + gdb_test "print strl1(6 up 1)" \ + ".*slice.*out of range.*" \ + "print invalid string slice length" + gdb_test "print strl1(-1 up 5)" \ + ".*slice.*out of range.*" \ + "print invalid string slice length" + gdb_test "print strl1(-1:5)" \ + ".*slice.*out of range.*" \ + "print invalid string slice" + gdb_test "print strl1(-1:7)" \ + ".*slice.*out of range.*" \ + "print invalid string slice" + gdb_test "print strl1(0 up -1)" \ + ".*slice.*out of range.*" \ + "print invalid string slice length" + gdb_test "print strl1(0 up 0)" {""} + + # bitstring locations + test_print_accept "ptype bstr1" \ + "BOOLS \\(20\\)" \ + "print mode of bitstring location" + test_print_accept "whatis bstrl1" "bstr1" \ + "print mode name of bitstring location" + test_print_accept "print bstrl1" \ + "B'10101010101010101010'" \ + "print bitstring location" + + test_print_accept "ptype bstrl1(0)" "bool|BOOL" \ + "print mode of bitstring element" + test_print_accept "print bstrl1(0)" "TRUE" \ + "print bitstring element 1" + test_print_accept "print bstrl1(19)" "FALSE" \ + "print bitstring element 2" + test_print_accept "print bstrl1(10)" "TRUE" \ + "print bitstring element 3" + + test_print_accept "print bstrl1(0:19)" \ + "B'10101010101010101010'" \ + "print bitstring location slice 1" + test_print_accept "print bstrl1(0:0)" \ + "B'1'" \ + "print bitstring location slice 2" + test_print_accept "print bstrl1(3:9)" \ + "B'0101010'" \ + "print bitstring location slice 3" + test_print_accept "print bstrl1(0 up 20)" \ + "B'10101010101010101010'" \ + "print bitstring location slice 4" + test_print_accept "print bstrl1(19 up 1)" \ + "B'0'" \ + "print bitstring location slice 5" + gdb_test "print bstrl1(20 up 1)" \ + ".*slice out of range.*" \ + "print invalid bitstring slice (20 up 1)" + gdb_test "print bstrl1(-4:5)" \ + ".*slice out of range.*" \ + "print invalid bitstring slice (-4:5)" + gdb_test "print bstrl1(-1:up 1)" \ + ".*invalid expression syntax.*" \ + "print invalid bitstring slice (-1:ip 1)" + gdb_test "print bstrl1(-1:20)" \ + ".*slice out of range.*" \ + "print invalid bitstring slice (-1:20)" + gdb_test "print bstrl1(0 up -1)" \ + ".*slice out of range.*" \ + "print invalid bitstring slice (0 up -1)" + test_print_accept "print bstrl1(4 up 0)" "B''" + + # array mode locations + gdb_test_exact "ptype arrl1" \ + "ARRAY (1:100) set1" \ + "print mode of array location" + gdb_test "whatis arrl1" "arr1m" \ + "print mode name of array location" + gdb_test_exact "print arrl1" {[(1:100): aaa]} \ + "print array location" + test_print_accept "ptype arrl1(1)" \ + "SET \\(aaa, bbb, ccc\\)" \ + "print mode of array element" + gdb_test_exact "print arrl3" \ + {[(1:5): [(1:3): [(1:2): -2147483648]]]} \ + "print array location 2" + gdb_test_exact "print arrl3(1)" \ + {[(1:3): [(1:2): -2147483648]]} \ + "print array location 3" + gdb_test_exact "ptype arrl3(1)" \ + {ARRAY (1:3) ARRAY (1:2) long} \ + "print mode of array element" + test_print_accept "print arrl3(5)" \ + {\[\(1:3\): \[\(1:2\): -2147483648\]\]} \ + "print array location 4" + test_print_accept "print arrl3(1,1)" \ + {\[\(1:2\): -2147483648\]} \ + "print array location 5" + test_print_accept "ptype arrl3(1,1)" \ + {ARRAY \(1:2\) long} \ + "print mode of array element" + test_print_accept "print arrl3(5,3)" \ + {\[\(1:2\): -2147483648\]} \ + "print array location 6" + test_print_accept "print arrl3(1,1,1)" \ + "-2147483648" \ + "print array location 7" + test_print_accept "print arrl3(5,3,2)" \ + "-2147483648" \ + "print array location 8" + test_print_accept "print arrl3(1)(3)(2)" \ + "-2147483648" \ + "print array location 9" + + # reject the following range fails + # FIXME: adjust error messages + gdb_test "print arrl3(-1)" \ + ".*out of range.*" \ + "check invalid array indices 1" + gdb_test "print arrl3(6)" \ + ".*out of range.*" \ + "check invalid array indices 2" + gdb_test "print arrl3(0,0)" \ + ".*out of range.*" \ + "check invalid array indices 3" + gdb_test "print arrl3(1,0)" \ + ".*out of range.*" \ + "check invalid array indices 4" + gdb_test "print arrl3(1,4)" \ + ".*out of range.*" \ + "check invalid array indices 5" + gdb_test "print arrl3(6,4)" \ + ".*out of range.*" \ + "check invalid array indices 6" + gdb_test "print arrl3(1,1,0)" \ + ".*out of range.*" \ + "check invalid array indices 7" + gdb_test "print arrl3(6,4,0)" \ + ".*out of range.*" \ + "check invalid array indices 8" + gdb_test "print arrl3(1,1,3)" \ + ".*out of range.*" \ + "check invalid array indices 9" + + gdb_test "print arrl3(0)(0)" \ + ".* array or string index out of range.*" \ + "check invalid array indices 10" + gdb_test "print arrl3(1)(0)" \ + ".* array or string index out of range.*" \ + "check invalid array indices 11" + gdb_test "print arrl3(1)(4)" \ + ".* array or string index out of range.*" \ + "check invalid array indices 12" + gdb_test "print arrl3(6)(4)" \ + ".* array or string index out of range.*" \ + "check invalid array indices 13" + gdb_test "print arrl3(1)(1)(0)" \ + ".* array or string index out of range.*" \ + "check invalid array indices 14" + gdb_test "print arrl3(6)(4)(0)" \ + ".* array or string index out of range.*" \ + "check invalid array indices 15" + gdb_test "print arrl3(1)(1)(3)" \ + ".* array or string index out of range.*" \ + "check invalid array indices 16" + + # slices + test_print_accept "print arrl4(1:3)" \ + {\[\(1:2\): \[\(1:3\): \[\(1:2\): -2147483648\]\], \(3\): \[\(1:3\): \[\(1:2\): 100\]\]\]} \ + "print array slice 1" + test_print_accept "ptype arrl4(1:3)" \ + {ARRAY \(1:3\) ARRAY \(1:3\) ARRAY \(1:2\) long} \ + "print mode of array slice" +# The next one is bogus: +# test_print_accept "print arrl4(5, 2:3, 1)" \ +# # FIXME: maybe the '(1): ' in the inner tupel should be omitted ? \ +# {\[(2): \[\(1\): 100\], \(3\):\[\(1\): 100\]\]} \ +# "print array slice 2" + test_print_accept "print arrl4(1 up 4)" \ + {\[\(1:2\): \[\(1:3\): \[\(1:2\): -2147483648\]\], \(3\): \[\(1:3\): \[\(1:2\): 100\]\], \(4\): \[\(1:3\): \[\(1:2\): -2147483648\]\]\]} \ + "print array slice 3" +# The next two are bogus: +# test_print_accept "print arrl4(3, 2 up 1)" \ +# {\[\(2:3\): \[\(1:2\): 100\]\]} \ +# "print array slice 4" +# test_print_accept "print arrl4(1:2, 1 up 1, 2)" \ +# {\[\(1\): \[\(1\): \[\(2\): -2147483648\], \(2\): \[\(2\): -2147483648\]\], \(2\): \[\(1\): \[\(2\): -2147483648\], \(2\): \[\(2\): -2147483648\]\]\]} \ +# "print array slice 4" + # reject invalid slices + # FIXME: adjust error messages + gdb_test "print arrl4(5:6)" \ + ".*slice out of range.*" \ + "check invalid range 1" + gdb_test "print arrl4(0:1)" \ + ".*slice out of range.*" \ + "check invalid range 2" + gdb_test "print arrl4(0:6)" \ + ".*slice out of range.*" \ + "check invalid range 3" + gdb_test "print arrl4(3:2)" \ + ".*slice out of range.*" \ + "check invalid range 4" + gdb_test "print arrl4(1,3:4)" \ + ".*syntax error.*" \ + "check invalid range 5" + gdb_test "print arrl4(1,0:1)" \ + ".*syntax error.*" \ + "check invalid range 6" + gdb_test "print arrl4(1,0:4)" \ + ".*syntax error.*" \ + "check invalid range 7" + gdb_test "print arrl4(1,3:2)" \ + ".*syntax error.*" \ + "check invalid range 8" + gdb_test "print arrl4(5 up 2)" \ + ".*slice out of range.*" \ + "check invalid range 9" + gdb_test "print arrl4(-1 up 1)" \ + ".*slice out of range.*" \ + "check invalid range 10" + gdb_test "print arrl4(-1 up 7)" \ + ".*slice out of range.*" \ + "check invalid range 11" + gdb_test "print arrl4(1 up 0)" \ + ".*slice out of range.*" \ + "check invalid range 12" + gdb_test "print arrl4(1,3 up 1)" \ + ".*syntax error.*" \ + "check invalid range 13" + gdb_test "print arrl4(1,-1 up 1)" \ + ".*syntax error.*" \ + "check invalid range 14" + gdb_test "print arrl4(1,-1 up 5)" \ + ".*syntax error.*" \ + "check invalid range 15" + gdb_test "print arrl4(1,2 up 0)" \ + ".*syntax error.*" \ + "check invalid range 16" + + # structure modes + # some tests are in chillvars.exp + # FIXME: no tag processing implemented do maybe adjust these tests + setup_xfail "*-*-*" + test_print_accept "ptype stru1m" \ + "STRUCT \\(.*a long,.*b long,.*CASE b OF.*\\(42\\):.*ch1 CHARS\\(20\\),.*\\(52\\):.*ch2 CHARS\\(10\\).*ELSE.*ch3 CHARS\\(1\\).*ESAC.*\\)" \ + "print mode of structure location 1" + test_print_accept "whatis strul1" "stru1m" \ + "print mode name of structure location 1" + setup_xfail "*-*-*" + test_print_accept "print strul1" \ + {\[\.a: -2147483648, \.b: 42, \.\(b\): \{\(42\) = \[\.ch1: \"12345678900987654321\"\], \(52\) = \[\.ch2: \"1234567890\"\], (else) = \[\.ch3: \"1\"\]\}\]} \ + "print structure location 1" + test_print_accept "print strul1.a" \ + "-2147483648" \ + "print field of structure location 1" + test_print_accept "print strul1.b" "42" \ + "print field of structure location 1" + test_print_accept "print strul1.ch1" \ + "\"12345678900987654321\"" \ + "print field of structure location 1" + # setup_xfail "*-*-*" + test_print_accept "print strul1.ch2" \ + "\"1234567890\"" \ + "print field of structure location 1" + # setup_xfail "*-*-*" + test_print_accept "print strul1.ch3" \ + "\"1\"" \ + "print field of structure location 1" + + if $passcount then { + pass "$passcount correct locations printed" + } +} + +# This is chill/9434 + +proc test_9434 {} { + global passcount + + verbose "testing pr-9434" + + test_print_accept "ptype m_xyzmode" "STRUCT \\(.*next REF m_xyzmode,.*i long.*\\)" +} + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test "set print sevenbit-strings" ".*" + +if [set_lang_chill] then { + test_modes + test_locations + test_9434 +} else { + warning "$test_name tests suppressed." +} Index: tests2.exp =================================================================== --- tests2.exp (nonexistent) +++ tests2.exp (revision 1765) @@ -0,0 +1,271 @@ +# Copyright (C) 1992, 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set prms_id 0 +set bug_id 0 + +# Set the current language to chill. This counts as a test. If it +# fails, then we skip the other tests. + +set testfile "tests2" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +global infinity +if [istarget "i*86-*-sysv4*"] then { + set infinity "inf" +} else { + set infinity "Infinity" +} + +proc set_lang_chill {} { + global gdb_prompt + global binfile objdir subdir + + if ![file exists $objdir/$subdir/$binfile] then { + return 0 + } + verbose "loading file '$objdir/$subdir/$binfile'" + gdb_load $objdir/$subdir/$binfile + + send_gdb "set language chill\n" + gdb_expect { + -re ".*$gdb_prompt $" {} + timeout { fail "set language chill (timeout)" ; return 0 } + } + + send_gdb "show language\n" + gdb_expect { + -re ".* source language is \"chill\".*$gdb_prompt $" { + pass "set language to \"chill\"" + send_gdb "break dummyfunc\n" + gdb_expect { + -re ".*$gdb_prompt $" { + send_gdb "run\n" + gdb_expect -re ".*$gdb_prompt $" {} + return 1 + } + timeout { + fail "can't set breakpoint (timeout)" + return 0 + } + } + } + -re ".*$gdb_prompt $" { + fail "setting language to \"chill\"" + return 0 + } + timeout { + fail "can't show language (timeout)" + return 0 + } + } +} + +# checks if structure was accessed correctly +proc test_write { args } { + global gdb_prompt + + if [llength $args]==5 then { + set message [lindex $args 4] + set extended [lindex $args 3] + set matchval [lindex $args 2] + } elseif [llength $args]==4 then { + set message [lindex $args 3] + set matchval [lindex $args 2] + set extended "" + } elseif [llength $args]==3 then { + set message [lindex $args 2] + set extended "" + } else { + warning "test ($args) write called with wrong number of arguments" + return + } + + set location [lindex $args 0] + set value [lindex $args 1] + if ![info exists matchval] then { + set matchval $value + } + verbose "loc: $location, val: $value, msg: $message, ext: $extended, match: $matchval" + + verbose "setting var $value..." + send_gdb "set var $location.m$extended := $value\n" + gdb_expect -re ".*$gdb_prompt $" {} + gdb_test "print $location" \ + ".*= \[\[\]\\.p1: 2863311530, \\.m: $matchval, \\.p2: 1431655765\[\]\]"\ + "$message" +} + +# test write access from gdb (setvar x:=y) from gdb +proc write_access { } { + global infinity + + verbose "testing write access to locations" + + # discrete modes + test_write b1 127 "byte write 1" + test_write b1 -128 "byte write 2" + test_write b1 0 "byte write 3" + test_write ub1 255 "ubyte write 1" + test_write ub1 0 "ubyte write 2" + test_write ub1 42 "ubyte write 3" + test_write i1 32767 "int write 1" + test_write i1 -32768 "int write 2" + test_write i1 0 "int write 3" + test_write ui1 65535 "uint write 1" + test_write ui1 0 "uint write 2" + test_write ui1 123 "uint write 3" + test_write l1 2147483647 "long write 1" + test_write l1 -2147483648 "long write 2" + test_write l1 0 "long write 3" + test_write ul1 4294967295 "ulong write 1" + test_write ul1 0 "ulong write 2" + test_write ul1 1000000 "ulong write 3" + test_write bo1 FALSE "bool write 1" + test_write bo1 TRUE "bool write 2" + test_write c1 \"1234\" "char write 1" + test_write c2 \"1234567\" "char write 2" + test_write c3 \"654321\" "char write 3" + test_write c4 C'65' 'e' "char write 4" + test_write bi1 B'10100101' "bitstring write 1" + test_write bi2 B'0101001010' "bitstring write 2" + test_write se1 a "set write 1" + test_write se1 h "set write 2" + # The following two use numbered sets with too-large values. + setup_xfail "*-*-*" + test_write nse1 nb "numbered set write 1" + setup_xfail "*-*-*" + test_write nse1 nc "numbered set write 2" + test_write r1 127 "range write 1" + test_write r2 32767 "range write 2" + test_write r3 2147483647 "range write 3" + + # powerset modes + test_write p1 {[pa:ph]} {\[pa:ph\]} "powerset write 1" + test_write p1 {[pa, pc:pf, ph]} {\[pa, pc:pf, ph\]} "powerset write 2" + test_write p1 {[pa, pc, pe, pg]} {\[pa, pc, pe, pg\]} "powerset write 3" + test_write p1 {[]} {\[\]} "powerset write 4" + test_write p2 {[1:32]} {\[1:32\]} "powerset write 5" + test_write p2 {[1, 3:30, 32]} {\[1, 3:30, 32\]} "powerset write 6" + test_write p2 {[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]} {\[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31\]} \ + "powerset write 7" + test_write p2 {[]} {\[\]} "powerset write 8" + +# Fixme: this should be rejected by gnuchill +# test_write p3 {[-2147483648:2147483647]} {\[-2147483648:2147483647\]} \ +# "powerset write 9" +# test_write p3 {[-2147483648, -1000000:1000000, 2147483647]} \ +# {\[-2147483648, -1000000:1000000, 2147483647\]} \ +# "powerset write 10" +# test_write p3 {[-99, -97, -95, 1001, 1003, 1005]} \ +# {\[-99, -97, -95, 1001, 1003, 1005\]} "powerset write 11" +# test_write p3 {[]} {\[\]} "powerset write 12" + + # reference modes + test_write ref1 ->ref1 {H'[0-9a-fA-F]+} "reference write 1" + test_write ref2 ->b1 {H'[0-9a-fA-F]+} "reference write 2" + test_write ref1 NULL "reference write 3" + test_write ref2 NULL "reference write 4" + + # procedure modes + test_write pr1 NULL "procefure write 1" + # FIXME: remove when NULL is understood + test_write pr1 0 NULL "procefure write 2" + test_write pr1 dummyfunc {H'[0-9a-fA-F]+ } "procedure write 3" + + # timing modes, FIXME when callbacks to timefunctions are implemented + #test_write ti1 abstime(1970, 3, 12, 10, 43, 0) {} "time write 1" + #test_write ti2 + xfail "timing modes not implemented yet" + + # real modes + # This ones + test_write re1 42.03 {42.0[0-9]*} "real write 1" + test_write re1 0 "real write 2" + test_write re1 "1e+38" {1e\+38|1\.0[0-9]*e\+38|9\.9[0-9]*e\+37} \ + "real write 3" + setup_xfail "i*86-pc-linux-gnu" "m68*-*-hpux*" + test_write re1 "1e+39" $infinity "real write 4" + test_write re2 42.03 {42.0[0-9]*} "real write 5" + test_write re2 0 "real write 6" + test_write re2 "1e+308" {1e\+308} "real write 7" + setup_xfail "i*86-pc-linux-gnu" "m68*-*-hpux*" + test_write re2 "1e+309" $infinity "real write 8" + # array modes + test_write arrl1 {[(1:3): [(1:2): -128]]} {\[\(1:3\): \[\(1:2\): -128\]\]}\ + "array write 1" + test_write arrl1 {[(1:3): [(1:2): 0]]} {\[\(1:3\): \[\(1:2\): 0\]\]}\ + "array write 2" + test_write arrl1 {[(1): [(1:2): 127], (2): [(1:2): -128], (3): [(1:2): 127]]} {\[\(1\): \[\(1:2\): 127\], \(2\): \[\(1:2\): -128\], \(3\): \[\(1:2\): 127\]\]}\ + "array write 3" + test_write arrl1 {[(1:3): [(1:2): 0]]} {\[\(1:3\): \[\(1:2\): 0\]\]}\ + "array write 4" + setup_xfail "*-*-*" + # Bogus test case - type mismatch? + test_write arrl1 {[(1): 127, (2): -128]} "array write 5" + test_write arrl1 {[(1:3): [(1:2): 0]]} {\[\(1:3\): \[\(1:2\): 0\]\]}\ + "array write 6" + + # structure modes + test_write strul1 {[.a: -32768, .b: 32767, .ch: "ZZZZ"]} \ + {\[\.a: -32768, \.b: 32767, \.ch: \"ZZZZ\"\]} \ + "structure write 1" + test_write strul1 {[.a: 0, .b: 0, .ch: "0000"]} \ + {\[\.a: 0, \.b: 0, \.ch: \"0000\"\]} \ + "structure write 2" + test_write strul1 -32768 {\[\.a: -32768, \.b: 0, \.ch: \"0000\"\]} \ + {.a} "structure write 3" + test_write strul1 {[.a: 0, .b: 0, .ch: "0000"]} \ + {\[\.a: 0, \.b: 0, \.ch: \"0000\"\]} \ + "structure write 4" + test_write strul1 -32768 {\[\.a: 0, \.b: -32768, \.ch: \"0000\"\]} \ + {.b} "structure write 5" + test_write strul1 {[.a: 0, .b: 0, .ch: "0000"]} \ + {\[\.a: 0, \.b: 0, \.ch: \"0000\"\]} \ + "structure write 6" + test_write strul1 \"HUGO\" {\[\.a: 0, \.b: 0, \.ch: \"HUGO\"\]} \ + {.ch} "structure write 7" +} + +# Start with a fresh gdb. + +set binfile "tests2.exe" + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test "set print sevenbit-strings" ".*" + +if [set_lang_chill] then { + write_access +} else { + warning "$test_name tests suppressed." +} Index: enum.ch =================================================================== --- enum.ch (nonexistent) +++ enum.ch (revision 1765) @@ -0,0 +1,9 @@ +hugo: module + + synmode m_set = set (a, b, c, d, e, f, g, h, i); + dcl x long; + dcl y m_set; + + writetext (stdout, "done.%/"); + +end hugo; Index: gch981.exp =================================================================== --- gch981.exp (nonexistent) +++ gch981.exp (revision 1765) @@ -0,0 +1,249 @@ +# Copyright (C) 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file tests various Chill values, expressions, and types. + +# This file was written by Wilfried Moser (moser@aut.alcatel.at) +# Kurt Fuchs (fuchs_k@aut.alcatel.at) +# + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "gch981" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -w -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +# Set the current language to chill. This counts as a test. If it +# fails, then we skip the other tests. + +proc set_lang_chill {} { + global gdb_prompt + global binfile objdir subdir + + verbose "loading file '$binfile'" + gdb_load $binfile + send_gdb "set language chill\n" + gdb_expect { + -re ".*$gdb_prompt $" {} + timeout { fail "set language chill (timeout)" ; return 0 } + } + + send_gdb "show language\n" + gdb_expect { + -re ".* source language is \"chill\".*$gdb_prompt $" { + pass "set language to \"chill\"" + send_gdb "break xx_\n" + gdb_expect { + -re ".*$gdb_prompt $" { + send_gdb "run\n" + gdb_expect -re ".*$gdb_prompt $" {} + return 1 + } + timeout { + fail "can't set breakpoint (timeout)" + return 0 + } + } + } + -re ".*$gdb_prompt $" { + fail "setting language to \"chill\"" + return 0 + } + timeout { + fail "can't show language (timeout)" + return 0 + } + } +} + +# Testing printing of a specific value. Increment passcount for +# success or issue fail message for failure. In both cases, return +# a 1 to indicate that more tests can proceed. However a timeout +# is a serious error, generates a special fail message, and causes +# a 0 to be returned to indicate that more tests are likely to fail +# as well. +# +# Args are: +# +# First one is string to send_gdb to gdb +# Second one is string to match gdb result to +# Third one is an optional message to be printed + +proc test_print_accept { args } { + global gdb_prompt + global passcount + global verbose + + if [llength $args]==3 then { + set message [lindex $args 2] + } else { + set message [lindex $args 0] + } + set sendthis [lindex $args 0] + set expectthis [lindex $args 1] + set result [gdb_test $sendthis ".* = ${expectthis}" $message] + if $result==0 {incr passcount} + return $result +} + +proc test_power {} { + global passcount gdb_prompt + + verbose "Testing some POWERSET Stuff" + set passcount 0 + + test_print_accept "print v1_power1" {\[e1:e5\]} + test_print_accept "print v2_power1" {\[\]} + test_print_accept "print SIZE(v1_power1)" "1" + + gdb_test "set v1_power1 := \[b1\]" "" +# if GDB has rejected the improper values, we have to gdb_expect the same! + test_print_accept "print v1_power1" {\[e1:e5\]} + + gdb_test "set v1_power1 := \[a1,a2\]" "" + test_print_accept "print v1_power1" {\[e1:e5\]} + gdb_test "set v1_power1 := \[b1,b2,b3,e4\]" "" + test_print_accept "print v1_power1" {\[e1:e5\]} + gdb_test "set v1_power1 := \[e4:e5\]" "" + test_print_accept "print v1_power1" {\[e4:e5\]} + gdb_test "set v1_power1 := \[e1, e2:e3, e5\]" "" + test_print_accept "print v1_power1" {\[e1:e3, e5\]} + gdb_test "set v1_power1 := \[e1, e2:e4, e4:e5\]" "" + test_print_accept "print v1_power1" {\[e1:e5\]} + gdb_test "set v1_power1 := \[e1, e1:e3, e1:e2, e2:e3\]" "" + test_print_accept "print v1_power1" {\[e1:e3\]} + + gdb_test "set v_power2 := \[e2\]" "" + test_print_accept "print v_power2" {\[\]} + gdb_test "set v_power2 := \[1,2,3\]" "" + test_print_accept "print v_power2" {\[\]} + gdb_test "set v_power2 := \[e2, b2, b1\]" "" + test_print_accept "print v_power2" {\[\]} + +# Note, that this is a numbered SET, so a1:a3 contains all elements (exept a6) + gdb_test "set v_power2 := \[a1:a3, a6:a4, a7:a9\]" "" + test_print_accept "print v_power2" {\[a6:a3\]} + gdb_test "set v_power2 := \[a1, a4:a6, a9\]" "" + test_print_accept "print v_power2" {\[a1, a9\]} + gdb_test "set v_power2 := \[a1:a2, a6, a9\]" "" + test_print_accept "print v_power2" {\[a6:a2, a9\]} + gdb_test "set v_power2 := \[a1, a4, a7:a8, a9:a3\]" "" + test_print_accept "print v_power2" {\[a1, a4, a9:a8\]} + gdb_test "set v_power2 := \[a1, a4:a8\]" "" + test_print_accept "print v_power2" {\[a1, a4:a8\]} + gdb_test "set v_power2 := \[a8,a3,a7,a9,a5,a6\]" "" + test_print_accept "print v_power2" {\[a6, a5, a9, a7, a3, a8\]} + + gdb_test "set v_power3 := \[b1:b2,e1\]" "" + test_print_accept "print v_power3" {\[b1:b2\]} + gdb_test "set v_power3 := \[b1, b3, b6:b7\]" "" + test_print_accept "print v_power3" {\[b1, b3, b6:b7\]} + gdb_test "set v_power3 := \[b1, b3:b4, b7\]" "" + test_print_accept "print v_power3" {\[b1, b3:b4, b7\]} + gdb_test "set v_power3 := \[b1, b4:b6, b7\]" "" + test_print_accept "print v_power3" {\[b1, b4:b7\]} + gdb_test "set v_power3 := \[b1:b7\]" "" + test_print_accept "print v_power3" {\[b1:b7\]} + gdb_test "set v_power3 := \[b5:b7, b1\]" "" + test_print_accept "print v_power3" {\[b1, b5:b7\]} + + gdb_test "set v_power4 := \[\"b\"\]" "" + test_print_accept "print v_power4" {\['b':'x'\]} + gdb_test "set v_power4 := \[5\]" "" + test_print_accept "print v_power4" {\['b':'x'\]} + gdb_test "set v_power4 := \['c':'f','g':'h','o':'t'\]" "" + test_print_accept "print v_power4" {\['c':'h', 'o':'t'\]} + gdb_test "set v_power4 := \['a','b','c','d','e','f'\]" "" + test_print_accept "print v_power4" {\['a':'f'\]} + gdb_test "set v_power4 := \['\^(0)':'\^(200)'\]" "" + test_print_accept "print v_power4" {\['\^\(0\)':'\^\(200\)'\]} + + gdb_test "set v_power5 := \[a8\]" "" + test_print_accept "print v_power5" {\[2:100\]} + gdb_test "set v_power5 := \[4\]" "" + test_print_accept "print v_power5" {\[4\]} + gdb_test "set v_power5 := \[3:95,9:100,10:107,200:250\]" "" + test_print_accept "print v_power5" {\[3:107, 200:250\]} + gdb_test "set v_power5 := \[2, 100:120, 350:400\]" "" + test_print_accept "print v_power5" {\[2, 100:120, 350:400\]} + gdb_test "set v_power5 := \[2:64,65:127,128:256,256:399,400\]" "" + test_print_accept "print v_power5" {\[2:400\]} + gdb_test "set v_power5 := \[3:95, 99:100, 101:107, 200:250\]" "" + test_print_accept "print v_power5" {\[3:95, 99:107, 200:250\]} + + gdb_test "set v_power6 := \[a8\]" "" + test_print_accept "print v_power6" {\[\]} + gdb_test "set v_power6 := \[4\]" "" + test_print_accept "print v_power6" {\[4\]} + gdb_test "set v_power6 := \[3:95, 99:100, 101:107, 200:250\]" "" + test_print_accept "print v_power6" {\[3:95, 99:107, 200:250\]} + gdb_test "set v_power6 := \[-111:0, 1:112, 11111:22222\]" "" + test_print_accept "print v_power6" {\[-111:112, 11111:22222\]} + gdb_test "set v_power6 := \[0, 200:4000, 6666:9999\]" "" + test_print_accept "print v_power6" {\[0, 200:4000, 6666:9999\]} + +# gdb_test "set v_power7 := \[a8\]" "" +# test_print_accept "print v_power7" {\[2:100\]} +# gdb_test "set v_power7 := \[4\]" "" +# test_print_accept "print v_power7" {\[4\]} +# gdb_test "set v_power7 := \[3:95, 99:100, 101:107, 200:250\]" "" +# test_print_accept "print v_power7" {\[3:95, 99:107, 200:250\]} +# gdb_test "set v_power7 := \[0, 1000, 1000000, 10000000000\]" "" +# test_print_accept "print v_power7" {\[0, 1000, 1000000, 1000000000\]} +# gdb_test "set v_power7 := \[-20000:100000, 111111:2222222\]" "" +# test_print_accept "print v_power7" {\[-20000:100000, 111111:2222222\]} +# gdb_test "set v_power7 := \[\]" "" +# test_print_accept "print v_power7" {\[3:95, 99:107, 200:250\]} +# gdb_test "set v_power7 := \[2:-500, -501:1, 20:370, -888:-920, 1000:2000, 1800:2500\]\ " "" +# test_print_accept "print v_power7" {\[-920:-888, -501:2, 20:370, 1000:2500\]} +# test_print_accept "print SIZE(v_power7)" "" + + + runto 58 + test_print_accept "print v_set1 IN v1_power1" "TRUE" + test_print_accept "print v_set1 IN v2_power1" "FALSE" + +} + + + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test "set print sevenbit-strings" ".*" + + +if [set_lang_chill] then { + # test builtins as described in chapter 6.20.3 Z.200 + + test_power +} else { + warning "$test_name tests suppressed." +} Index: powerset.ch =================================================================== --- powerset.ch (nonexistent) +++ powerset.ch (revision 1765) @@ -0,0 +1,33 @@ +-- +-- check powerset operators and built-ins +-- + +ps: MODULE + +SYNMODE m_ps1 = POWERSET ULONG (0:8); +DCL v_ps1 m_ps1 INIT := [1,3,5,7]; + +SYNMODE m_ps2 = POWERSET LONG (-100:100); +DCL v_ps2 m_ps2 INIT := [ -100:-95, -1:1, 95:100]; + +SYNMODE m_set = SET (aa, bb, cc, dd, ee, ff, gg, hh, ii, jj); +SYNMODE m_ps3 = POWERSET m_set; +DCL v_ps3 m_ps3 INIT := [bb, dd, ff, ii]; + +SYNMODE m_ps4 = POWERSET CHAR(' ':'z'); +DCL v_ps4 m_ps4 INIT := [ '.', ',', 'A':'F', 'x':'z' ]; + +SYNMODE m_ps5 = POWERSET BOOL; +DCL v_ps5 m_ps5 INIT := [ FALSE ]; +DCL v_ps51 m_ps5 INIT := [ ]; + +SYNMODE m_int_range = INT(-100:100); +SYNMODE m_int_subrange = m_int_range(-50:50); +SYNMODE m_ps6 = POWERSET m_int_subrange; +DCL v_ps6 m_ps6 INIT := [ LOWER(m_int_subrange):UPPER(m_int_subrange) ]; + +DCL x INT; + +x := 25; + +END ps; Index: gch1041.exp =================================================================== --- gch1041.exp (nonexistent) +++ gch1041.exp (revision 1765) @@ -0,0 +1,76 @@ +# Copyright (C) 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Fred Fish. (fnf@cygnus.com) +# Martin Pottendorfer (pottendo@aut.alcatel.at) +# + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "gch1041" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +# Set the current language to chill. This counts as a test. If it +# fails, then we skip the other tests. + +proc set_lang_chill {} { + global gdb_prompt + global binfile objdir subdir + + verbose "loading file '$binfile'" + gdb_load $binfile + + send_gdb "set language chill\n" + gdb_expect { + -re ".*$gdb_prompt $" {} + timeout { fail "set language chill (timeout)" ; return 0 } + } + + return [gdb_test "show language" ".* source language is \"chill\".*" \ + "set language to \"chill\""] +} + +set prms_id 0 +set bug_id 0 + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test "set print sevenbit-strings" ".*" + +if ![set_lang_chill] then { + runto arr_ + # check if array slices print correct index + gdb_test {print a1(10:30)} { = \[\(10:30\): 33\]} + gdb_test {print a2(3:5)} { = \[\(3:5\): \[.l: 22, .c: "mowi", .b: TRUE\]\]} + gdb_test {print a3('a':'c')} { = \[\('a':'c'\): 'X'\]} + gdb_test {print a4(e2:e5)} { = \[\(e2:e5\): TRUE\]} +} Index: tuples.ch =================================================================== --- tuples.ch (nonexistent) +++ tuples.ch (revision 1765) @@ -0,0 +1,86 @@ +x: MODULE + +SYNMODE m_arri = ARRAY(1:5) INT; +DCL v_arri m_arri := [ -1, -2, -3, -4, -5 ]; + +SYNMODE m_arrui = ARRAY(1:5) UINT; +DCL v_arrui m_arrui := [ 1, 2, 3, 4, 5 ]; + +SYNMODE r1 = RANGE (1:5); +SYNMODE m_arrb = ARRAY(r1) BYTE; +DCL v_arrb m_arrb := [ -3, -4, -5, -6, -7 ]; + +SYNMODE m_arrub = ARRAY(r1) UBYTE; +DCL v_arrub m_arrub := [ 3, 4, 5, 6, 7 ]; + +SYNMODE m_arrc = ARRAY (1:5) CHAR; +DCL v_arrc m_arrc := [ '1', '2', '3', '4', '5' ]; + +SYNMODE m_ps = POWERSET r1; +DCL v_ps m_ps := [ 1, 3, 5 ]; + +DCL v_cv CHARS(20) VARYING := "foo"; + +SYNMODE m_arrbool = ARRAY(r1) BOOL; +DCL v_arrbool m_arrbool := [ true, false, true, false, true ]; + +DCL j r1 := 4; + +DCL i INT; + +newmode vstruct = struct (a, b long, + case b of + (42): ch8 chars(20), + (52): i long + else ch1 char + esac); + +DCL vstr vstruct := [ .a: 10, .b: 52, .i: 100 ]; + +i := 0; + +END x; + +setmode: MODULE /* This is from Cygnus PR chill/5024. */ + +NEWMODE day = SET( monday, tuesday, wednesday, thursday, friday, saturday, sunday ); +NEWMODE dow = POWERSET day; + +DCL d day; +DCL w dow; + +printdow: PROC( w dow ); + DCL d day; + DO FOR d in w; + WRITETEXT( stdout, "%C ", d ); + OD; +END; + +d := monday; +w := dow[monday : friday]; +printdow( w ); + +printdow( dow[LOWER(dow) : UPPER(dow)] ); + +END setmode; + +PR8643: MODULE + +SYNMODE m_set = SET (a, b, c, d); +SYNMODE m_ps = POWERSET m_set; + +SYNMODE m_s1 = STRUCT (str CHARS(40) VARYING, i INT, ps m_ps); +DCL vs1 m_s1; + +SYNMODE m_s2 = STRUCT (i LONG, s m_s1); +DCL vs2 m_s2; + +SYNMODE m_arr = ARRAY (1:3) BYTE; +SYNMODE m_s3 = STRUCT (i LONG, a m_arr); +DCL vs3 m_s3; + +DCL i LONG; + +i := 24; + +END PR8643; Index: pr-5646-grt.ch =================================================================== --- pr-5646-grt.ch (nonexistent) +++ pr-5646-grt.ch (revision 1765) @@ -0,0 +1,5 @@ +x: MODULE +NEWMODE a_set = SET (a, b, c, d); +NEWMODE a_ps = POWERSET a_set; +GRANT a_ps; +END; Index: gch1272.ch =================================================================== --- gch1272.ch (nonexistent) +++ gch1272.ch (revision 1765) @@ -0,0 +1,21 @@ +gch1272: MODULE + +SYNMODE m_array = ARRAY (0:99) INT; +DCL foo m_array; + +SYNMODE m_xxx = ARRAY (1:10) LONG; + +SYNMODE m_struct = STRUCT (i LONG, b BOOL); +SYNMODE m_bar = ARRAY (-10:20) m_struct; +DCL bar m_bar; + +SYNMODE m_ps = POWERSET LONG (0:20); + +brrr: PROC () +END; + +foo := [ (*): 222 ]; + +brrr (); + +END gch1272; Index: gch1280.exp =================================================================== --- gch1280.exp (nonexistent) +++ gch1280.exp (revision 1765) @@ -0,0 +1,76 @@ +# Copyright (C) 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Wilfried Moser (moser@aut.alcatel.at) +# + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "gch1280" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +# Set the current language to chill. This counts as a test. If it +# fails, then we skip the other tests. + +proc set_lang_chill {} { + global gdb_prompt + global binfile objdir subdir + + verbose "loading file '$binfile'" + gdb_load $binfile + + send_gdb "set language chill\n" + gdb_expect { + -re ".*$gdb_prompt $" {} + timeout { fail "set language chill (timeout)" ; return 0 } + } + + return [gdb_test "show language" ".* source language is \"chill\".*" \ + "set language to \"chill\""] +} + +set prms_id 0 +set bug_id 0 + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +gdb_test "set print sevenbit-strings" ".*" + +if ![set_lang_chill] then { + runto doit + gdb_test "next" "" + # check too many array elements + gdb_test {set var v_x := [1,2,3,4,5]} {Too many array elements} + gdb_test {set var $i := m_x[(3): 22, 25]} {Too many array elements} + gdb_test "set var \$i := m_x\[\(2\): 22, 25\]" "" + gdb_test {print $i} { = \[\(1\): 0, \(2\): 22, \(3\): 25\]} +} Index: pr-8405.ch =================================================================== --- pr-8405.ch (nonexistent) +++ pr-8405.ch (revision 1765) @@ -0,0 +1,19 @@ +emptybit: MODULE + +SYNMODE b8 = BOOLS(8); +SYN bit8 b8 = B'00000000'; + +SYNMODE char_m = CHARS(40) VARYING; + +SYNMODE stru_m = STRUCT (c char_m, b b8, boo BOOL); +DCL xx stru_m; + +SYNMODE m_stru = STRUCT (c char_m, i LONG, boo BOOL); +DCL yy m_stru; + +SYNMODE m_arr = ARRAY (1:10) LONG; +DCL zz m_arr; + +WRITETEXT (stdout, "%C%/", bit8); + +END emptybit; Index: pr-8136.ch =================================================================== --- pr-8136.ch (nonexistent) +++ pr-8136.ch (revision 1765) @@ -0,0 +1,34 @@ +-- NOTE: This test is used for pr-3134.exp as well as pr-8136. +func: MODULE + +<> USE_SEIZE_FILE "func1.grt" <> +SEIZE ALL; + +NEWMODE m_struct = STRUCT (i LONG, str CHARS(50) VARYING); +DCL insarr ARRAY (1:10) INT; + +DCL setrange m_setrange := e5; + +DCL ps m_ps := [ e3, e7:e9 ]; +DCL range_ps m_rangeps := [ 2, 3, 4, 28 ]; + +p1: PROC (first INT IN, last INT IN, s m_struct IN); + + DCL foo LONG := 3; + + startall: PROC () + DO FOR i := first to last; + insarr(i) := i; + OD; + DO FOR i := first TO last; + WRITETEXT (stdout, "insarr(%C) := %C%/", i, insarr(i)); + OD; + END startall; + + startall (); + +END p1; + +p1 (LOWER (insarr), UPPER (insarr), [ 10, "This is a string." ]); + +END func; Index: pr-6292.exp =================================================================== --- pr-6292.exp (nonexistent) +++ pr-6292.exp (revision 1765) @@ -0,0 +1,58 @@ +# Copyright (C) 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Per Bothner. (bothner@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile "pr-6292" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +proc do_tests {} { + global prms_id bug_id subdir objdir srcdir binfile gdb_prompt + + set prms_id 0 + set bug_id 0 + + # Start with a fresh gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile + + send_gdb "set language chill\n" ; + + gdb_test "break pr-6292.ch:15" "" + send_gdb "run\n"; gdb_expect -re "Breakpoint .*pr-6292.ch:15.*$gdb_prompt $" + gdb_test_exact "call klaus()" {here's klaus calling.} + gdb_test {set fred(10, i)} {a was '10'; b was '12'.} + gdb_test "print i" { = 13} "print i after call" +} + +do_tests Index: pr-5646.exp =================================================================== --- pr-5646.exp (nonexistent) +++ pr-5646.exp (revision 1765) @@ -0,0 +1,64 @@ +# Copyright (C) 1992, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Per Bothner. (bothner@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +if [skip_chill_tests] then { continue } + +set testfile2 "pr-5646-grt" +set srcfile2 ${srcdir}/$subdir/${testfile2}.ch +set objfile2 ${objdir}/$subdir/${testfile2}.o +if { [compile "${srcfile2} -g -c -o ${objfile2}"] != "" } { + perror "Couldn't compile ${srcfile2}" + return -1 +} + +set testfile "pr-5646" +set srcfile ${srcdir}/$subdir/${testfile}.ch +set binfile ${objdir}/${subdir}/${testfile}.exe +if { [compile "${srcfile} -g ${objfile2} -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +proc do_tests {} { + global prms_id bug_id subdir objdir srcdir binfile gdb_prompt + + set prms_id 0 + set bug_id 0 + + # Start with a fresh gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $binfile + + gdb_test "set language chill" "" + + runto p + gdb_test "next" "" + gdb_test_exact "print xx" {= [a:b]} +} + +do_tests

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.