From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 41474 invoked by alias); 30 Oct 2017 15:59:47 -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 41462 invoked by uid 89); 30 Oct 2017 15:59:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.9 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: smtp.polymtl.ca Received: from smtp.polymtl.ca (HELO smtp.polymtl.ca) (132.207.4.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 30 Oct 2017 15:59:45 +0000 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id v9UFxcjt008683 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 30 Oct 2017 11:59:43 -0400 Received: by simark.ca (Postfix, from userid 112) id 0F6E71E533; Mon, 30 Oct 2017 11:59:38 -0400 (EDT) Received: from simark.ca (localhost [127.0.0.1]) by simark.ca (Postfix) with ESMTP id 087E71E51C; Mon, 30 Oct 2017 11:59:36 -0400 (EDT) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Mon, 30 Oct 2017 15:59:00 -0000 From: Simon Marchi To: Pedro Alves Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 2/2] target_set_syscall_catchpoint, use gdb::array_view and bool In-Reply-To: <1509377531-21044-3-git-send-email-palves@redhat.com> References: <1509377531-21044-1-git-send-email-palves@redhat.com> <1509377531-21044-3-git-send-email-palves@redhat.com> Message-ID: X-Sender: simon.marchi@polymtl.ca User-Agent: Roundcube Webmail/1.3.0 X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Mon, 30 Oct 2017 15:59:38 +0000 X-IsSubscribed: yes X-SW-Source: 2017-10/txt/msg00900.txt.bz2 On 2017-10-30 11:32, Pedro Alves wrote: > diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c > index 1cbe6f8..8702a9e 100644 > --- a/gdb/target-delegates.c > +++ b/gdb/target-delegates.c > @@ -1286,36 +1286,34 @@ debug_follow_exec (struct target_ops *self, > struct inferior *arg1, char *arg2) > } > > static int > -delegate_set_syscall_catchpoint (struct target_ops *self, int arg1, > int arg2, int arg3, int arg4, int *arg5) > +delegate_set_syscall_catchpoint (struct target_ops *self, int arg1, > bool arg2, int arg3, gdb::array_view arg4) > { > self = self->beneath; > - return self->to_set_syscall_catchpoint (self, arg1, arg2, arg3, > arg4, arg5); > + return self->to_set_syscall_catchpoint (self, arg1, arg2, arg3, > arg4); > } > > static int > -tdefault_set_syscall_catchpoint (struct target_ops *self, int arg1, > int arg2, int arg3, int arg4, int *arg5) > +tdefault_set_syscall_catchpoint (struct target_ops *self, int arg1, > bool arg2, int arg3, gdb::array_view arg4) > { > return 1; > } > > static int > -debug_set_syscall_catchpoint (struct target_ops *self, int arg1, int > arg2, int arg3, int arg4, int *arg5) > +debug_set_syscall_catchpoint (struct target_ops *self, int arg1, bool > arg2, int arg3, gdb::array_view arg4) > { > int result; > fprintf_unfiltered (gdb_stdlog, "-> %s->to_set_syscall_catchpoint > (...)\n", debug_target.to_shortname); > - result = debug_target.to_set_syscall_catchpoint (&debug_target, > arg1, arg2, arg3, arg4, arg5); > + result = debug_target.to_set_syscall_catchpoint (&debug_target, > arg1, arg2, arg3, arg4); > fprintf_unfiltered (gdb_stdlog, "<- %s->to_set_syscall_catchpoint > (", debug_target.to_shortname); > target_debug_print_struct_target_ops_p (&debug_target); > fputs_unfiltered (", ", gdb_stdlog); > target_debug_print_int (arg1); > fputs_unfiltered (", ", gdb_stdlog); > - target_debug_print_int (arg2); > + target_debug_print_bool (arg2); > fputs_unfiltered (", ", gdb_stdlog); > target_debug_print_int (arg3); > fputs_unfiltered (", ", gdb_stdlog); > - target_debug_print_int (arg4); > - fputs_unfiltered (", ", gdb_stdlog); > - target_debug_print_int_p (arg5); > + target_debug_print_gdb_array_view_const_int (arg4); > fputs_unfiltered (") = ", gdb_stdlog); > target_debug_print_int (result); > fputs_unfiltered ("\n", gdb_stdlog); > diff --git a/gdb/target.h b/gdb/target.h > index e7577e1..7bcdefb 100644 > --- a/gdb/target.h > +++ b/gdb/target.h > @@ -612,7 +612,8 @@ struct target_ops > void (*to_follow_exec) (struct target_ops *, struct inferior *, > char *) > TARGET_DEFAULT_IGNORE (); > int (*to_set_syscall_catchpoint) (struct target_ops *, > - int, int, int, int, int *) > + int, bool, int, > + gdb::array_view) Is there any advantage of using array_view instead of vector directly? In case we decide to change from vector to another "kind" of array? > TARGET_DEFAULT_RETURN (1); > int (*to_has_exited) (struct target_ops *, int, int, int *) > TARGET_DEFAULT_RETURN (0); > @@ -1620,28 +1621,24 @@ void target_follow_exec (struct inferior *inf, > char *execd_pathname); > > /* Syscall catch. > > - NEEDED is nonzero if any syscall catch (of any kind) is requested. > - If NEEDED is zero, it means the target can disable the mechanism to > + NEEDED is true if any syscall catch (of any kind) is requested. > + If NEEDED is false, it means the target can disable the mechanism > to > catch system calls because there are no more catchpoints of this > type. > > ANY_COUNT is nonzero if a generic (filter-less) syscall catch is > - being requested. In this case, both TABLE_SIZE and TABLE should > - be ignored. > + being requested. In this case, SYSCALL_COUNTS should be ignored. > > - TABLE_SIZE is the number of elements in TABLE. It only matters if > - ANY_COUNT is zero. > - > - TABLE is an array of ints, indexed by syscall number. An element > in > - this array is nonzero if that syscall should be caught. This > argument > - only matters if ANY_COUNT is zero. > + SYSCALL_COUNTS is an array of ints, indexed by syscall number. An > + element in this array is nonzero if that syscall should be caught. > + This argument only matters if ANY_COUNT is zero. > > Return 0 for success, 1 if syscall catchpoints are not supported or > -1 > for failure. */ > > -#define target_set_syscall_catchpoint(pid, needed, any_count, > table_size, table) \ > +#define target_set_syscall_catchpoint(pid, needed, any_count, table) \ > (*current_target.to_set_syscall_catchpoint) (¤t_target, \ > pid, needed, any_count, \ > - table_size, table) > + table) The doc talks about SYSCALL_COUNTS, but the parameter is named table. Simon