From 740480b88afd4f2b01d117525f534ddce28530f3 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 23 Apr 2020 06:26:31 -0600 Subject: [PATCH] Remove iterate_over_inferiors The last caller of iterate_over_inferiors is darwin-nat.c. This patch removes the calls from this file, and then remove iterate_over_inferiors. In general I think "external iteration" is to be preferred in gdb, the main benefit being that the code is easier to read. I rebuilt this on Darwin. I seem to only have access to Darwin systems where gdb does not yet work :-(, so I can't run the test suite. gdb/ChangeLog 2020-04-23 Tom Tromey * inferior.h (iterate_over_inferiors): Don't declare. * inferior.c (iterate_over_inferiors): Remove. * darwin-nat.c (find_inferior_task_it, find_inferior_pid_it): Remove. (darwin_find_inferior_by_task, darwin_find_inferior_by_pid): Don't use iterate_over_inferiors. (darwin_resume_inferior_it) (struct resume_inferior_threads_param) (darwin_resume_inferior_threads_it): Remove. (darwin_nat_target::resume): Don't use iterate_over_inferiors. Change-Id: Ib2fdf2c98e40f13156ff869ed3173d5f1fdae7ea --- gdb/ChangeLog | 13 +++++++++ gdb/darwin-nat.c | 68 ++++++++++++++---------------------------------- gdb/inferior.c | 11 -------- gdb/inferior.h | 14 ---------- 4 files changed, 32 insertions(+), 74 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 571ca4b2120..f5b4095083b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2020-04-23 Tom Tromey + + * inferior.h (iterate_over_inferiors): Don't declare. + * inferior.c (iterate_over_inferiors): Remove. + * darwin-nat.c (find_inferior_task_it, find_inferior_pid_it): + Remove. + (darwin_find_inferior_by_task, darwin_find_inferior_by_pid): Don't + use iterate_over_inferiors. + (darwin_resume_inferior_it) + (struct resume_inferior_threads_param) + (darwin_resume_inferior_threads_it): Remove. + (darwin_nat_target::resume): Don't use iterate_over_inferiors. + 2020-04-23 Tom de Vries * blockframe.c (find_pc_partial_function): Use diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c index 3bd8d8ce003..2d74bc010c3 100644 --- a/gdb/darwin-nat.c +++ b/gdb/darwin-nat.c @@ -378,32 +378,30 @@ darwin_nat_target::check_new_threads (inferior *inf) MACH_CHECK_ERROR (kret); } -static int -find_inferior_task_it (struct inferior *inf, void *port_ptr) -{ - darwin_inferior *priv = get_darwin_inferior (inf); - - return priv != nullptr && priv->task == *(task_t *)port_ptr; -} - -static int -find_inferior_pid_it (struct inferior *inf, void *pid_ptr) -{ - return inf->pid == *(int *)pid_ptr; -} - /* Return an inferior by task port. */ static struct inferior * darwin_find_inferior_by_task (task_t port) { - return iterate_over_inferiors (&find_inferior_task_it, &port); + for (inferior *inf : all_inferiors ()) + { + darwin_inferior *priv = get_darwin_inferior (inf); + + if (priv != nullptr && priv->task == port) + return inf; + } + return nullptr; } /* Return an inferior by pid port. */ static struct inferior * darwin_find_inferior_by_pid (int pid) { - return iterate_over_inferiors (&find_inferior_pid_it, &pid); + for (inferior *inf : all_inferiors ()) + { + if (inf->pid == pid) + return inf; + } + return nullptr; } /* Return a thread by port. */ @@ -458,15 +456,6 @@ darwin_resume_inferior (struct inferior *inf) } } -/* Iterator functions. */ - -static int -darwin_resume_inferior_it (struct inferior *inf, void *arg) -{ - darwin_resume_inferior (inf); - return 0; -} - static void darwin_dump_message (mach_msg_header_t *hdr, int disp_body) { @@ -886,23 +875,6 @@ darwin_resume_inferior_threads (struct inferior *inf, int step, int nsignal) darwin_resume_thread (inf, thread, step, nsignal); } -struct resume_inferior_threads_param -{ - int step; - int nsignal; -}; - -static int -darwin_resume_inferior_threads_it (struct inferior *inf, void *param) -{ - int step = ((struct resume_inferior_threads_param *)param)->step; - int nsignal = ((struct resume_inferior_threads_param *)param)->nsignal; - - darwin_resume_inferior_threads (inf, step, nsignal); - - return 0; -} - /* Suspend all threads of INF. */ static void @@ -951,15 +923,13 @@ darwin_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signal) /* minus_one_ptid is RESUME_ALL. */ if (ptid == minus_one_ptid) { - struct resume_inferior_threads_param param; - - param.nsignal = nsignal; - param.step = step; - /* Resume threads. */ - iterate_over_inferiors (darwin_resume_inferior_threads_it, ¶m); + for (inferior *inf : all_inferiors ()) + darwin_resume_inferior_threads (inf, step, nsignal); + /* Resume tasks. */ - iterate_over_inferiors (darwin_resume_inferior_it, NULL); + for (inferior *inf : all_inferiors ()) + darwin_resume_inferior (inf); } else { diff --git a/gdb/inferior.c b/gdb/inferior.c index ceee00e9eed..2f4ced0788d 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -310,17 +310,6 @@ find_inferior_for_program_space (struct program_space *pspace) return NULL; } -struct inferior * -iterate_over_inferiors (int (*callback) (struct inferior *, void *), - void *data) -{ - for (inferior *inf : all_inferiors_safe ()) - if ((*callback) (inf, data)) - return inf; - - return NULL; -} - int have_inferiors (void) { diff --git a/gdb/inferior.h b/gdb/inferior.h index 4229c6017d9..1ac51369dff 100644 --- a/gdb/inferior.h +++ b/gdb/inferior.h @@ -589,20 +589,6 @@ extern struct inferior *find_inferior_id (int num); extern struct inferior * find_inferior_for_program_space (struct program_space *pspace); -/* Inferior iterator function. - - Calls a callback function once for each inferior, so long as the - callback function returns false. If the callback function returns - true, the iteration will end and the current inferior will be - returned. This can be useful for implementing a search for a - inferior with arbitrary attributes, or for applying some operation - to every inferior. - - It is safe to delete the iterated inferior from the callback. */ -extern struct inferior *iterate_over_inferiors (int (*) (struct inferior *, - void *), - void *); - /* Returns true if the inferior list is not empty. */ extern int have_inferiors (void); -- 2.30.2