Remove target_has_execution macro
authorTom Tromey <tom@tromey.com>
Tue, 29 Sep 2020 01:38:25 +0000 (19:38 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 29 Sep 2020 01:52:21 +0000 (19:52 -0600)
This removes the object-like macro target_has_execution, replacing it
with a function call.  target_has_execution_current is also now
handled by this function.

gdb/ChangeLog
2020-09-28  Tom Tromey  <tom@tromey.com>

* inferior.h (class inferior) <has_execution>: Update.
* windows-tdep.c (windows_solib_create_inferior_hook): Update.
* valops.c (find_function_in_inferior)
(value_allocate_space_in_inferior): Update.
* top.c (kill_or_detach): Update.
* target.c (target_preopen, set_target_permissions): Update.
(target_has_execution_current): Remove.
* sparc64-tdep.c (adi_examine_command, adi_assign_command):
Update.
* solib.c (update_solib_list, reload_shared_libraries): Update.
* solib-svr4.c (svr4_solib_create_inferior_hook): Update.
* solib-dsbt.c (enable_break): Update.
* score-tdep.c (score7_fetch_inst): Update.
* rs6000-nat.c (rs6000_nat_target::xfer_shared_libraries):
Update.
* remote.c (remote_target::start_remote)
(remote_target::remote_check_symbols, remote_target::open_1)
(remote_target::remote_detach_1, remote_target::verify_memory)
(remote_target::xfer_partial, remote_target::read_description)
(remote_target::get_min_fast_tracepoint_insn_len): Update.
* record-full.c (record_full_open_1): Update.
* record-btrace.c (record_btrace_target_open): Update.
* objc-lang.c (lookup_objc_class, lookup_child_selector)
(value_nsstring): Update.
* linux-thread-db.c (add_thread_db_info)
(thread_db_find_new_threads_silently, check_thread_db_callback)
(try_thread_db_load_1, record_thread): Update.
* linux-tdep.c (linux_info_proc, linux_vsyscall_range_raw):
Update.
* linux-fork.c (checkpoint_command): Update.
* infrun.c (set_non_stop, set_observer_mode)
(check_multi_target_resumption, for_each_just_stopped_thread)
(maybe_remove_breakpoints, normal_stop)
(class infcall_suspend_state): Update.
* infcmd.c (ERROR_NO_INFERIOR, kill_if_already_running)
(info_program_command, attach_command): Update.
* infcall.c (call_function_by_hand_dummy): Update.
* inf-loop.c (inferior_event_handler): Update.
* gcore.c (gcore_command, derive_heap_segment): Update.
* exec.c (exec_file_command): Update.
* eval.c (evaluate_subexp): Update.
* compile/compile.c (compile_to_object): Update.
* cli/cli-dump.c (restore_command): Update.
* breakpoint.c (update_watchpoint)
(update_inserted_breakpoint_locations)
(insert_breakpoint_locations, get_bpstat_thread): Update.
* target.h (target_has_execution): Remove macro.
(target_has_execution_current): Don't declare.
(target_has_execution): Rename from target_has_execution_1.  Add
argument default.

30 files changed:
gdb/ChangeLog
gdb/breakpoint.c
gdb/cli/cli-dump.c
gdb/compile/compile.c
gdb/eval.c
gdb/exec.c
gdb/gcore.c
gdb/inf-loop.c
gdb/infcall.c
gdb/infcmd.c
gdb/inferior.h
gdb/infrun.c
gdb/linux-fork.c
gdb/linux-tdep.c
gdb/linux-thread-db.c
gdb/objc-lang.c
gdb/record-btrace.c
gdb/record-full.c
gdb/remote.c
gdb/rs6000-nat.c
gdb/score-tdep.c
gdb/solib-dsbt.c
gdb/solib-svr4.c
gdb/solib.c
gdb/sparc64-tdep.c
gdb/target.c
gdb/target.h
gdb/top.c
gdb/valops.c
gdb/windows-tdep.c

index dcce8212ca09e7ed95658680ed28ef78583a8086..2c29fff35ed3a3e58299a3dc9611014b3116247e 100644 (file)
@@ -1,3 +1,56 @@
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+       * inferior.h (class inferior) <has_execution>: Update.
+       * windows-tdep.c (windows_solib_create_inferior_hook): Update.
+       * valops.c (find_function_in_inferior)
+       (value_allocate_space_in_inferior): Update.
+       * top.c (kill_or_detach): Update.
+       * target.c (target_preopen, set_target_permissions): Update.
+       (target_has_execution_current): Remove.
+       * sparc64-tdep.c (adi_examine_command, adi_assign_command):
+       Update.
+       * solib.c (update_solib_list, reload_shared_libraries): Update.
+       * solib-svr4.c (svr4_solib_create_inferior_hook): Update.
+       * solib-dsbt.c (enable_break): Update.
+       * score-tdep.c (score7_fetch_inst): Update.
+       * rs6000-nat.c (rs6000_nat_target::xfer_shared_libraries):
+       Update.
+       * remote.c (remote_target::start_remote)
+       (remote_target::remote_check_symbols, remote_target::open_1)
+       (remote_target::remote_detach_1, remote_target::verify_memory)
+       (remote_target::xfer_partial, remote_target::read_description)
+       (remote_target::get_min_fast_tracepoint_insn_len): Update.
+       * record-full.c (record_full_open_1): Update.
+       * record-btrace.c (record_btrace_target_open): Update.
+       * objc-lang.c (lookup_objc_class, lookup_child_selector)
+       (value_nsstring): Update.
+       * linux-thread-db.c (add_thread_db_info)
+       (thread_db_find_new_threads_silently, check_thread_db_callback)
+       (try_thread_db_load_1, record_thread): Update.
+       * linux-tdep.c (linux_info_proc, linux_vsyscall_range_raw):
+       Update.
+       * linux-fork.c (checkpoint_command): Update.
+       * infrun.c (set_non_stop, set_observer_mode)
+       (check_multi_target_resumption, for_each_just_stopped_thread)
+       (maybe_remove_breakpoints, normal_stop)
+       (class infcall_suspend_state): Update.
+       * infcmd.c (ERROR_NO_INFERIOR, kill_if_already_running)
+       (info_program_command, attach_command): Update.
+       * infcall.c (call_function_by_hand_dummy): Update.
+       * inf-loop.c (inferior_event_handler): Update.
+       * gcore.c (gcore_command, derive_heap_segment): Update.
+       * exec.c (exec_file_command): Update.
+       * eval.c (evaluate_subexp): Update.
+       * compile/compile.c (compile_to_object): Update.
+       * cli/cli-dump.c (restore_command): Update.
+       * breakpoint.c (update_watchpoint)
+       (update_inserted_breakpoint_locations)
+       (insert_breakpoint_locations, get_bpstat_thread): Update.
+       * target.h (target_has_execution): Remove macro.
+       (target_has_execution_current): Don't declare.
+       (target_has_execution): Rename from target_has_execution_1.  Add
+       argument default.
+
 2020-09-28  Tom Tromey  <tom@tromey.com>
 
        * mi/mi-main.c (exec_reverse_continue)
index e0712b2ea9d2da9378e77f7f0720072c82031e86..296b08c0afc7ec4554812696f74031e2d845770b 100644 (file)
@@ -1768,7 +1768,7 @@ update_watchpoint (struct watchpoint *b, int reparse)
      don't try to insert watchpoint.  We don't automatically delete
      such watchpoint, though, since failure to parse expression
      is different from out-of-scope watchpoint.  */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     {
       /* Without execution, memory can't change.  No use to try and
         set watchpoint locations.  The watchpoint will be reset when
@@ -2878,7 +2878,7 @@ update_inserted_breakpoint_locations (void)
         if we aren't attached to any process yet, we should still
         insert breakpoints.  */
       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
-         && (inferior_ptid == null_ptid || !target_has_execution))
+         && (inferior_ptid == null_ptid || !target_has_execution ()))
        continue;
 
       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
@@ -2934,7 +2934,7 @@ insert_breakpoint_locations (void)
         if we aren't attached to any process yet, we should still
         insert breakpoints.  */
       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
-         && (inferior_ptid == null_ptid || !target_has_execution))
+         && (inferior_ptid == null_ptid || !target_has_execution ()))
        continue;
 
       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
@@ -4410,7 +4410,7 @@ bpstat_do_actions_1 (bpstat *bsp)
 static thread_info *
 get_bpstat_thread ()
 {
-  if (inferior_ptid == null_ptid || !target_has_execution)
+  if (inferior_ptid == null_ptid || !target_has_execution ())
     return NULL;
 
   thread_info *tp = inferior_thread ();
index c8d6797ddc1fc92e663b999e8d92a4fae8721d56..428e644ba990e9da6d6e14259638be96e1b62836 100644 (file)
@@ -497,7 +497,7 @@ restore_command (const char *args, int from_tty)
 {
   int binary_flag = 0;
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     noprocess ();
 
   CORE_ADDR load_offset = 0;
index 82ffb8e5e98507f054ef50a1d67851ae142bd22b..3e45e762624f577ac404a7f41adbac4700f97493 100644 (file)
@@ -641,7 +641,7 @@ compile_to_object (struct command_line *cmd, const char *cmd_string,
   struct gdbarch *gdbarch = get_current_arch ();
   std::string triplet_rx;
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     error (_("The program must be running for the compile command to "\
             "work."));
 
index 2a1fd98caed60ae4e2c34fbd142cff536b615309..e0cfb79368f6d1d63e8d58d3c5605cf4e309c4cd 100644 (file)
@@ -68,7 +68,7 @@ evaluate_subexp (struct type *expect_type, struct expression *exp,
   struct value *retval;
 
   gdb::optional<enable_thread_stack_temporaries> stack_temporaries;
-  if (*pos == 0 && target_has_execution
+  if (*pos == 0 && target_has_execution ()
       && exp->language_defn->la_language == language_cplus
       && !thread_stack_temporaries_enabled_p (inferior_thread ()))
     stack_temporaries.emplace (inferior_thread ());
index 14cc6af7de0726674d02f976776d08bfcc488ed9..251e24dd26b667f6b43297695451dd02c5329923 100644 (file)
@@ -545,7 +545,7 @@ exec_file_attach (const char *filename, int from_tty)
 static void
 exec_file_command (const char *args, int from_tty)
 {
-  if (from_tty && target_has_execution
+  if (from_tty && target_has_execution ()
       && !query (_("A program is being debugged already.\n"
                   "Are you sure you want to change the file? ")))
     error (_("File not changed."));
index ebaae88b0816b738380bb38307e63f69e5f5d8ec..db82eaac3dd8b3c06bc1a3770f65f5ddbc590ff5 100644 (file)
@@ -129,7 +129,7 @@ gcore_command (const char *args, int from_tty)
   gdb::unique_xmalloc_ptr<char> corefilename;
 
   /* No use generating a corefile without a target process.  */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     noprocess ();
 
   if (args && *args)
@@ -321,7 +321,7 @@ derive_heap_segment (bfd *abfd, bfd_vma *bottom, bfd_vma *top)
 
   /* This function depends on being able to call a function in the
      inferior.  */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     return 0;
 
   /* The following code assumes that the link map is arranged as
index cf746b8588cc231e5467f29164bc5ee785032681..68c94d9e942c22a7ccf72135231d2906e1ad70cd 100644 (file)
@@ -48,7 +48,7 @@ inferior_event_handler (enum inferior_event_type event_type)
          /* Unregister the inferior from the event loop.  This is done
             so that when the inferior is not running we don't get
             distracted by spurious inferior output.  */
-         if (target_has_execution && target_can_async_p ())
+         if (target_has_execution () && target_can_async_p ())
            target_async (0);
        }
 
index 8df7523f1576881e3f42fb98f06f97a72a258fb9..399b1724ea22ddd23b1ccabc51dd58870dbea5c8 100644 (file)
@@ -786,7 +786,7 @@ call_function_by_hand_dummy (struct value *function,
     error (_("Cannot call functions in the program: "
             "may-call-functions is off."));
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     noprocess ();
 
   if (get_traceframe_number () >= 0)
@@ -1353,7 +1353,7 @@ When the function is done executing, GDB will silently stop."),
   /* If the program has exited, or we stopped at a different thread,
      exit and inform the user.  */
 
-  if (! target_has_execution)
+  if (! target_has_execution ())
     {
       const char *name = get_function_name (funaddr,
                                            name_buf, sizeof (name_buf));
index 88fca1b20a1a1bd31b702fecb61ef55d58abc042..81ce36dafe2690fae1d299d1cba821c147f4e014 100644 (file)
@@ -64,7 +64,7 @@ static void until_next_command (int);
 static void step_1 (int, int, const char *);
 
 #define ERROR_NO_INFERIOR \
-   if (!target_has_execution) error (_("The program is not being run."));
+   if (!target_has_execution ()) error (_("The program is not being run."));
 
 /* Scratch area where string containing arguments to give to the
    program will be stored by 'set args'.  As soon as anything is
@@ -358,7 +358,7 @@ post_create_inferior (struct target_ops *target, int from_tty)
 static void
 kill_if_already_running (int from_tty)
 {
-  if (inferior_ptid != null_ptid && target_has_execution)
+  if (inferior_ptid != null_ptid && target_has_execution ())
     {
       /* Bail out before killing the program if we will not be able to
         restart it.  */
@@ -1861,7 +1861,7 @@ info_program_command (const char *args, int from_tty)
   ptid_t ptid;
   process_stratum_target *proc_target;
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     {
       printf_filtered (_("The program being debugged is not being run.\n"));
       return;
@@ -2569,7 +2569,7 @@ attach_command (const char *args, int from_tty)
     /* Don't complain if all processes share the same symbol
        space.  */
     ;
-  else if (target_has_execution)
+  else if (target_has_execution ())
     {
       if (query (_("A program is being debugged already.  Kill it? ")))
        target_kill ();
index 606cece6c0b33a017d9cfb759a88a8cf007309fb..70edf21b34bc859f123b6546ce602daa8f856a05 100644 (file)
@@ -377,7 +377,7 @@ public:
   { return m_target_stack.at (stratum); }
 
   bool has_execution ()
-  { return target_has_execution_1 (this); }
+  { return target_has_execution (this); }
 
   /* Pointer to next inferior in singly-linked list of inferiors.  */
   struct inferior *next = NULL;
index e4bd692760c93b1c636e922bd4825da54305ce05..6ff362cb6dfefb535994909bc9042e36bd1bdcaa 100644 (file)
@@ -218,7 +218,7 @@ static void
 set_non_stop (const char *args, int from_tty,
              struct cmd_list_element *c)
 {
-  if (target_has_execution)
+  if (target_has_execution ())
     {
       non_stop_1 = non_stop;
       error (_("Cannot change this setting while the inferior is running."));
@@ -247,7 +247,7 @@ static void
 set_observer_mode (const char *args, int from_tty,
                   struct cmd_list_element *c)
 {
-  if (target_has_execution)
+  if (target_has_execution ())
     {
       observer_mode_1 = observer_mode;
       error (_("Cannot change this setting while the inferior is running."));
@@ -2884,7 +2884,7 @@ check_multi_target_resumption (process_stratum_target *resume_target)
        {
          switch_to_inferior_no_thread (inf);
 
-         if (!target_has_execution)
+         if (!target_has_execution ())
            continue;
 
          process_stratum_target *proc_target
@@ -3308,7 +3308,7 @@ typedef void (*for_each_just_stopped_thread_callback_func)
 static void
 for_each_just_stopped_thread (for_each_just_stopped_thread_callback_func func)
 {
-  if (!target_has_execution || inferior_ptid == null_ptid)
+  if (!target_has_execution () || inferior_ptid == null_ptid)
     return;
 
   if (target_is_non_stop_p ())
@@ -8146,7 +8146,7 @@ print_stop_event (struct ui_out *uiout, bool displays)
 void
 maybe_remove_breakpoints (void)
 {
-  if (!breakpoints_should_be_inserted_now () && target_has_execution)
+  if (!breakpoints_should_be_inserted_now () && target_has_execution ())
     {
       if (remove_breakpoints ())
        {
@@ -8302,7 +8302,7 @@ normal_stop (void)
      informing of a stop.  */
   if (!non_stop
       && previous_inferior_ptid != inferior_ptid
-      && target_has_execution
+      && target_has_execution ()
       && last.kind != TARGET_WAITKIND_SIGNALLED
       && last.kind != TARGET_WAITKIND_EXITED
       && last.kind != TARGET_WAITKIND_NO_RESUMED)
@@ -8407,7 +8407,7 @@ normal_stop (void)
 
   annotate_stopped ();
 
-  if (target_has_execution)
+  if (target_has_execution ())
     {
       if (last.kind != TARGET_WAITKIND_SIGNALLED
          && last.kind != TARGET_WAITKIND_EXITED
@@ -8923,7 +8923,7 @@ public:
 
     /* The inferior can be gone if the user types "print exit(0)"
        (and perhaps other times).  */
-    if (target_has_execution)
+    if (target_has_execution ())
       /* NB: The register write goes through to the target.  */
       regcache->restore (registers ());
   }
index e232d9c263a2df58d7f0352e0a53ff65b312a265..b3d8fc1a1746e5fc7ea3a3ff7ee177f3b1b0c3c3 100644 (file)
@@ -645,7 +645,7 @@ checkpoint_command (const char *args, int from_tty)
   struct fork_info *fp;
   pid_t retpid;
 
-  if (!target_has_execution) 
+  if (!target_has_execution ()
     error (_("The program is not being run."));
 
   /* Ensure that the inferior is not multithreaded.  */
index a0d954a620626d695007dc3607225305ed3128bc..439f583a8027ce6c28568196da47a6963042e4e6 100644 (file)
@@ -772,7 +772,7 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args,
     }
   else
     {
-      if (!target_has_execution)
+      if (!target_has_execution ())
        error (_("No current process: you must name one."));
       if (current_inferior ()->fake_pid_p)
        error (_("Can't determine the current process's PID: you must name one."));
@@ -2317,7 +2317,7 @@ linux_vsyscall_range_raw (struct gdbarch *gdbarch, struct mem_range *range)
   /* It doesn't make sense to access the host's /proc when debugging a
      core file.  Instead, look for the PT_LOAD segment that matches
      the vDSO.  */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     {
       long phdrs_size;
       int num_phdrs, i;
index 64b96c0ad80dd6765dbf41ad34c8c5fd608ba550..878e7bd183f600c4e5235f1efae6a24e08b8165f 100644 (file)
@@ -237,7 +237,7 @@ add_thread_db_info (void *handle)
 
   /* The workaround works by reading from /proc/pid/status, so it is
      disabled for core files.  */
-  if (target_has_execution)
+  if (target_has_execution ())
     info->need_stale_parent_threads_check = 1;
 
   info->next = thread_db_list;
@@ -531,7 +531,7 @@ thread_db_find_new_threads_silently (thread_info *stopped)
         corrupted.  For core files it does not apply, no 'later enumeration'
         is possible.  */
 
-      if (!target_has_execution || !inferior_has_bug ("nptl_version", 2, 7))
+      if (!target_has_execution () || !inferior_has_bug ("nptl_version", 2, 7))
        {
          exception_fprintf (gdb_stderr, except,
                             _("Warning: couldn't activate thread debugging "
@@ -658,7 +658,7 @@ check_thread_db_callback (const td_thrhandle_t *th, void *arg)
   memset (&th2, 23, sizeof (td_thrhandle_t));
   CALL_UNCHECKED (td_ta_map_lwp2thr, th->th_ta_p, ti.ti_lid, &th2);
 
-  if (tdb_testinfo->last_result == TD_ERR && !target_has_execution)
+  if (tdb_testinfo->last_result == TD_ERR && !target_has_execution ())
     {
       /* Some platforms require execution for td_ta_map_lwp2thr.  */
       LOG (_("; can't map_lwp2thr"));
@@ -884,7 +884,7 @@ try_thread_db_load_1 (struct thread_db_info *info)
 
      td_ta_map_lwp2thr uses ps_get_thread_area, but we can't use that
      currently on core targets, as it uses ptrace directly.  */
-  if (target_has_execution
+  if (target_has_execution ()
       && linux_proc_task_list_dir_exists (inferior_ptid.pid ()))
     info->td_ta_thr_iter_p = NULL;
   else
@@ -1358,7 +1358,7 @@ record_thread (struct thread_db_info *info,
   else
     tp->priv.reset (priv);
 
-  if (target_has_execution)
+  if (target_has_execution ())
     check_thread_signals ();
 
   return tp;
index 9eaaf96a2a572710a27b4df3d1812a5361ee8ced..009b7a7331eebdce5fa27d002fad80277af0654c 100644 (file)
@@ -33,7 +33,7 @@
 #include "value.h"
 #include "symfile.h"
 #include "objfiles.h"
-#include "target.h"            /* for target_has_execution */
+#include "target.h"
 #include "gdbcore.h"
 #include "gdbcmd.h"
 #include "frame.h"
@@ -112,7 +112,7 @@ lookup_objc_class (struct gdbarch *gdbarch, const char *classname)
   struct type *char_type = builtin_type (gdbarch)->builtin_char;
   struct value * function, *classval;
 
-  if (! target_has_execution)
+  if (! target_has_execution ())
     {
       /* Can't call into inferior to lookup class.  */
       return 0;
@@ -141,7 +141,7 @@ lookup_child_selector (struct gdbarch *gdbarch, const char *selname)
   struct type *char_type = builtin_type (gdbarch)->builtin_char;
   struct value * function, *selstring;
 
-  if (! target_has_execution)
+  if (! target_has_execution ())
     {
       /* Can't call into inferior to lookup selector.  */
       return 0;
@@ -172,7 +172,7 @@ value_nsstring (struct gdbarch *gdbarch, char *ptr, int len)
   struct symbol *sym;
   struct type *type;
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     return 0;          /* Can't call into inferior to create NSString.  */
 
   stringValue[2] = value_string(ptr, len, char_type);
index c1430e9b5335e05faf144042d7c80670f6f3ba3b..678984baeb6a8bc68a3dfa1e2a6d3df21fbae2ac 100644 (file)
@@ -390,7 +390,7 @@ record_btrace_target_open (const char *args, int from_tty)
 
   record_preopen ();
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     error (_("The program is not being run."));
 
   for (thread_info *tp : current_inferior ()->non_exited_threads ())
index 1c8b791ffb9e99da2c6f971707599cac3447d9ec..c0fedfc32e158fd4397111323001f66cefe3d657 100644 (file)
@@ -947,7 +947,7 @@ record_full_open_1 (const char *name, int from_tty)
     fprintf_unfiltered (gdb_stdlog, "Process record: record_full_open_1\n");
 
   /* check exec */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     error (_("Process record: the program is not being run."));
   if (non_stop)
     error (_("Process record target can't debug inferior in non-stop mode "
index 5fc80ebc8f76af15737aaedf64ca8edfa21fd5d8..1ef9b44f731e42b96e45f829d7ca0d13abad223b 100644 (file)
@@ -4843,7 +4843,7 @@ remote_target::start_remote (int from_tty, int extended_p)
     }
 
   /* If we connected to a live target, do some additional setup.  */
-  if (target_has_execution)
+  if (target_has_execution ())
     {
       if (symfile_objfile)     /* No use without a symbol-file.  */
        remote_check_symbols ();
@@ -4946,7 +4946,7 @@ remote_target::remote_check_symbols ()
      but our current inferior is not running, we should not invite the
      remote target to request symbol lookups related to its
      (unrelated) current process.  */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     return;
 
   if (packet_support (PACKET_qSymbol) == PACKET_DISABLE)
@@ -5544,7 +5544,7 @@ remote_target::open_1 (const char *name, int from_tty, int extended_p)
   /* If we're connected to a running target, target_preopen will kill it.
      Ask this question first, before target_preopen has a chance to kill
      anything.  */
-  if (curr_remote != NULL && !target_has_execution)
+  if (curr_remote != NULL && !target_has_execution ())
     {
       if (from_tty
          && !query (_("Already connected to a remote target.  Disconnect? ")))
@@ -5727,7 +5727,7 @@ remote_target::remote_detach_1 (inferior *inf, int from_tty)
   struct remote_state *rs = get_remote_state ();
   int is_fork_parent;
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     error (_("No process to detach from."));
 
   target_announce_detach (from_tty);
@@ -10718,7 +10718,8 @@ remote_target::verify_memory (const gdb_byte *data, CORE_ADDR lma, ULONGEST size
 
   /* It doesn't make sense to use qCRC if the remote target is
      connected but not running.  */
-  if (target_has_execution && packet_support (PACKET_qCRC) != PACKET_DISABLE)
+  if (target_has_execution ()
+      && packet_support (PACKET_qCRC) != PACKET_DISABLE)
     {
       enum packet_result result;
 
@@ -10980,7 +10981,7 @@ remote_target::xfer_partial (enum target_object object,
       /* If the remote target is connected but not running, we should
         pass this request down to a lower stratum (e.g. the executable
         file).  */
-      if (!target_has_execution)
+      if (!target_has_execution ())
        return TARGET_XFER_EOF;
 
       if (writebuf != NULL)
@@ -11720,7 +11721,7 @@ remote_target::read_description ()
 
   /* Do not try this during initial connection, when we do not know
      whether there is a running but stopped thread.  */
-  if (!target_has_execution || inferior_ptid == null_ptid)
+  if (!target_has_execution () || inferior_ptid == null_ptid)
     return beneath ()->read_description ();
 
   if (!data->guesses.empty ())
@@ -13584,7 +13585,7 @@ remote_target::get_min_fast_tracepoint_insn_len ()
 
   /* If we're not debugging a process yet, the IPA can't be
      loaded.  */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     return 0;
 
   /* Make sure the remote is pointing at the right process.  */
index 29154cfc2e7d3d06c748b2b857f451c222875ff6..c49e64b5a62330f50fb527cb55da556109b16519 100644 (file)
@@ -650,7 +650,7 @@ rs6000_nat_target::xfer_shared_libraries
 
   /* This function assumes that it is being run with a live process.
      Core files are handled via gdbarch.  */
-  gdb_assert (target_has_execution);
+  gdb_assert (target_has_execution ());
 
   if (writebuf)
     return TARGET_XFER_E_IO;
index 90cb0fa312a2bbdd4c51ca14a6ac6ad80b9f3b3e..72cba90a27ca986e59d7fdcd78a79ef12e0d66d6 100644 (file)
@@ -123,7 +123,7 @@ score7_fetch_inst (struct gdbarch *gdbarch, CORE_ADDR addr, gdb_byte *memblock)
   int big;
   int ret;
 
-  if (target_has_execution && memblock != NULL)
+  if (target_has_execution () && memblock != NULL)
     {
       /* Fetch instruction from local MEMBLOCK.  */
       memcpy (buf, memblock, SCORE_INSTLEN);
index 94a6ac8375438d1758037871735e691cdf0cef13..0f146725dba328e7ec7a3093e282a5648482b677 100644 (file)
@@ -781,7 +781,7 @@ enable_break (void)
   if (exec_bfd == NULL)
     return 0;
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     return 0;
 
   info = get_dsbt_info ();
index 570450c5400619925c8e19d2a0bdec06d328cd8e..4ae21d190bf29ff9cd08b556ed3256ec81bc9a5c 100644 (file)
@@ -3014,7 +3014,7 @@ svr4_solib_create_inferior_hook (int from_tty)
 
   /* No point setting a breakpoint in the dynamic linker if we can't
      hit it (e.g., a core file, or a trace file).  */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     return;
 
   if (!svr4_have_link_map_offsets ())
index cd410bb9e3e0998dd7a0a02665fa085693f2f0a8..cf5d05e83b2cd43a7bf8dcf68547cd54618f72f9 100644 (file)
@@ -729,7 +729,7 @@ update_solib_list (int from_tty)
 
   /* We can reach here due to changing solib-search-path or the
      sysroot, before having any inferior.  */
-  if (target_has_execution && inferior_ptid != null_ptid)
+  if (target_has_execution () && inferior_ptid != null_ptid)
     {
       struct inferior *inf = current_inferior ();
 
@@ -1351,7 +1351,7 @@ reload_shared_libraries (const char *ignored, int from_tty,
      Absent this call, if we've just connected to a target and set 
      solib-absolute-prefix or solib-search-path, we'll lose all information
      about ld.so.  */
-  if (target_has_execution)
+  if (target_has_execution ())
     {
       /* Reset or free private data structures not associated with
         so_list entries.  */
index 372df041905cbfcb0d4c6f0b02cd055acdd22cfa..a6e46570437c369c33a75f54e6da072922363100 100644 (file)
@@ -448,7 +448,7 @@ static void
 adi_examine_command (const char *args, int from_tty)
 {
   /* make sure program is active and adi is available */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     error (_("ADI command requires a live process/thread"));
 
   if (!adi_available ())
@@ -484,7 +484,7 @@ adi_assign_command (const char *args, int from_tty)
     = N_("Usage: adi assign|a[/COUNT] ADDR = VERSION");
 
   /* make sure program is active and adi is available */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     error (_("ADI command requires a live process/thread"));
 
   if (!adi_available ())
index 4f58daa6d22681fc45c2a7e9e025681604bdf10f..dd78a848caec3fa316cc81d31cbfea0c676421a6 100644 (file)
@@ -200,8 +200,11 @@ target_has_registers ()
 }
 
 bool
-target_has_execution_1 (inferior *inf)
+target_has_execution (inferior *inf)
 {
+  if (inf == nullptr)
+    inf = current_inferior ();
+
   for (target_ops *t = inf->top_target ();
        t != nullptr;
        t = inf->find_target_beneath (t))
@@ -211,12 +214,6 @@ target_has_execution_1 (inferior *inf)
   return false;
 }
 
-int
-target_has_execution_current (void)
-{
-  return target_has_execution_1 (current_inferior ());
-}
-
 /* This is used to implement the various target commands.  */
 
 static void
@@ -1914,12 +1911,12 @@ target_preopen (int from_tty)
   if (current_inferior ()->pid != 0)
     {
       if (!from_tty
-         || !target_has_execution
+         || !target_has_execution ()
          || query (_("A program is being debugged already.  Kill it? ")))
        {
          /* Core inferiors actually should be detached, not
             killed.  */
-         if (target_has_execution)
+         if (target_has_execution ())
            target_kill ();
          else
            target_detach (current_inferior (), 0);
@@ -3932,7 +3929,7 @@ static void
 set_target_permissions (const char *args, int from_tty,
                        struct cmd_list_element *c)
 {
-  if (target_has_execution)
+  if (target_has_execution ())
     {
       update_target_permissions ();
       error (_("Cannot change this setting while the inferior is running."));
index ea777f2fb3679bd7995e55e07f055551a2006f3e..20e7ae36ace776e5334075ba4475db371fe10395 100644 (file)
@@ -1829,16 +1829,10 @@ extern int target_has_registers ();
    whether or not the target is capable of execution, but there are
    also targets which can be current while not executing.  In that
    case this will become true after to_create_inferior or
-   to_attach.  */
+   to_attach.  INF is the inferior to use; nullptr means to use the
+   current inferior.  */
 
-extern bool target_has_execution_1 (inferior *inf);
-
-/* Like target_has_execution_1, but always passes
-   current_inferior().  */
-
-extern int target_has_execution_current (void);
-
-#define target_has_execution target_has_execution_current ()
+extern bool target_has_execution (inferior *inf = nullptr);
 
 /* Can the target support the debugger control of thread execution?
    Can it lock the thread scheduler?  */
index 8dbc7ced4dc3c84fd5860b5ad3c86989669e4e14..c50fb4dc7d4c1772ebf330b6b379bc80c3ae3dee 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1677,7 +1677,7 @@ kill_or_detach (inferior *inf, int from_tty)
       switch_to_thread (thread);
 
       /* Leave core files alone.  */
-      if (target_has_execution)
+      if (target_has_execution ())
        {
          if (inf->attach_flag)
            target_detach (inf, from_tty);
index 0995a76c02f818b67e80e39a90e91146416aca3f..4906b3b53bd6892331eded7e5d45f0241bb43bdc 100644 (file)
@@ -155,7 +155,7 @@ find_function_in_inferior (const char *name, struct objfile **objf_p)
        }
       else
        {
-         if (!target_has_execution)
+         if (!target_has_execution ())
            error (_("evaluation of this expression "
                     "requires the target program to be active"));
          else
@@ -182,7 +182,7 @@ value_allocate_space_in_inferior (int len)
   val = call_function_by_hand (val, NULL, blocklen);
   if (value_logical_not (val))
     {
-      if (!target_has_execution)
+      if (!target_has_execution ())
        error (_("No memory available to program now: "
                 "you need to start the target first"));
       else
index 2a5524ed1286fdc92a02780dbc546e4f8b53710b..984f13941ce4796ebb3987dd7e20a6e515268656 100644 (file)
@@ -902,7 +902,7 @@ windows_solib_create_inferior_hook (int from_tty)
     }
   CORE_ADDR tlb;
   gdb_byte buf[8];
-  if (target_has_execution
+  if (target_has_execution ()
       && target_get_tib_address (inferior_ptid, &tlb)
       && !target_read_memory (tlb + peb_offset, buf, ptr_bytes))
     {