From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18107 invoked by alias); 5 Oct 2005 21:59:48 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 18090 invoked by uid 22791); 5 Oct 2005 21:59:45 -0000 Received: from s142-179-108-108.bc.hsia.telus.net (HELO takamaka.act-europe.fr) (142.179.108.108) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Wed, 05 Oct 2005 21:59:45 +0000 Received: by takamaka.act-europe.fr (Postfix, from userid 507) id A7FC747E74; Wed, 5 Oct 2005 14:59:42 -0700 (PDT) Date: Wed, 05 Oct 2005 21:59:00 -0000 From: Joel Brobecker To: gdb-patches@sources.redhat.com Subject: [RFA/testsuite/ada] Test "set print array-indexes" with Ada arrays Message-ID: <20051005215942.GF1590@adacore.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="TB36FDmn/VVEgNH/" Content-Disposition: inline User-Agent: Mutt/1.4i X-SW-Source: 2005-10/txt/msg00046.txt.bz2 --TB36FDmn/VVEgNH/ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 807 Hello, Given the larger range of possible arrays that can be defined in Ada compared to C, I wanted to add a new testcase for this recently added feature using Ada code. It turned out to be a good idea, because I found one bug. I can't look into it yet, but I created a PR. I'm still waiting for the PR number to arrive, but here is the testcase. I will replace the "????" by the actual PR number as soon as I receive my confirmation email. In the meantime, I can use this testcase as the testcase for an upcoming patch. 2005-10-05 Joel Brobecker * gdb.ada/arrayidx/p.adb: New file. * gdb.ada/arrayidx.exp: New testcase Tested on x86-linux. There are 12 PASSes, 2 FAILs, and 4 KFAILs. The patch I'm about to submit will fix the 2 FAILs. OK to commit? -- Joel --TB36FDmn/VVEgNH/ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="p.adb" Content-length: 1953 -- Copyright 2005 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., 51 Franklin Street, Fifth Floor, Boston, -- MA 02110-1301, USA procedure P is type Index is (One, Two, Three); type Table is array (Integer range 1 .. 3) of Integer; type ETable is array (Index) of Integer; type RTable is array (Index range Two .. Three) of Integer; type UTable is array (Positive range <>) of Integer; type PTable is array (Index) of Boolean; pragma Pack (PTable); function Get_UTable (I : Integer) return UTable is begin return Utable'(1 => I, 2 => 2, 3 => 3); end Get_UTable; One_Two_Three : Table := (1, 2, 3); E_One_Two_Three : ETable := (1, 2, 3); R_Two_Three : RTable := (2, 3); U_One_Two_Three : UTable := Get_UTable (1); P_One_Two_Three : PTable := (False, True, True); Few_Reps : UTable := (1, 2, 3, 3, 3, 3, 3, 4, 5); Many_Reps : UTable := (1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5); Empty : array (1 .. 0) of Integer := (others => 0); begin One_Two_Three (1) := 4; -- START E_One_Two_Three (One) := 4; R_Two_Three (Two) := 4; U_One_Two_Three (U_One_Two_Three'First) := 4; P_One_Two_Three (One) := True; Few_Reps (Few_Reps'First) := 2; Many_Reps (Many_Reps'First) := 2; Empty := (others => 1); end P; --TB36FDmn/VVEgNH/ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="arrayidx.exp" Content-length: 4272 # Copyright 2005 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., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA if $tracelevel then { strace $tracelevel } load_lib "ada.exp" set testdir "arrayidx" set testfile "${testdir}/p" 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 "START" ${testdir}/p.adb] runto "p.adb:$bp_location" # First, print all the arrays without indexes gdb_test "set print array-indexes off" \ "" \ "set print array-indexes to off" gdb_test "print one_two_three" \ "\\(1, 2, 3\\)" \ "print one_two_three, indexes off" # There is a bug somewhere that causes the debugger to think that # this array is indexed by an integer subrange, which it is actually # indexed by an enumerated type. As a consequence, indexes for this # array will be printed using their underlying integer value instead # of their names. Also, even when printing this array without indexes, # because the underlying value of the first enumeration is zero, the # debugger ends up printing this index even when "array-indexes" are # off, just because the index of the first element is not an enumerated # type, and its value is not one. setup_kfail "*-*-*" gdb/???? gdb_test "print e_one_two_three" \ "\\(1, 2, 3\\)" \ "print e_one_two_three, indexes off" # Same as when printing e_one_two_three above. setup_kfail "*-*-*" gdb/???? gdb_test "print r_two_three" \ "\\(two => 2, 3\\)" \ "print r_two_three, indexes off" gdb_test "print u_one_two_three" \ "\\(1, 2, 3\\)" \ "print u_one_two_three, indexes off" gdb_test "print p_one_two_three" \ "\\(0 => false, true, true\\)" \ "print p_one_two_three, indexes off" gdb_test "print few_reps" \ "\\(1, 2, 3, 3, 3, 3, 3, 4, 5\\)" \ "print few_reps, indexes off" gdb_test "print many_reps" \ "\\(1, 2, 3 , 4, 5\\)" \ "print many_reps, indexes off" gdb_test "print empty" \ "\\(\\)" \ "print empty, indexes off" # Next, print all the arrays with the indexes gdb_test "set print array-indexes on" \ "" \ "set print array-indexes to on" gdb_test "print one_two_three" \ "\\(1 => 1, 2 => 2, 3 => 3\\)" \ "print one_two_three" # Same as first attempt at printing this array, we currently fail. # See details above. setup_kfail "*-*-*" gdb/???? gdb_test "print e_one_two_three" \ "\\(one => 1, two => 2, three => 3\\)" \ "print e_one_two_three" # Same as first attempt at printing this array, we currently fail. # See details above. setup_kfail "*-*-*" gdb/???? gdb_test "print r_two_three" \ "\\(two => 2, three => 3\\)" \ "print r_two_three" gdb_test "print u_one_two_three" \ "\\(1 => 1, 2 => 2, 3 => 3\\)" \ "print u_one_two_three" gdb_test "print p_one_two_three" \ "\\(0 => false, 1 => true, 2 => true\\)" \ "print p_one_two_three" gdb_test "print few_reps" \ "\\(1 => 1, 2 => 2, 3 => 3, 4 => 3, 5 => 3, 6 => 3, 7 => 3, 8 => 4, 9 => 5\\)" \ "print few_reps" gdb_test "print many_reps" \ "\\(1 => 1, 2 => 2, 3 => 3 , 15 => 4, 16 => 5\\)" \ "print many_reps" gdb_test "print empty" \ "\\(\\)" \ "print empty" --TB36FDmn/VVEgNH/--