From patchwork Wed Oct 8 02:51:18 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gabriel Krisman Bertazi X-Patchwork-Id: 3129 Received: (qmail 15614 invoked by alias); 8 Oct 2014 02:52:05 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 15598 invoked by uid 89); 8 Oct 2014 02:52:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL, BAYES_00, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.2 X-HELO: layla.krisman.be Received: from layla.krisman.be (HELO layla.krisman.be) (176.31.208.35) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 08 Oct 2014 02:52:01 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (envelope-from ) id 1XbhHk-0007QC-GS; Wed, 08 Oct 2014 04:47:29 +0200 From: Gabriel Krisman Bertazi To: gdb-patches@sourceware.org Cc: Gabriel Krisman Bertazi Subject: [RFC PATCH 3/3] Create syscall groups for x86_64. Date: Tue, 7 Oct 2014 23:51:18 -0300 Message-Id: <1412736678-2760-4-git-send-email-gabriel@krisman.be> In-Reply-To: <1412736678-2760-1-git-send-email-gabriel@krisman.be> References: <1412736678-2760-1-git-send-email-gabriel@krisman.be> X-IsSubscribed: yes 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. 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/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" +} + 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 {} {