Previous mail
Next mail
Unformatted/full headers
Overview 10 days
Subject
Date
Thread
Author
From: Pierre Muller
Subject: [Patch] testsuite/gdb.pascal new testcase integer.exp
Date: 31 Jan 2008, 16:05:56
I committed this
as pascal language maintainer.
For gpc mailing list mainly:
I had to add to XFAIL for gpc
because of the buggy line information.
I used an old gpc
gpc 20050331, based on gcc-3.4.4 (cygming special, gdc 0.12, using dmd
0.125)
but this is the official cygwin distro of gpc.
Do newer gpc binaries give better results?
Pierre Muller
testsuite/ChangeLog entry:
2008-01-31 Pierre Muller <muller@ics.u-strasbg.fr>
* gdb.pascal/integers.pas: New test program.
* gdb.pascal/integers.exp: New testcase.
Index: gdb.pascal/integers.pas
===================================================================
RCS file: gdb.pascal/integers.pas
diff -N gdb.pascal/integers.pas
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb.pascal/integers.pas 31 Jan 2008 14:49:23 -0000 1.1
@@ -0,0 +1,51 @@
+{
+ Copyright 2008 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/>.
+}
+
+program integers;
+
+
+function add(a,b : integer) : integer;
+begin
+ add:=a+b;
+end;
+
+function sub(a,b : integer) : integer;
+begin
+ sub:=a-b;
+end;
+
+var
+ i, j, k, l : integer;
+
+begin
+ i := 0;
+ j := 0;
+ k := 0;
+ l := 0; { set breakpoint 1 here }
+ i := 1;
+ j := 2;
+ k := 3;
+ l := k;
+
+ i := j + k;
+
+ j := 0; { set breakpoint 2 here }
+ k := 0;
+ l := add(i,j);
+ l := sub(i,j);
+
+end.
Index: gdb.pascal/integers.exp
===================================================================
RCS file: gdb.pascal/integers.exp
diff -N gdb.pascal/integers.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb.pascal/integers.exp 31 Jan 2008 14:49:23 -0000 1.1
@@ -0,0 +1,129 @@
+# Copyright 2008 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 "integers"
+set srcfile ${testfile}.pas
+set binfile ${objdir}/${subdir}/${testfile}$EXEEXT
+
+if {[gdb_compile_pascal "${srcdir}/${subdir}/${srcfile}" "${binfile}"
executabl
e [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
+}
+
+gdb_test "" ".* at .*${srcfile}.*" "start"
+
+gdb_test "cont" "Breakpoint .*:${bp_location1}.*" "Going to first
breakpoint"
+
+gdb_test "print i" ".* = 0" "Print i before assigned to 1"
+
+gdb_test "next" "i := 1;" "Next to 'i := 1' line"
+gdb_test "next" "j := 2;" "Next to 'j := 2' line"
+# At that point,
+# i should be equal to 1
+gdb_test "print i" " = 1"
+# but j should still be equal to zero
+if { $pascal_compiler_is_gpc } {
+ setup_xfail *-*-*
+}
+gdb_test "print j" " = 0" "Test j value before assignment"
+
+gdb_test "next" "k := 3;" "Next to 'k := 3' line"
+gdb_test "next" "l := k;" "Next to 'l := k' line"
+
+#j should be equal to 2
+gdb_test "print j" " = 2"
+# k should be equal to 3
+gdb_test "print k" " = 3"
+# But l shoud still be zero
+if { $pascal_compiler_is_gpc } {
+ setup_xfail *-*-*
+}
+gdb_test "print l" " = 0"
+
+# Test addition
+gdb_test "print i + j" " = 3"
+gdb_test "print i + k" " = 4"
+gdb_test "print j + k" " = 5"
+gdb_test "print i + j + k" " = 6"
+
+# Test substraction
+gdb_test "print j - i" " = 1"
+gdb_test "print i - j" "= -1"
+gdb_test "print k -i -j" " = 0"
+gdb_test "print k -(i + j)" " = 0"
+
+# Test unany minus
+gdb_test "print -i" " = -1"
+gdb_test "print (-i)" " = -1"
+gdb_test "print -(i)" " = -1"
+gdb_test "print -(i+j)" " = -3"
+
+# Test boolean operators =, <>, <, <=, > and >=
+gdb_test "print i + 1 = j" " = true"
+gdb_test "print i + 1 <> j" " = false"
+gdb_test "print i + 1 < j" " = false"
+gdb_test "print i + 1 <= j" " = true"
+gdb_test "print i + 1 > j" " = false"
+gdb_test "print i + 1 >= j" " = true"
+
+# Test multiplication
+gdb_test "print 2 * i" " = 2"
+gdb_test "print j * k" " = 6"
+gdb_test "print 3000*i" " = 3000"
+
+#Test div and mod operators
+gdb_test "print 35 div 2" " = 17"
+gdb_test "print 35 mod 2" " = 1"
+
+# Test several operators together
+gdb_test "print i+10*j+100*k" " = 321"
+gdb_test " print (i + 5) * (j + 7)" " = 54"
+
+# 'set i' does not work, as there are set sub-commands starting with 'i'
+# Thus we need to use 'set var i'
+gdb_test "set var i := 2" " := 2"
+gdb_test "print i" " = 2" "Testing new i value"
+
+gdb_test "cont" \
+ "Breakpoint .*:${bp_location2}.*" \
+ "Going to second breakpoint"
+gdb_test "print i" \
+ ".* = 5.*" \
+ "Value of i after assignment"
Previous mail
Next mail
Unformatted/full headers
Overview 10 days
Subject
Date
Thread
Author
Note: This page contains information that does not originate from the owner of this web site, but from the authors of the mails archived. The owner of this web site is not responsible for the content of such information. Any use of that infomation requires the consent of the respective author.
Where WWW addresses (URLs) in the mails archived are marked as hyperlinks, this is only for the comfort of the reader. The content of the web pages linked to like this does not necessarily reflect the opinion of the owner of this web site or of the authors of the mails archived. The owner of this web site is not responsible for the content of such web pages. Those pages are explicitly not to be considered as part of the content of this page, but merely as references.
This page was created by Crystal 0.999 (Linux 2.4.27/i686).