From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28015 invoked by alias); 6 Oct 2006 01:42:29 -0000 Received: (qmail 28007 invoked by uid 22791); 6 Oct 2006 01:42:29 -0000 X-Spam-Check-By: sourceware.org Received: from nile.gnat.com (HELO nile.gnat.com) (205.232.38.5) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 06 Oct 2006 01:42:26 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-nile.gnat.com (Postfix) with ESMTP id F35FE48CF7B for ; Thu, 5 Oct 2006 21:42:24 -0400 (EDT) Received: from nile.gnat.com ([127.0.0.1]) by localhost (nile.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 14454-01-8 for ; Thu, 5 Oct 2006 21:42:24 -0400 (EDT) Received: from takamaka.act-europe.fr (unknown [70.71.0.212]) by nile.gnat.com (Postfix) with ESMTP id 85E6548CF7A for ; Thu, 5 Oct 2006 21:42:24 -0400 (EDT) Received: by takamaka.act-europe.fr (Postfix, from userid 507) id D1E5947F00; Thu, 5 Oct 2006 18:42:23 -0700 (PDT) Date: Fri, 06 Oct 2006 01:42:00 -0000 From: Joel Brobecker To: gdb-patches@sources.redhat.com Subject: Re: [RFA/testsuite] New (Ada) testcase for watchpoint issue Message-ID: <20061006014223.GA980@adacore.com> References: <20061006011502.GA998@adacore.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="G4iJoqBmSsgzjUCe" Content-Disposition: inline In-Reply-To: <20061006011502.GA998@adacore.com> User-Agent: Mutt/1.4i Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-10/txt/msg00048.txt.bz2 --G4iJoqBmSsgzjUCe Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 1152 [with the patch this time...] Here is a new testcase that reproduces the issue presented in: http://www.sourceware.org/ml/gdb-patches/2006-10/msg00044.html I tried reproducing this problem in C, but didn't manage too. Perhaps I could have tried using a GCC extension and used a nested function, but I thought it was cleaner to do it in pure legal Ada instead. The only difference between the example in the message above and the example I'm posting now is that I got read of the "delay 1.0" statement, and replaced it with something much simpler in terms of code generation - for targets that only have software watchpoints, that should help shorten the time it takes to run this test (as well as removing and unnecessary delay while waiting for the inferior to run, actually!). 2006-10-05 Joel Brobecker * gdb.ada/watch_arg/watch.adb: New file. * gdb.ada/watch_arg.exp: New testcase. Tested on x86-linux, all PASSES with the patch submitted in the message mentioned above, 1 FAIL without it: FAIL: gdb.ada/watch_arg.exp: Continuing to second breakpoint OK to apply? Thanks, -- Joel --G4iJoqBmSsgzjUCe Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="watch.adb" Content-length: 201 procedure Watch is procedure Foo (X : access Integer) is begin X.all := 3; -- BREAK1 end Foo; X : aliased Integer := 1; begin Foo (X'Access); X := 2; -- BREAK2 end Watch; --G4iJoqBmSsgzjUCe Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="watch_arg.exp" Content-length: 1950 # 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 "watch_arg" set testfile "${testdir}/watch" 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 "BREAK1" ${testdir}/watch.adb] runto "watch.adb:$bp_location" # Insert a watchpoint on argument X gdb_test "watch x" \ ".*atchpoint \[0-9\]+: x" \ "Set watchpoint on function argument X" # Then insert a breakpoint at the location we'd like to continue to... set bp_location [gdb_get_line_number "BREAK2" ${testdir}/watch.adb] gdb_test "break watch.adb:$bp_location" \ "Breakpoint \[0-9\]+ at.*: file .*watch.adb, line \[0-9\]+." \ "insert second breakpoint in watch.adb" # Then continue to that breakpoint, and verify that the watchpoint # did not interfere with that. gdb_test "cont" \ "Breakpoint \[0-9\]+, watch \\(\\).*" \ "Continuing to second breakpoint" --G4iJoqBmSsgzjUCe--