This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
RE: [PATCH 2/2][AArch64] Test handling of additional brk instruction patterns
- From: "Aktemur, Tankut Baris" <tankut dot baris dot aktemur at intel dot com>
- To: Simon Marchi <simark at simark dot ca>, Luis Machado <luis dot machado at linaro dot org>, "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Cc: "alan dot hayward at arm dot com" <alan dot hayward at arm dot com>
- Date: Tue, 14 Jan 2020 08:03:15 +0000
- Subject: RE: [PATCH 2/2][AArch64] Test handling of additional brk instruction patterns
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0wSU3yJ51P819bErQXxd3GS66u2T4JtBeY9nKSoiBPg=; b=U0iMIVh16uLEJp9PyS0owcOtLT07EvCdwVnoUXbbrqDhB7OvL3vJaQjfUBOy2K/lHb6as/e6IilrGKL3qf+oM/HIsHiozPKfTKzGiXcVaSrjYbBLDmdjh7e8f9iKcGh0VAVxHjyY/fajKK0b2jAHkGIBb97palHHX9dRZCB3KPfkg2uAJoVHqgxSyopkLmYL69CY/uHajlRFCyMXwWOs7gE97fjesgo+CrfVajZDyQnzCYTTDAemn9ppkmpkIVntfvBmI52Wl2P42L9VLwOkK7HDbkBA3/Y9HPFWmXpmqRnMc/kYaL4c2JI64XGOm3J8Tx30ExWoBhvaxb66rMqI9A==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B4C5n047E91nglsiDLDKNCVHGV+YvZc6X18fIpx+recVwhwAZe3bR8+eiteM9lLjqdOx3vsUfrEl462bhd7tf39/7wClnJWA2hP8ldQZImKFyZ7s2ReffQF3gb/WQTje+W80ELB4I0EtdL/m82pS4rNBuRFcbvjt6G+PVUIcRRKksCJijzZLLR+j3QojO/vaU+5EToBW5oujy8elo6MoqPXwA5pfOFSP7iGq7KiPwa63Q+fmEzJuUFkW2adQeFyYwEeo9IreyHdxiJOfT50Mpwke05t6d+QQRXXXMl4N/gjYQ9MmdUP8OdoTncGRNv5JF36vAtboHseiVQgNA0cEbg==
- References: <20200113172524.7201-1-luis.machado@linaro.org> <20200113172524.7201-3-luis.machado@linaro.org> <d3373feb-3406-c919-80f1-78192684e9e8@simark.ca>
On Tuesday, January 14, 2020 5:25 AM, Simon Marchi wrote:
> On 2020-01-13 12:25 p.m., Luis Machado wrote:
> > This test exercises the previous patch's code and makes sure GDB can
> > properly get a SIGTRAP from various brk instruction patterns.
> >
> > GDB needs to be able to see the program exiting normally. If GDB doesn't
> > support the additional brk instructions, we will see timeouts.
> >
> > We bail out with the first timeout since we won't be able to step through
> > the program breakpoint anyway, so it is no use carrying on.
> >
> > gdb/testsuite/ChangeLog:
> >
> > 2020-01-13 Luis Machado <luis.machado@linaro.org>
> >
> > * gdb.arch/aarch64-brk-patterns.c: New source file.
> > * gdb.arch/aarch64-brk-patterns.exp: New test.
> > ---
> > gdb/testsuite/gdb.arch/aarch64-brk-patterns.c | 30 +++++++++
> > .../gdb.arch/aarch64-brk-patterns.exp | 67 +++++++++++++++++++
> > 2 files changed, 97 insertions(+)
> > create mode 100644 gdb/testsuite/gdb.arch/aarch64-brk-patterns.c
> > create mode 100644 gdb/testsuite/gdb.arch/aarch64-brk-patterns.exp
> >
> > diff --git a/gdb/testsuite/gdb.arch/aarch64-brk-patterns.c b/gdb/testsuite/gdb.arch/aarch64-brk-patterns.c
> > new file mode 100644
> > index 0000000000..ccf9a35a94
> > --- /dev/null
> > +++ b/gdb/testsuite/gdb.arch/aarch64-brk-patterns.c
> > @@ -0,0 +1,30 @@
> > +/* This file is part of GDB, the GNU debugger.
> > +
> > + Copyright 2020 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/>. */
> > +
> > +int main(void)
> > +{
> > + /* Dummy instruction just so GDB doesn't stop at the first breakpoint
> > + instruction. */
> > + __asm __volatile ("nop\n\t");
> > +
> > + /* Multiple BRK instruction patterns. */
> > + __asm __volatile ("brk %0\n\t" ::"n"(0x0));
> > + __asm __volatile ("brk %0\n\t" ::"n"(0x900 + 0xf));
> > + __asm __volatile ("brk %0\n\t" ::"n"(0xf000));
> > +
> > + return 0;
> > +}
> > diff --git a/gdb/testsuite/gdb.arch/aarch64-brk-patterns.exp b/gdb/testsuite/gdb.arch/aarch64-brk-patterns.exp
> > new file mode 100644
> > index 0000000000..3532a0df95
> > --- /dev/null
> > +++ b/gdb/testsuite/gdb.arch/aarch64-brk-patterns.exp
> > @@ -0,0 +1,67 @@
> > +# Copyright 2020 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/>.
> > +#
> > +# This file is part of the gdb testsuite.
> > +
> > +# Test if GDB stops at various BRK instruction patterns inserted into
> > +# the code.
> > +
> > +if {![is_aarch64_target]} {
> > + verbose "Skipping ${gdb_test_file_name}."
> > + return
> > +}
> > +
> > +standard_testfile
> > +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
> > + return -1
> > +}
> > +
> > +if ![runto_main] {
I'm not aware of a common convention of use of braces and spaces, but adding braces
as in {![runto_main]} and removing the spaces after/before the opening/closing braces
in { [prepare_for_testing...] } above could make the use more consistent within the
file.
> > + untested "could not run to main"
> > + return -1
> > +}
> > +
> > +set keep_going 1
> > +set count 0
> > +set old_timeout $timeout
> > +set timeout 10
> > +
> > +while { $keep_going } {
> > +
> > + set test "brk instruction $count causes SIGTRAP"
> > +
> > + # Continue to next program breakpoint instruction.
> > + gdb_test_multiple "continue" $test {
> > + -re "Program received signal SIGTRAP, Trace/breakpoint trap.*$gdb_prompt $" {
> > + pass $test
> > +
> > + # Insert a breakpoint at the program breakpoint instruction so GDB
> > + # can step over it.
> > + gdb_test "break" \
> > + "Breakpoint $decimal at $hex: file .*$srcfile, line $decimal.*" \
> > + "insert breakpoint at brk instruction $count"
> > + }
> > + -re "exited normally.*$gdb_prompt $" {
> > + set keep_going 0
> > + }
> > + timeout {
> > + fail $test
> > + set keep_going 0
> > + }
> > + }
> > + set count [expr "$count + 1"]
A minor thing. This could be simplified as
incr count
-Baris
> > +}
> > +
> > +set timeout $old_timeout
> > --
> > 2.17.1
> >
>
> I don't see anything wrong with the test, but I was wondering if we should
> assert that $count is the right value in the end, to make sure that we did
> hit the expected number of breakpoints.
>
> Simon
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Gary Kershaw
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928