From patchwork Thu May 16 16:55:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 90299 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 06E9A384AB65 for ; Thu, 16 May 2024 16:55:48 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 6E68F3858D20 for ; Thu, 16 May 2024 16:55:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6E68F3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6E68F3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=132.207.4.11 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715878526; cv=none; b=iqvh/5YAY45K5bG9/27lLzcCtxeQKIUcfKpREo+jkMAqY9TgB0uHF9knJ+bQWzqDCGoMfLDI9dla7JuAutMh1TQ1tQZBIoR3u7OjQy7/0qmodsbFD3Igu9BDKJTt/Nwcz5sqyfyybP9KVVjr+D5EDCoXAGzSy5HZ0uf5zvW1NRA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715878526; c=relaxed/simple; bh=MaHph3y2iNqE4VdPau7KyUvf1Mn3KRraYfMawxazgK0=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=qnqg+3bnucrZYnbYsrKk/uKJTDv6M4OTs/DZokJBftagLlzav6nsHmzhWvQs2rFeBtrKxsoTY8Eylx+7RVVg47OraSyvz8AiWoNikVapczmiqLMXX5M8JScGPsCHJY5CYqSqZqJrgWb87iYvsLac4u8LyXoTQE9BnundXZHN8Gg= ARC-Authentication-Results: i=1; server2.sourceware.org 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 44GGtGku069950 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 16 May 2024 12:55:21 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 44GGtGku069950 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1715878522; bh=RB9ir/6nyYl99rRsYmDXLD/ZZs6uPkTp+J7ARy75wZ0=; h=From:To:Cc:Subject:Date:From; b=Zt4MNt74rNG7zrspJxuoZ+LEdORtMQkQlprVhzmYwTKEkmk3Y0rvN9jKb0I58hPBW SJtX5dfuq3WIAFi/cAZSyf++mzYMVG0MmRpJ01E1ahuY3JELEplr4ChFZQp7jhVIXY 7zyem0JxhOtO+DF3YxgIjhLKE54w8WH3a2kxUmhE= Received: from simark.localdomain (modemcable238.237-201-24.mc.videotron.ca [24.201.237.238]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id C449B1E030; Thu, 16 May 2024 12:55:16 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH] gdb: define type aliases for `fork_inferior()` callbacks Date: Thu, 16 May 2024 12:55:01 -0400 Message-ID: <20240516165515.540249-1-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.45.0 MIME-Version: 1.0 X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Thu, 16 May 2024 16:55:16 +0000 X-Spam-Status: No, score=-3188.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org The `fork_inferior()` function accepts multiple callbacks, making its signature a bit hard to read. Define some type aliases to make it a bit clearer. Use function view for all, while at it. Change-Id: Ide8d1fa533d0c5eaf3249860f8c0d339baa09bce --- gdb/nat/fork-inferior.c | 15 ++++++--------- gdb/nat/fork-inferior.h | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 15 deletions(-) base-commit: f6bbac3f2e3e448e32dc15e8a0d25141e97d9729 diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c index 4378177bc8c4..c1082eb04411 100644 --- a/gdb/nat/fork-inferior.c +++ b/gdb/nat/fork-inferior.c @@ -266,12 +266,9 @@ execv_argv::init_for_shell (const char *exec_file, pid_t fork_inferior (const char *exec_file_arg, const std::string &allargs, - char **env, void (*traceme_fun) (), - gdb::function_view init_trace_fun, - void (*pre_trace_fun) (), - const char *shell_file_arg, - void (*exec_fun)(const char *file, char * const *argv, - char * const *env)) + char **env, traceme_ftype traceme_fun, + init_trace_ftype init_trace_fun, pre_trace_ftype pre_trace_fun, + const char *shell_file_arg, exec_ftype exec_fun) { pid_t pid; /* Set debug_fork then attach to the child while it sleeps, to debug. */ @@ -337,7 +334,7 @@ fork_inferior (const char *exec_file_arg, const std::string &allargs, happen to prepare to handle the child we're about fork, do it now... */ if (pre_trace_fun != NULL) - (*pre_trace_fun) (); + pre_trace_fun (); /* Create the child process. Since the child process is going to exec(3) shortly afterwards, try to reduce the overhead by @@ -389,7 +386,7 @@ fork_inferior (const char *exec_file_arg, const std::string &allargs, for the inferior. */ /* "Trace me, Dr. Memory!" */ - (*traceme_fun) (); + traceme_fun (); /* The call above set this process (the "child") as debuggable by the original gdb process (the "parent"). Since processes @@ -412,7 +409,7 @@ fork_inferior (const char *exec_file_arg, const std::string &allargs, char **argv = child_argv.argv (); if (exec_fun != NULL) - (*exec_fun) (argv[0], &argv[0], env); + exec_fun (argv[0], &argv[0], env); else execvp (argv[0], &argv[0]); diff --git a/gdb/nat/fork-inferior.h b/gdb/nat/fork-inferior.h index a609f68bcb44..f3e2f54b4e92 100644 --- a/gdb/nat/fork-inferior.h +++ b/gdb/nat/fork-inferior.h @@ -31,6 +31,13 @@ struct process_stratum_target; implementations. */ #define START_INFERIOR_TRAPS_EXPECTED 1 +using traceme_ftype = gdb::function_view; +using init_trace_ftype = gdb::function_view; +using pre_trace_ftype = gdb::function_view; +using exec_ftype = gdb::function_view; + /* Start an inferior Unix child process and sets inferior_ptid to its pid. EXEC_FILE is the file to run. ALLARGS is a string containing the arguments to the program. ENV is the environment vector to @@ -42,13 +49,12 @@ struct process_stratum_target; made static to ensure that they survive the vfork call. */ extern pid_t fork_inferior (const char *exec_file_arg, const std::string &allargs, - char **env, void (*traceme_fun) (), - gdb::function_view init_trace_fun, - void (*pre_trace_fun) (), + char **env, + traceme_ftype traceme_fun, + init_trace_ftype init_trace_fun, + pre_trace_ftype pre_trace_fun, const char *shell_file_arg, - void (*exec_fun) (const char *file, - char * const *argv, - char * const *env)); + exec_ftype exec_fun); /* Accept NTRAPS traps from the inferior.