diff options
author | Daniel Jacobowitz <drow@false.org> | 2007-10-08 12:41:25 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2007-10-08 12:41:25 +0000 |
commit | a912286e388254bfa8e1120e176ebab17c2a2fe8 (patch) | |
tree | 965127635491717dc05fc02a23b252d3cbf07ea8 /gdb/testsuite/gdb.pascal | |
parent | 4d439271949d14903407bc0cccf36a3c3d70c371 (diff) | |
download | gdb-a912286e388254bfa8e1120e176ebab17c2a2fe8.zip gdb-a912286e388254bfa8e1120e176ebab17c2a2fe8.tar.gz gdb-a912286e388254bfa8e1120e176ebab17c2a2fe8.tar.bz2 |
2007-10-08 Pierre Muller <muller@ics.u-strasbg.fr>
Daniel Jacobowitz <dan@codesourcery.com>
* Makefile.in (ALL_SUBDIRS): Add gdb.pascal.
* configure.ac (AC_OUTPUT): Add gdb.pascal/Makefile.
* configure: Regenerated.
* gdb.pascal/Makefile.in, gdb.pascal/hello.exp, gdb.pascal/hello.pas,
gdb.pascal/types.exp, lib/pascal.exp: New files.
Diffstat (limited to 'gdb/testsuite/gdb.pascal')
-rw-r--r-- | gdb/testsuite/gdb.pascal/Makefile.in | 24 | ||||
-rw-r--r-- | gdb/testsuite/gdb.pascal/hello.exp | 75 | ||||
-rw-r--r-- | gdb/testsuite/gdb.pascal/hello.pas | 15 | ||||
-rw-r--r-- | gdb/testsuite/gdb.pascal/types.exp | 110 |
4 files changed, 224 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.pascal/Makefile.in b/gdb/testsuite/gdb.pascal/Makefile.in new file mode 100644 index 0000000..431a4c7 --- /dev/null +++ b/gdb/testsuite/gdb.pascal/Makefile.in @@ -0,0 +1,24 @@ +VPATH = @srcdir@ +srcdir = @srcdir@ + +EXECUTABLES = hello/hello + +MISCELLANEOUS = + +all info install-info dvi install uninstall installcheck check: + @echo "Nothing to be done for $@..." + +clean mostlyclean: + -find . -name '*.o' -print | xargs rm -f + -find . -name '*.ali' -print | xargs rm -f + -find . -name 'b~*.ad[sb]' -print | xargs rm -f + -rm -f *~ a.out xgdb *.x *.ci *.tmp + -rm -f *~ *.o a.out xgdb *.x *.ci *.tmp + -rm -f core core.coremaker coremaker.core corefile $(EXECUTABLES) + -rm -f $(MISCELLANEOUS) twice-tmp.c + +distclean maintainer-clean realclean: clean + -rm -f *~ core + -rm -f Makefile config.status config.log + -rm -f *-init.exp + -rm -fr *.log summary detail *.plog *.sum *.psum site.* diff --git a/gdb/testsuite/gdb.pascal/hello.exp b/gdb/testsuite/gdb.pascal/hello.exp new file mode 100644 index 0000000..3d0a986 --- /dev/null +++ b/gdb/testsuite/gdb.pascal/hello.exp @@ -0,0 +1,75 @@ +# Copyright 2007 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +if $tracelevel then { + strace $tracelevel +} + +load_lib "pascal.exp" + +set testfile "hello" +set srcfile ${testfile}.pas +set binfile ${objdir}/${subdir}/${testfile} + +if {[gdb_compile_pascal "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug ]] != "" } { + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} +set bp_location1 [gdb_get_line_number "set breakpoint 1 here"] +set bp_location2 [gdb_get_line_number "set breakpoint 2 here"] + +if { [gdb_breakpoint ${srcfile}:${bp_location1}] } { + pass "setting breakpoint 1" +} +if { [gdb_breakpoint ${srcfile}:${bp_location2}] } { + pass "setting breakpoint 2" +} + +# Verify that "start" lands inside the right procedure. +if { [gdb_start_cmd] < 0 } { + untested start + return -1 +} + +# This test fails for gpc +# because debug information for 'main' +# is in some <implicit code> +gdb_test "" \ + ".* at .*hello.pas.*" \ + "start" + +gdb_test "cont" \ + "Breakpoint .*:${bp_location1}.*" \ + "Going to first breakpoint" +gdb_test "print st" \ + ".* = ''.*" \ + "Empty string check" + +# This test also fails for gpc because the program +# stops after the string has been written +# while it should stop before writing it +if { $pascal_compiler_is_gpc } { + setup_xfail *-*-* +} +gdb_test "cont" \ + "Breakpoint .*:${bp_location2}.*" \ + "Going to second breakpoint" +gdb_test "print st" \ + ".* = 'Hello, world!'.*" \ + "String after assignment check" diff --git a/gdb/testsuite/gdb.pascal/hello.pas b/gdb/testsuite/gdb.pascal/hello.pas new file mode 100644 index 0000000..e43a1a4 --- /dev/null +++ b/gdb/testsuite/gdb.pascal/hello.pas @@ -0,0 +1,15 @@ +program hello; + +var + st : string; + +procedure print_hello; +begin + Writeln('Before assignment'); { set breakpoint 1 here } + st:='Hello, world!'; + writeln(st); {set breakpoint 2 here } +end; + +begin + print_hello; +end. diff --git a/gdb/testsuite/gdb.pascal/types.exp b/gdb/testsuite/gdb.pascal/types.exp new file mode 100644 index 0000000..abf2aa1 --- /dev/null +++ b/gdb/testsuite/gdb.pascal/types.exp @@ -0,0 +1,110 @@ +# Copyright 1994, 1995, 1997, 1998, 2007 Free Software Foundation, Inc. +# Copyright 2007 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was adapted from old Chill tests by Stan Shebs +# (shebs@cygnus.com). +# Adapted to pascal by Pierre Muller + +if $tracelevel then { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +# Set the current language to pascal. This counts as a test. If it +# fails, then we skip the other tests. + +proc set_lang_pascal {} { + global gdb_prompt + + if [gdb_test "set language pascal" ""] { + return 0; + } + + if ![gdb_test "show language" ".* source language is \"pascal\".*"] { + return 1; + } else { + return 0; + } +} + +proc test_integer_literal_types_accepted {} { + global gdb_prompt + + # Test various decimal values. + # Should be integer*4 probably. + gdb_test "pt 123" "type = int" +} +proc test_character_literal_types_accepted {} { + global gdb_prompt + + # Test various character values. + + gdb_test "pt 'a'" "type = char" +} + +proc test_string_literal_types_accepted {} { + global gdb_prompt + + # Test various character values. + + setup_kfail *-*-* gdb/2326 + gdb_test "pt 'a simple string'" "type = string" +} + +proc test_logical_literal_types_accepted {} { + global gdb_prompt + + # Test the only possible values for a logical, TRUE and FALSE. + + gdb_test "pt TRUE" "type = bool" + gdb_test "pt FALSE" "type = bool" +} + +proc test_float_literal_types_accepted {} { + global gdb_prompt + + # Test various floating point formats + + # this used to guess whether to look for "real*4" or + # "real*8" based on a target config variable, but noone + # maintained it properly. + + gdb_test "pt .44" "type = double" + gdb_test "pt 44.0" "type = double" + gdb_test "pt 10e20" "type = double" + gdb_test "pt 10E20" "type = double" +} + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +if [set_lang_pascal] then { + test_integer_literal_types_accepted + test_logical_literal_types_accepted + test_character_literal_types_accepted + test_string_literal_types_accepted + test_float_literal_types_accepted +} else { + warning "$test_name tests suppressed." 0 +} |