diff options
-rw-r--r-- | gdb/ChangeLog | 28 | ||||
-rw-r--r-- | gdb/corelow.c | 2 | ||||
-rw-r--r-- | gdb/inferior.c | 2 | ||||
-rw-r--r-- | gdb/inferior.h | 3 | ||||
-rw-r--r-- | gdb/linux-thread-db.c | 2 | ||||
-rw-r--r-- | gdb/process-stratum-target.c | 8 | ||||
-rw-r--r-- | gdb/process-stratum-target.h | 2 | ||||
-rw-r--r-- | gdb/record-full.c | 4 | ||||
-rw-r--r-- | gdb/target.c | 12 | ||||
-rw-r--r-- | gdb/target.h | 7 | ||||
-rw-r--r-- | gdb/tracefile.h | 2 |
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; }; |