aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-04-23 06:26:31 -0600
committerTom Tromey <tromey@adacore.com>2020-04-23 06:26:31 -0600
commit740480b88afd4f2b01d117525f534ddce28530f3 (patch)
tree0c1b273c1f4d927ef0c469829855926cc5438ffb
parent2745674244d6aecddcf636475034bdb9c0a6b4a0 (diff)
downloadgdb-740480b88afd4f2b01d117525f534ddce28530f3.zip
gdb-740480b88afd4f2b01d117525f534ddce28530f3.tar.gz
gdb-740480b88afd4f2b01d117525f534ddce28530f3.tar.bz2
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 <tom@tromey.com> * 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
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/darwin-nat.c68
-rw-r--r--gdb/inferior.c11
-rw-r--r--gdb/inferior.h14
4 files changed, 32 insertions, 74 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 571ca4b..f5b4095 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2020-04-23 Tom Tromey <tom@tromey.com>
+
+ * 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 <tdevries@suse.de>
* blockframe.c (find_pc_partial_function): Use
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
index 3bd8d8c..2d74bc0 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, &param);
+ 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 ceee00e..2f4ced0 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 4229c60..1ac5136 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);