From 0ecbca72c8eb0a38d92563e398c456b26fc31343 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Fri, 4 Jan 2008 21:40:34 +0000 Subject: [PATCH] * gdb.ada/homonym/homonym.ads, gdb.ada/homonym/homonym.adb, gdb.ada/homonym/homonym_main.adb: New files. * gdb.ada/homonym.exp: New testcase. --- gdb/testsuite/ChangeLog | 6 ++ gdb/testsuite/gdb.ada/homonym.exp | 94 +++++++++++++++++++ gdb/testsuite/gdb.ada/homonym/homonym.adb | 61 ++++++++++++ gdb/testsuite/gdb.ada/homonym/homonym.ads | 20 ++++ .../gdb.ada/homonym/homonym_main.adb | 21 +++++ 5 files changed, 202 insertions(+) create mode 100644 gdb/testsuite/gdb.ada/homonym.exp create mode 100644 gdb/testsuite/gdb.ada/homonym/homonym.adb create mode 100644 gdb/testsuite/gdb.ada/homonym/homonym.ads create mode 100644 gdb/testsuite/gdb.ada/homonym/homonym_main.adb diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 20a89de3dfd..a44408bbc83 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-01-04 Joel Brobecker + + * gdb.ada/homonym/homonym.ads, gdb.ada/homonym/homonym.adb, + gdb.ada/homonym/homonym_main.adb: New files. + * gdb.ada/homonym.exp: New testcase. + 2008-01-04 Joel Brobecker * gdb.ada/packed_array.exp: Add testing of references to diff --git a/gdb/testsuite/gdb.ada/homonym.exp b/gdb/testsuite/gdb.ada/homonym.exp new file mode 100644 index 00000000000..ca020d56283 --- /dev/null +++ b/gdb/testsuite/gdb.ada/homonym.exp @@ -0,0 +1,94 @@ +# 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 . + +if $tracelevel then { + strace $tracelevel +} + +load_lib "ada.exp" + +set testdir "homonym" +set testfile "${testdir}/homonym_main" +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 "BREAK_1" ${testdir}/homonym.adb] +runto "homonym.adb:$bp_location" + +# Check the variables and types defined inside the current scope. +# There are some homonyms in a different scope, so we want to make +# sure that the debugger doesn't get mixed up. + +gdb_test "ptype local_type" \ + "type = range -100 \\.\\. 100" \ + "ptype local_type at BREAK_1" + +gdb_test "ptype local_type_subtype" \ + "type = range -100 \\.\\. 100" \ + "ptype local_type_subtype at BREAK_1" + +gdb_test "ptype int_type" \ + "type = range -100 \\.\\. 100" \ + "ptype int_type at BREAK_1" + +gdb_test "ptype lcl" \ + "type = range -100 \\.\\. 100" \ + "ptype lcl at BREAK_1" + +gdb_test "print lcl" \ + "29" \ + "print lcl at BREAK_1" + +# Now, continue until reaching BREAK_2, and do the same commands +# as above. The result should be different since the definitions +# in the new scope are different. + +set bp_location [gdb_get_line_number "BREAK_2" ${testdir}/homonym.adb] +gdb_test "break homonym.adb:$bp_location" \ + "Breakpoint \[0-9\]+ at 0x\[0-9a-fA-F\]+: file .*homonym\.adb, line \[0-9\]+\." \ + "break at BREAK_2" + +gdb_test "continue" \ + ".*Breakpoint \[0-9\]+, homonym\\.get_value \\(\\) at .*homonym\\.adb:.*" \ + "continue until BREAK_2" + +gdb_test "ptype local_type" \ + "type = range 1 \\.\\. 19740804" \ + "ptype local_type at BREAK_2" + +gdb_test "ptype local_type_subtype" \ + "type = range 1 \\.\\. 19740804" \ + "ptype local_type_subtype at BREAK_2" + +gdb_test "ptype lcl" \ + "type = range 1 \\.\\. 19740804" \ + "ptype lcl at BREAK_2" + +gdb_test "print lcl" \ + "17" \ + "print lcl at BREAK_2" + + + diff --git a/gdb/testsuite/gdb.ada/homonym/homonym.adb b/gdb/testsuite/gdb.ada/homonym/homonym.adb new file mode 100644 index 00000000000..e22d77d1c71 --- /dev/null +++ b/gdb/testsuite/gdb.ada/homonym/homonym.adb @@ -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 . + +package body Homonym is + + type Integer_Range is new Integer range -100 .. 100; + type Positive_Range is new Positive range 1 .. 19740804; + + --------------- + -- Get_Value -- + --------------- + + function Get_Value return Integer_Range + is + subtype Local_Type is Integer_Range; + subtype Local_Type_Subtype is Local_Type; + subtype Int_Type is Integer_Range; + Lcl : Local_Type := 29; + begin + return Lcl; -- BREAK_1 + end Get_Value; + + --------------- + -- Get_Value -- + --------------- + + function Get_Value return Positive_Range + is + subtype Local_Type is Positive_Range; + subtype Local_Type_Subtype is Local_Type; + subtype Pos_Type is Positive_Range; + Lcl : Local_Type := 17; + begin + return Lcl; -- BREAK_2 + end Get_Value; + + ---------------- + -- Start_Test -- + ---------------- + + procedure Start_Test is + Int : Integer_Range; + Pos : Positive_Range; + begin + Int := Get_Value; + Pos := Get_Value; + end Start_Test; + +end Homonym; diff --git a/gdb/testsuite/gdb.ada/homonym/homonym.ads b/gdb/testsuite/gdb.ada/homonym/homonym.ads new file mode 100644 index 00000000000..52d1ade9174 --- /dev/null +++ b/gdb/testsuite/gdb.ada/homonym/homonym.ads @@ -0,0 +1,20 @@ +-- 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 . + +package Homonym is + + procedure Start_Test; + +end Homonym; diff --git a/gdb/testsuite/gdb.ada/homonym/homonym_main.adb b/gdb/testsuite/gdb.ada/homonym/homonym_main.adb new file mode 100644 index 00000000000..e2f25c6875e --- /dev/null +++ b/gdb/testsuite/gdb.ada/homonym/homonym_main.adb @@ -0,0 +1,21 @@ +-- 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 . + +with Homonym; + +procedure Homonym_Main is +begin + Homonym.Start_Test; +end Homonym_Main; -- 2.30.2