From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28688 invoked by alias); 9 Aug 2011 15:24:26 -0000 Received: (qmail 28678 invoked by uid 22791); 9 Aug 2011 15:24:25 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from service87.mimecast.com (HELO service87.mimecast.com) (94.185.240.25) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Tue, 09 Aug 2011 15:24:09 +0000 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Tue, 09 Aug 2011 16:24:06 +0100 Received: from [10.1.77.49] ([10.1.255.212]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 9 Aug 2011 16:24:01 +0100 Message-ID: <4E415111.7020107@arm.com> Date: Tue, 09 Aug 2011 15:24:00 -0000 From: Matthew Gretton-Dann User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18pre) Gecko/20110608 Lightning/1.0b3pre Lanikai/3.1.11pre MIME-Version: 1.0 To: Yao Qi CC: Mark Kettenis , "pedro@codesourcery.com" , "gdb-patches@sourceware.org" Subject: Re: [patch] Skip kill-after-signal.exp if hw single-step is not supported References: <4E259815.8080001@codesourcery.com> <201107201605.43767.pedro@codesourcery.com> <201107232247.p6NMlwVx029216@glazunov.sibelius.xs4all.nl> <4E414503.7080201@codesourcery.com> In-Reply-To: <4E414503.7080201@codesourcery.com> X-MC-Unique: 111080916240602901 Content-Type: text/plain; charset=WINDOWS-1252; format=flowed Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-08/txt/msg00193.txt.bz2 On 09/08/11 15:32, Yao Qi wrote: > On 07/24/2011 06:47 AM, Mark Kettenis wrote: >>> From: Pedro Alves >>> Date: Wed, 20 Jul 2011 16:05:43 +0100 >>> >>> Other archs !x86, and other kernels/stubs/servers !Linux that >>> can do hardware stepping. If we're going to have a list, invert >>> the logic of the check, defaulting to running the test, and leaving >>> out archs were we know software stepping is used. Some targets, >>> like x86/OpenBSD and MacOS, although can hardware step, can't step >>> into a handler. >> >> Just FYI, it's putting breakpoints into the signal trampoline that is >> the issue, at least on OpenBSD. Single-stepping should work fine on >> OpenBSD/i386 and OpenBSD/amd64 and all other architectures where it's >> done in hardware. > > This is the 2nd version of the patch. A new predicate, > single_step_to_signal_handler_p, is added in lib/gdb.exp. In default, > it returns true, and return false on target "arm*-*-* and "mips*-*-*". > > I don't find any other tests using "stepi" to step into signal handler, > so I only changed kill-after-signal.exp. > > OK for mainline? > > > > single_step_to_signal_handler_p.patch > > > > gdb/testsuite/ > > * lib/gdb.exp (single_step_to_signal_handler_p): New. > * gdb.base/kill-after-signal.exp: Skip if target supports single step > to signal handler. > > diff --git a/gdb/testsuite/gdb.base/kill-after-signal.exp b/gdb/testsuite= /gdb.base/kill-after-signal.exp > index eecad2e..f7086fc 100644 > --- a/gdb/testsuite/gdb.base/kill-after-signal.exp > +++ b/gdb/testsuite/gdb.base/kill-after-signal.exp > @@ -14,6 +14,12 @@ > # along with this program. If not, see. > > set testfile "kill-after-signal" > + > +if { ![single_step_to_signal_handler_p] } { > + untested ${testfile}.exp > + return > +} > + > if [prepare_for_testing ${testfile}.exp ${testfile}] { > return -1 > } > diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp > index ef5ad5c..b967a97 100644 > --- a/gdb/testsuite/lib/gdb.exp > +++ b/gdb/testsuite/lib/gdb.exp > @@ -1527,6 +1527,21 @@ proc support_complex_tests {} { > return $support_complex_tests_saved > } > > +# Return 1 if target hardware or OS supports single stepping to single h= andler, > +# otherwise, return 0. > + > +proc single_step_to_signal_handler_p {} { > + > + # Targets don't have hardware single step. On these targets, when a= signal > + # is delivered during software single step, gdb is unable to determi= ne the > + # next instruction addresses, because start of signal handler is one= of them. > + if { [istarget "arm*-*-*"] || [istarget "mips*-*-*"] } { > + return 0 > + } > + > + return 1 > +} > + Would this be better if it followed the pattern of the=20 skip_hw_breakpoint_tests and skip_hw_watchpoint_tests family of=20 functions in gdb.exp? So I would rename the function to skip_hw_single_step_tests[1], and test=20 for the existence of gdb,no_hardware_watchpoints in the board info. [1] Although for the use you are putting it to this is possibly a=20 confusing name. Thanks, Matt --=20 Matthew Gretton-Dann Principal Engineer, PD Software - Tools, ARM Ltd