aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog28
-rw-r--r--gdb/corelow.c2
-rw-r--r--gdb/inferior.c2
-rw-r--r--gdb/inferior.h3
-rw-r--r--gdb/linux-thread-db.c2
-rw-r--r--gdb/process-stratum-target.c8
-rw-r--r--gdb/process-stratum-target.h2
-rw-r--r--gdb/record-full.c4
-rw-r--r--gdb/target.c12
-rw-r--r--gdb/target.h7
-rw-r--r--gdb/tracefile.h2
11 files changed, 52 insertions, 20 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1100e42..6e97bd4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,33 @@
2020-01-10 Pedro Alves <palves@redhat.com>
+ * corelow.c (core_target::has_execution): Change parameter type to
+ inferior pointer.
+ * inferior.c (number_of_live_inferiors): Use
+ inferior::has_execution instead of target_has_execution_1.
+ * inferior.h (inferior::has_execution): New.
+ * linux-thread-db.c (thread_db_target::update_thread_list): Use
+ inferior::has_execution instead of target_has_execution_1.
+ * process-stratum-target.c
+ (process_stratum_target::has_execution): Change parameter type to
+ inferior pointer. Check the inferior's PID instead of
+ inferior_ptid.
+ * process-stratum-target.h
+ (process_stratum_target::has_execution): Change parameter type to
+ inferior pointer.
+ * record-full.c (record_full_core_target::has_execution): Change
+ parameter type to inferior pointer.
+ * target.c (target_has_execution_1): Change parameter type to
+ inferior pointer.
+ (target_has_execution_current): Adjust.
+ * target.h (target_ops::has_execution): Change parameter type to
+ inferior pointer.
+ (target_has_execution_1): Change parameter type to inferior
+ pointer. Change return type to bool.
+ * tracefile.h (tracefile_target::has_execution): Change parameter
+ type to inferior pointer.
+
+2020-01-10 Pedro Alves <palves@redhat.com>
+
* exceptions.c (print_flush): Remove current_top_target() check.
2020-01-10 Pedro Alves <palves@redhat.com>
diff --git a/gdb/corelow.c b/gdb/corelow.c
index 0ec70c2..74f6608 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -94,7 +94,7 @@ public:
bool has_memory () override;
bool has_stack () override;
bool has_registers () override;
- bool has_execution (ptid_t) override { return false; }
+ bool has_execution (inferior *inf) override { return false; }
bool info_proc (const char *, enum info_proc_what) override;
diff --git a/gdb/inferior.c b/gdb/inferior.c
index 9882925..3969ace 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -345,7 +345,7 @@ number_of_live_inferiors (void)
int num_inf = 0;
for (inferior *inf : all_non_exited_inferiors ())
- if (target_has_execution_1 (ptid_t (inf->pid)))
+ if (inf->has_execution ())
for (thread_info *tp ATTRIBUTE_UNUSED : inf->non_exited_threads ())
{
/* Found a live thread in this inferior, go to the next
diff --git a/gdb/inferior.h b/gdb/inferior.h
index 3baac6e..fe94a01 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -339,6 +339,9 @@ public:
/* Returns true if we can delete this inferior. */
bool deletable () const { return refcount () == 0; }
+ bool has_execution ()
+ { return target_has_execution_1 (this); }
+
/* Pointer to next inferior in singly-linked list of inferiors. */
struct inferior *next = NULL;
diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
index 54d96e9..6290889 100644
--- a/gdb/linux-thread-db.c
+++ b/gdb/linux-thread-db.c
@@ -1622,7 +1622,7 @@ thread_db_target::update_thread_list ()
stop. That uses thread_db entry points that do not walk
libpthread's thread list, so should be safe, as well as more
efficient. */
- if (target_has_execution_1 (thread->ptid))
+ if (thread->inf->has_execution ())
continue;
thread_db_find_new_threads_1 (thread);
diff --git a/gdb/process-stratum-target.c b/gdb/process-stratum-target.c
index d6bc6ab..658229f 100644
--- a/gdb/process-stratum-target.c
+++ b/gdb/process-stratum-target.c
@@ -77,9 +77,9 @@ process_stratum_target::has_registers ()
}
bool
-process_stratum_target::has_execution (ptid_t the_ptid)
+process_stratum_target::has_execution (inferior *inf)
{
- /* If there's no thread selected, then we can't make it run through
- hoops. */
- return the_ptid != null_ptid;
+ /* If there's a process running already, we can't make it run
+ through hoops. */
+ return inf->pid != 0;
}
diff --git a/gdb/process-stratum-target.h b/gdb/process-stratum-target.h
index 9cd2cf2..741e67b 100644
--- a/gdb/process-stratum-target.h
+++ b/gdb/process-stratum-target.h
@@ -50,7 +50,7 @@ public:
bool has_memory () override;
bool has_stack () override;
bool has_registers () override;
- bool has_execution (ptid_t the_ptid) override;
+ bool has_execution (inferior *inf) override;
};
#endif /* !defined (PROCESS_STRATUM_TARGET_H) */
diff --git a/gdb/record-full.c b/gdb/record-full.c
index c5ef590..1fd72d5 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -319,7 +319,7 @@ public:
struct bp_target_info *,
enum remove_bp_reason) override;
- bool has_execution (ptid_t) override;
+ bool has_execution (inferior *inf) override;
};
static record_full_target record_full_ops;
@@ -2244,7 +2244,7 @@ record_full_core_target::remove_breakpoint (struct gdbarch *gdbarch,
/* "has_execution" method for prec over corefile. */
bool
-record_full_core_target::has_execution (ptid_t the_ptid)
+record_full_core_target::has_execution (inferior *inf)
{
return true;
}
diff --git a/gdb/target.c b/gdb/target.c
index e3e30af..7e7e875 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -223,20 +223,20 @@ target_has_registers_1 (void)
return 0;
}
-int
-target_has_execution_1 (ptid_t the_ptid)
+bool
+target_has_execution_1 (inferior *inf)
{
for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
- if (t->has_execution (the_ptid))
- return 1;
+ if (t->has_execution (inf))
+ return true;
- return 0;
+ return false;
}
int
target_has_execution_current (void)
{
- return target_has_execution_1 (inferior_ptid);
+ return target_has_execution_1 (current_inferior ());
}
/* This is used to implement the various target commands. */
diff --git a/gdb/target.h b/gdb/target.h
index 1ec7b90..b05a971 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -686,7 +686,7 @@ struct target_ops
virtual bool has_memory () { return false; }
virtual bool has_stack () { return false; }
virtual bool has_registers () { return false; }
- virtual bool has_execution (ptid_t) { return false; }
+ virtual bool has_execution (inferior *inf) { return false; }
/* Control thread execution. */
virtual thread_control_capabilities get_thread_control_capabilities ()
@@ -1790,9 +1790,10 @@ extern int target_has_registers_1 (void);
case this will become true after to_create_inferior or
to_attach. */
-extern int target_has_execution_1 (ptid_t);
+extern bool target_has_execution_1 (inferior *inf);
-/* Like target_has_execution_1, but always passes inferior_ptid. */
+/* Like target_has_execution_1, but always passes
+ current_inferior(). */
extern int target_has_execution_current (void);
diff --git a/gdb/tracefile.h b/gdb/tracefile.h
index 8f9dc0e..9c7fdea 100644
--- a/gdb/tracefile.h
+++ b/gdb/tracefile.h
@@ -127,7 +127,7 @@ public:
bool has_memory () override;
bool has_stack () override;
bool has_registers () override;
- bool has_execution (ptid_t) override { return false; }
+ bool has_execution (inferior *inf) override { return false; }
bool thread_alive (ptid_t ptid) override;
};