mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
gdb: define type aliases for fork_inferior()
callbacks
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 Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
parent
89457440e4
commit
108f22e4eb
@ -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<void (int)> 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]);
|
||||
|
||||
|
@ -31,6 +31,13 @@ struct process_stratum_target;
|
||||
implementations. */
|
||||
#define START_INFERIOR_TRAPS_EXPECTED 1
|
||||
|
||||
using traceme_ftype = gdb::function_view<void ()>;
|
||||
using init_trace_ftype = gdb::function_view<void (int /* pid */)>;
|
||||
using pre_trace_ftype = gdb::function_view<void ()>;
|
||||
using exec_ftype = gdb::function_view<void (const char * /* file */,
|
||||
char * const * /* argv */,
|
||||
char * const * /* env */)>;
|
||||
|
||||
/* 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<void (int)> 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.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user