From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28476 invoked by alias); 8 Oct 2014 19:00:46 -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 28465 invoked by uid 89); 8 Oct 2014 19:00:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.2 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 08 Oct 2014 19:00:41 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s98J0bg9024800 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 8 Oct 2014 15:00:37 -0400 Received: from localhost (dhcp-10-15-16-169.yyz.redhat.com [10.15.16.169]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s98J0aG2007952 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NO); Wed, 8 Oct 2014 15:00:37 -0400 From: Sergio Durigan Junior To: Gabriel Krisman Bertazi Cc: gdb-patches@sourceware.org Subject: Re: [RFC PATCH 3/3] Create syscall groups for x86_64. References: <1412736678-2760-1-git-send-email-gabriel@krisman.be> <1412736678-2760-4-git-send-email-gabriel@krisman.be> X-URL: http://blog.sergiodj.net Date: Wed, 08 Oct 2014 19:00:00 -0000 In-Reply-To: <1412736678-2760-4-git-send-email-gabriel@krisman.be> (Gabriel Krisman Bertazi's message of "Tue, 7 Oct 2014 23:51:18 -0300") Message-ID: <87lhoqbd4b.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2014-10/txt/msg00167.txt.bz2 On Tuesday, October 07 2014, Gabriel Krisman Bertazi wrote: > This commit introduces the following syscall groups for the x86_64 > architecture: memory, ipc, process, descriptor, signal and file. > > Please note that the sorting of the syscalls among these several groups > follows the same structure used in strace. Thanks for the patch. One thing I am planning to do is to create some kind of semi-automatic script to extract the syscall info from Linux headers. This reorganization would make things harder in this area, so I propose that you just include the group information to each syscall, without modifying the current order. > This also introduces tests for catching groups of syscalls on the x86_64 > architecture. > > gdb/syscalls/ > > * amd64-linux.xml: Add 'groups' attribute to several syscalls on > x86_64. Create groups memory, ipc, file, descriptor, process > and signal. gdb/syscalls doesn't have a ChangeLog file, so your ChangeLog entry will have to be included in the gdb/ChangeLog file, and will have to refer to syscalls/amd64-linux.xml. > > gdb/testsuite/ > > * gdb.base/catch-syscall.exp (do_syscall_tests): Add call > to test_catch_syscall_group. > (test_catch_syscall_group): New. > --- > gdb/syscalls/amd64-linux.xml | 362 +++++++++++++++---------------- > gdb/testsuite/gdb.base/catch-syscall.exp | 25 +++ > 2 files changed, 206 insertions(+), 181 deletions(-) > > diff --git a/gdb/syscalls/amd64-linux.xml b/gdb/syscalls/amd64-linux.xml > index 6a04218..974c5b5 100644 > --- a/gdb/syscalls/amd64-linux.xml > +++ b/gdb/syscalls/amd64-linux.xml > @@ -14,101 +14,101 @@ > The file mentioned above belongs to the Linux Kernel. --> > > > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > > - > - > - > - > - > - > - > - > - > - > + > + > + > + > + > + > + > + > + > + > > > > > > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > > > > @@ -141,18 +141,18 @@ > > > > - > - > - > - > - > - > - > - > + > + > + > + > + > + > + > + > > > - > - > + > + > > > > @@ -163,26 +163,26 @@ > > > > - > - > - > - > + > + > + > + > > > - > + > > > - > + > > > - > + > > - > + > > - > - > - > - > + > + > + > + > > > > @@ -193,7 +193,7 @@ > > > > - > + > > > > @@ -201,20 +201,20 @@ > > > > - > - > - > - > - > - > - > - > - > - > - > - > - > - > + > + > + > + > + > + > + > + > + > + > + > + > + > + > > > > @@ -227,15 +227,15 @@ > > > > - > + > > > - > - > + > + > > > - > - > + > + > > > > @@ -245,15 +245,15 @@ > > > > - > - > - > - > - > + > + > + > + > + > > - > - > - > + > + > + > > > > @@ -261,54 +261,54 @@ > > > > - > + > > > > > > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > > > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > > diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp > index a70534c..93117cc 100644 > --- a/gdb/testsuite/gdb.base/catch-syscall.exp > +++ b/gdb/testsuite/gdb.base/catch-syscall.exp > @@ -275,6 +275,28 @@ proc test_catch_syscall_fail_nodatadir {} { > } > } > > +proc test_catch_syscall_group {} { > + global decimal > + > + # Until we have syscall groups to test on other targets. > + if { ![istarget "x86_64-*-linux*"] } then { > + return > + } > + set sysnum "\\\[\[0-9\]+\\\]" > + > + gdb_test "catch syscall process" \ > + "Catchpoint $decimal \\(syscalls (\'(clone|fork|execve|exit)\' $sysnum)+.*" \ > + "set catchpoint on a group of syscalls" > + > + gdb_test "catch syscall process read" \ > + "Catchpoint $decimal \\(syscalls (\'(clone|fork|execve|exit)\' $sysnum)+.*read.*\\)" \ > + "set catchpoints on a group of syscalls and on a single syscall" > + > + gdb_test "complete catch syscall proc" \ > + "catch syscall process" \ > + "complete catch syscall group" > +} Maybe you could make a generic procedure that inserts a syscall group catchpoint, and the checks to see if its members were mentioned? Just an idea to make the testcase more automatic. > + > proc do_syscall_tests {} { > # NOTE: We don't have to point gdb at the correct data-directory. > # For the build tree that is handled by INTERNAL_GDBFLAGS. > @@ -311,6 +333,9 @@ proc do_syscall_tests {} { > # Testing the 'catch' syscall command during a restart of > # the inferior. > if [runto_main] then { test_catch_syscall_restarting_inferior } > + > + # Testing the 'catch' syscall command for a group of syscalls. > + if [runto_main] then { test_catch_syscall_group } > } > > proc test_catch_syscall_without_args_noxml {} { > -- > 1.9.3 -- Sergio GPG key ID: 0x65FC5E36 Please send encrypted e-mail if possible http://sergiodj.net/