* gdb.ada/arrayparam: New test program.

* gdb.ada/arrayparam.exp: New testcase.
This commit is contained in:
Joel Brobecker 2008-01-08 19:31:36 +00:00
parent a93c0eb695
commit cdb7f5d4dc
5 changed files with 145 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2008-01-08 Joel Brobecker <brobecker@adacore.com>
* gdb.ada/arrayparam: New test program.
* gdb.ada/arrayparam.exp: New testcase.
2008-01-08 Joel Brobecker <brobecker@adacore.com>
* gdb.ada/print_pc.exp: Add verification of where gdb_start_cmd

View File

@ -0,0 +1,61 @@
# 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 "ada.exp"
set testdir "arrayparam"
set testfile "${testdir}/foo"
set srcfile ${srcdir}/${subdir}/${testfile}.adb
set binfile ${objdir}/${subdir}/${testfile}
file mkdir ${objdir}/${subdir}/${testdir}
if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
return -1
}
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.adb]
runto "foo.adb:$bp_location"
# Verify that a call to a function that takes an array as a parameter
# works without problem.
gdb_test "print call_me (\"bonjour\")" \
"void" \
"print call_me (\"bonjour\")"
# Verify that the array was passed properly by checking the global
# variables that Call_Me sets as side-effects.
gdb_test "print first" \
"98 'b'" \
"print first after function call"
gdb_test "print last" \
"114 'r'" \
"print lasta after function call"
gdb_test "print length" \
"7" \
"print length after function call"

View File

@ -0,0 +1,26 @@
-- 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/>.
with Pck; use Pck;
procedure Foo is
My_String : constant String := "Hello World";
begin
First := ASCII.NUL;
Last := ASCII.NUL;
Length := -1;
Call_Me (My_String); -- STOP
end Foo;

View File

@ -0,0 +1,28 @@
-- 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/>.
package body Pck is
procedure Call_Me (Str : String) is
begin
Length := Str'Length;
if Length > 0 then
First := Str (Str'First);
Last := Str (Str'Last);
end if;
end Call_Me;
end Pck;

View File

@ -0,0 +1,25 @@
-- 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/>.
package Pck is
First : Character := ASCII.NUL;
Last : Character := ASCII.NUL;
Length : Integer := 0;
procedure Call_Me (Str : String);
end Pck;