From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 67864 invoked by alias); 14 Jan 2020 13:45:59 -0000 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 Received: (qmail 67840 invoked by uid 89); 14 Jan 2020 13:45:57 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-qv1-f66.google.com Received: from mail-qv1-f66.google.com (HELO mail-qv1-f66.google.com) (209.85.219.66) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 14 Jan 2020 13:45:47 +0000 Received: by mail-qv1-f66.google.com with SMTP id dp13so5643199qvb.7 for ; Tue, 14 Jan 2020 05:45:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=4pNIHBxKSUI9EuRsIwtZmjhwwi1ZLZwU67rT72QcBdw=; b=doMtxA2KF6pgUngB17NESUh7QRpNnkpcxVZJThfDJhdDAcBWjp+W0tQDKNgxx4stvU KoIcgKTXnJZKogdLm3b67OmhvTkjniu+VnCmzTENkltYoteE1QO9Bj5g+qBvNLZmUiyw RJ8juuZ+dCs2KQ0/gl9wMU9FgGfW0LkSwAZeXaNHNBGYH8SmhECWzUg+yK8beskUVp73 9pyd2CH6V3EKT0zT6JpJDkD9iCi8YNRr1BH/m6B/cN30lvMO2JmkZd5UL2XsIk7g+ASn 4IXiDw36iphvEpr9Sj8v++YhhGiOkSwMePKCsU1dFdO5HZl1TldZJUc3j0OBd8xhI415 kpBg== Return-Path: Received: from [192.168.0.185] ([179.177.239.131]) by smtp.gmail.com with ESMTPSA id q35sm7532762qta.19.2020.01.14.05.45.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 14 Jan 2020 05:45:44 -0800 (PST) Subject: Re: [PATCH 2/2][AArch64] Test handling of additional brk instruction patterns To: "Aktemur, Tankut Baris" , Simon Marchi , "gdb-patches@sourceware.org" Cc: "alan.hayward@arm.com" References: <20200113172524.7201-1-luis.machado@linaro.org> <20200113172524.7201-3-luis.machado@linaro.org> From: Luis Machado Message-ID: <68e22906-38b2-86f4-b1b9-bff20b52d0c6@linaro.org> Date: Tue, 14 Jan 2020 13:59:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2020-01/txt/msg00372.txt.bz2 On 1/14/20 5:03 AM, Aktemur, Tankut Baris wrote: > 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 >>> >>> * 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 . */ >>> + >>> +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 . >>> +# >>> +# 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. > That's fair. I've fixed it now to make it consistent. >>> + 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 > Fixed as well. Thanks!