static struct target_ops *the_debug_target;
-/* Top of target stack. */
-/* The target structure we are currently using to talk to a process
- or file or whatever "inferior" we have. */
-
-target_ops *
-current_top_target ()
-{
- return current_inferior ()->top_target ();
-}
-
/* Command list for target. */
static struct cmd_list_element *targetlist = NULL;
int
target_has_memory ()
{
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
if (t->has_memory ())
return 1;
int
target_has_stack ()
{
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
if (t->has_stack ())
return 1;
int
target_has_registers ()
{
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
if (t->has_registers ())
return 1;
const char *
target_shortname ()
{
- return current_top_target ()->shortname ();
+ return current_inferior ()->top_target ()->shortname ();
}
/* See target.h. */
bool
target_attach_no_wait ()
{
- return current_top_target ()->attach_no_wait ();
+ return current_inferior ()->top_target ()->attach_no_wait ();
}
/* See target.h. */
void
target_post_attach (int pid)
{
- return current_top_target ()->post_attach (pid);
+ return current_inferior ()->top_target ()->post_attach (pid);
}
/* See target.h. */
void
target_prepare_to_store (regcache *regcache)
{
- return current_top_target ()->prepare_to_store (regcache);
+ return current_inferior ()->top_target ()->prepare_to_store (regcache);
}
/* See target.h. */
bool
target_supports_enable_disable_tracepoint ()
{
- return current_top_target ()->supports_enable_disable_tracepoint ();
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->supports_enable_disable_tracepoint ();
}
bool
target_supports_string_tracing ()
{
- return current_top_target ()->supports_string_tracing ();
+ return current_inferior ()->top_target ()->supports_string_tracing ();
}
/* See target.h. */
bool
target_supports_evaluation_of_breakpoint_conditions ()
{
- return current_top_target ()->supports_evaluation_of_breakpoint_conditions ();
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->supports_evaluation_of_breakpoint_conditions ();
}
/* See target.h. */
bool
target_supports_dumpcore ()
{
- return current_top_target ()->supports_dumpcore ();
+ return current_inferior ()->top_target ()->supports_dumpcore ();
}
/* See target.h. */
void
target_dumpcore (const char *filename)
{
- return current_top_target ()->dumpcore (filename);
+ return current_inferior ()->top_target ()->dumpcore (filename);
}
/* See target.h. */
bool
target_can_run_breakpoint_commands ()
{
- return current_top_target ()->can_run_breakpoint_commands ();
+ return current_inferior ()->top_target ()->can_run_breakpoint_commands ();
}
/* See target.h. */
void
target_files_info ()
{
- return current_top_target ()->files_info ();
+ return current_inferior ()->top_target ()->files_info ();
}
/* See target.h. */
void
target_post_startup_inferior (ptid_t ptid)
{
- return current_top_target ()->post_startup_inferior (ptid);
+ return current_inferior ()->top_target ()->post_startup_inferior (ptid);
}
/* See target.h. */
int
target_insert_fork_catchpoint (int pid)
{
- return current_top_target ()->insert_fork_catchpoint (pid);
+ return current_inferior ()->top_target ()->insert_fork_catchpoint (pid);
}
/* See target.h. */
int
target_remove_fork_catchpoint (int pid)
{
- return current_top_target ()->remove_fork_catchpoint (pid);
+ return current_inferior ()->top_target ()->remove_fork_catchpoint (pid);
}
/* See target.h. */
int
target_insert_vfork_catchpoint (int pid)
{
- return current_top_target ()->insert_vfork_catchpoint (pid);
+ return current_inferior ()->top_target ()->insert_vfork_catchpoint (pid);
}
/* See target.h. */
int
target_remove_vfork_catchpoint (int pid)
{
- return current_top_target ()->remove_vfork_catchpoint (pid);
+ return current_inferior ()->top_target ()->remove_vfork_catchpoint (pid);
}
/* See target.h. */
int
target_insert_exec_catchpoint (int pid)
{
- return current_top_target ()->insert_exec_catchpoint (pid);
+ return current_inferior ()->top_target ()->insert_exec_catchpoint (pid);
}
/* See target.h. */
int
target_remove_exec_catchpoint (int pid)
{
- return current_top_target ()->remove_exec_catchpoint (pid);
+ return current_inferior ()->top_target ()->remove_exec_catchpoint (pid);
}
/* See target.h. */
target_set_syscall_catchpoint (int pid, bool needed, int any_count,
gdb::array_view<const int> syscall_counts)
{
- return current_top_target ()->set_syscall_catchpoint (pid, needed, any_count,
- syscall_counts);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->set_syscall_catchpoint (pid, needed, any_count,
+ syscall_counts);
}
/* See target.h. */
void
target_rcmd (const char *command, struct ui_file *outbuf)
{
- return current_top_target ()->rcmd (command, outbuf);
+ return current_inferior ()->top_target ()->rcmd (command, outbuf);
}
/* See target.h. */
bool
target_can_lock_scheduler ()
{
- return (current_top_target ()->get_thread_control_capabilities ()
- & tc_schedlock) != 0;
+ target_ops *target = current_inferior ()->top_target ();
+
+ return (target->get_thread_control_capabilities ()& tc_schedlock) != 0;
}
/* See target.h. */
bool
target_can_async_p ()
{
- return current_top_target ()->can_async_p ();
+ return current_inferior ()->top_target ()->can_async_p ();
}
/* See target.h. */
bool
target_is_async_p ()
{
- return current_top_target ()->is_async_p ();
+ return current_inferior ()->top_target ()->is_async_p ();
}
exec_direction_kind
target_execution_direction ()
{
- return current_top_target ()->execution_direction ();
+ return current_inferior ()->top_target ()->execution_direction ();
}
/* See target.h. */
const char *
target_extra_thread_info (thread_info *tp)
{
- return current_top_target ()->extra_thread_info (tp);
+ return current_inferior ()->top_target ()->extra_thread_info (tp);
}
/* See target.h. */
char *
target_pid_to_exec_file (int pid)
{
- return current_top_target ()->pid_to_exec_file (pid);
+ return current_inferior ()->top_target ()->pid_to_exec_file (pid);
}
/* See target.h. */
gdbarch *
target_thread_architecture (ptid_t ptid)
{
- return current_top_target ()->thread_architecture (ptid);
+ return current_inferior ()->top_target ()->thread_architecture (ptid);
}
/* See target.h. */
int
target_find_memory_regions (find_memory_region_ftype func, void *data)
{
- return current_top_target ()->find_memory_regions (func, data);
+ return current_inferior ()->top_target ()->find_memory_regions (func, data);
}
/* See target.h. */
gdb::unique_xmalloc_ptr<char>
target_make_corefile_notes (bfd *bfd, int *size_p)
{
- return current_top_target ()->make_corefile_notes (bfd, size_p);
+ return current_inferior ()->top_target ()->make_corefile_notes (bfd, size_p);
}
gdb_byte *
target_get_bookmark (const char *args, int from_tty)
{
- return current_top_target ()->get_bookmark (args, from_tty);
+ return current_inferior ()->top_target ()->get_bookmark (args, from_tty);
}
void
target_goto_bookmark (const gdb_byte *arg, int from_tty)
{
- return current_top_target ()->goto_bookmark (arg, from_tty);
+ return current_inferior ()->top_target ()->goto_bookmark (arg, from_tty);
}
/* See target.h. */
bool
target_stopped_by_watchpoint ()
{
- return current_top_target ()->stopped_by_watchpoint ();
+ return current_inferior ()->top_target ()->stopped_by_watchpoint ();
}
/* See target.h. */
bool
target_stopped_by_sw_breakpoint ()
{
- return current_top_target ()->stopped_by_sw_breakpoint ();
+ return current_inferior ()->top_target ()->stopped_by_sw_breakpoint ();
}
bool
target_supports_stopped_by_sw_breakpoint ()
{
- return current_top_target ()->supports_stopped_by_sw_breakpoint ();
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->supports_stopped_by_sw_breakpoint ();
}
bool
target_stopped_by_hw_breakpoint ()
{
- return current_top_target ()->stopped_by_hw_breakpoint ();
+ return current_inferior ()->top_target ()->stopped_by_hw_breakpoint ();
}
bool
target_supports_stopped_by_hw_breakpoint ()
{
- return current_top_target ()->supports_stopped_by_hw_breakpoint ();
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->supports_stopped_by_hw_breakpoint ();
}
/* See target.h. */
bool
target_have_steppable_watchpoint ()
{
- return current_top_target ()->have_steppable_watchpoint ();
+ return current_inferior ()->top_target ()->have_steppable_watchpoint ();
}
/* See target.h. */
int
target_can_use_hardware_watchpoint (bptype type, int cnt, int othertype)
{
- return current_top_target ()->can_use_hw_breakpoint (type, cnt, othertype);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->can_use_hw_breakpoint (type, cnt, othertype);
}
/* See target.h. */
int
target_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
{
- return current_top_target ()->region_ok_for_hw_watchpoint (addr, len);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->region_ok_for_hw_watchpoint (addr, len);
}
int
target_can_do_single_step ()
{
- return current_top_target ()->can_do_single_step ();
+ return current_inferior ()->top_target ()->can_do_single_step ();
}
/* See target.h. */
target_insert_watchpoint (CORE_ADDR addr, int len, target_hw_bp_type type,
expression *cond)
{
- return current_top_target ()->insert_watchpoint (addr, len, type, cond);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->insert_watchpoint (addr, len, type, cond);
}
/* See target.h. */
target_remove_watchpoint (CORE_ADDR addr, int len, target_hw_bp_type type,
expression *cond)
{
- return current_top_target ()->remove_watchpoint (addr, len, type, cond);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->remove_watchpoint (addr, len, type, cond);
}
/* See target.h. */
int
target_insert_hw_breakpoint (gdbarch *gdbarch, bp_target_info *bp_tgt)
{
- return current_top_target ()->insert_hw_breakpoint (gdbarch, bp_tgt);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->insert_hw_breakpoint (gdbarch, bp_tgt);
}
/* See target.h. */
int
target_remove_hw_breakpoint (gdbarch *gdbarch, bp_target_info *bp_tgt)
{
- return current_top_target ()->remove_hw_breakpoint (gdbarch, bp_tgt);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->remove_hw_breakpoint (gdbarch, bp_tgt);
}
/* See target.h. */
target_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int type,
expression *cond)
{
- return current_top_target ()->can_accel_watchpoint_condition (addr, len, type, cond);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->can_accel_watchpoint_condition (addr, len, type, cond);
}
/* See target.h. */
bool
target_can_execute_reverse ()
{
- return current_top_target ()->can_execute_reverse ();
+ return current_inferior ()->top_target ()->can_execute_reverse ();
}
ptid_t
target_get_ada_task_ptid (long lwp, long tid)
{
- return current_top_target ()->get_ada_task_ptid (lwp, tid);
+ return current_inferior ()->top_target ()->get_ada_task_ptid (lwp, tid);
}
bool
target_filesystem_is_local ()
{
- return current_top_target ()->filesystem_is_local ();
+ return current_inferior ()->top_target ()->filesystem_is_local ();
}
void
target_trace_init ()
{
- return current_top_target ()->trace_init ();
+ return current_inferior ()->top_target ()->trace_init ();
}
void
target_download_tracepoint (bp_location *location)
{
- return current_top_target ()->download_tracepoint (location);
+ return current_inferior ()->top_target ()->download_tracepoint (location);
}
bool
target_can_download_tracepoint ()
{
- return current_top_target ()->can_download_tracepoint ();
+ return current_inferior ()->top_target ()->can_download_tracepoint ();
}
void
target_download_trace_state_variable (const trace_state_variable &tsv)
{
- return current_top_target ()->download_trace_state_variable (tsv);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->download_trace_state_variable (tsv);
}
void
target_enable_tracepoint (bp_location *loc)
{
- return current_top_target ()->enable_tracepoint (loc);
+ return current_inferior ()->top_target ()->enable_tracepoint (loc);
}
void
target_disable_tracepoint (bp_location *loc)
{
- return current_top_target ()->disable_tracepoint (loc);
+ return current_inferior ()->top_target ()->disable_tracepoint (loc);
}
void
target_trace_start ()
{
- return current_top_target ()->trace_start ();
+ return current_inferior ()->top_target ()->trace_start ();
}
void
target_trace_set_readonly_regions ()
{
- current_top_target ()->trace_set_readonly_regions ();
+ return current_inferior ()->top_target ()->trace_set_readonly_regions ();
}
int
target_get_trace_status (trace_status *ts)
{
- return current_top_target ()->get_trace_status (ts);
+ return current_inferior ()->top_target ()->get_trace_status (ts);
}
void
target_get_tracepoint_status (breakpoint *tp, uploaded_tp *utp)
{
- return current_top_target ()->get_tracepoint_status (tp, utp);
+ return current_inferior ()->top_target ()->get_tracepoint_status (tp, utp);
}
void
target_trace_stop ()
{
- return current_top_target ()->trace_stop ();
+ return current_inferior ()->top_target ()->trace_stop ();
}
int
target_trace_find (trace_find_type type, int num,
CORE_ADDR addr1, CORE_ADDR addr2, int *tpp)
{
- return current_top_target ()->trace_find (type, num, addr1, addr2, tpp);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->trace_find (type, num, addr1, addr2, tpp);
}
bool
target_get_trace_state_variable_value (int tsv, LONGEST *val)
{
- return current_top_target ()->get_trace_state_variable_value (tsv, val);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->get_trace_state_variable_value (tsv, val);
}
int
target_save_trace_data (const char *filename)
{
- return current_top_target ()->save_trace_data (filename);
+ return current_inferior ()->top_target ()->save_trace_data (filename);
}
int
target_upload_tracepoints (uploaded_tp **utpp)
{
- return current_top_target ()->upload_tracepoints (utpp);
+ return current_inferior ()->top_target ()->upload_tracepoints (utpp);
}
int
target_upload_trace_state_variables (uploaded_tsv **utsvp)
{
- return current_top_target ()->upload_trace_state_variables (utsvp);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->upload_trace_state_variables (utsvp);
}
LONGEST
target_get_raw_trace_data (gdb_byte *buf, ULONGEST offset, LONGEST len)
{
- return current_top_target ()->get_raw_trace_data (buf, offset, len);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->get_raw_trace_data (buf, offset, len);
}
int
target_get_min_fast_tracepoint_insn_len ()
{
- return current_top_target ()->get_min_fast_tracepoint_insn_len ();
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->get_min_fast_tracepoint_insn_len ();
}
void
target_set_disconnected_tracing (int val)
{
- return current_top_target ()->set_disconnected_tracing (val);
+ return current_inferior ()->top_target ()->set_disconnected_tracing (val);
}
void
target_set_circular_trace_buffer (int val)
{
- return current_top_target ()->set_circular_trace_buffer (val);
+ return current_inferior ()->top_target ()->set_circular_trace_buffer (val);
}
void
target_set_trace_buffer_size (LONGEST val)
{
- return current_top_target ()->set_trace_buffer_size (val);
+ return current_inferior ()->top_target ()->set_trace_buffer_size (val);
}
bool
target_set_trace_notes (const char *user, const char *notes,
const char *stopnotes)
{
- return current_top_target ()->set_trace_notes (user, notes, stopnotes);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->set_trace_notes (user, notes, stopnotes);
}
bool
target_get_tib_address (ptid_t ptid, CORE_ADDR *addr)
{
- return current_top_target ()->get_tib_address (ptid, addr);
+ return current_inferior ()->top_target ()->get_tib_address (ptid, addr);
}
void
target_set_permissions ()
{
- return current_top_target ()->set_permissions ();
+ return current_inferior ()->top_target ()->set_permissions ();
}
bool
target_static_tracepoint_marker_at (CORE_ADDR addr,
static_tracepoint_marker *marker)
{
- return current_top_target ()->static_tracepoint_marker_at (addr, marker);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->static_tracepoint_marker_at (addr, marker);
}
std::vector<static_tracepoint_marker>
target_static_tracepoint_markers_by_strid (const char *marker_id)
{
- return current_top_target ()->static_tracepoint_markers_by_strid (marker_id);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->static_tracepoint_markers_by_strid (marker_id);
}
traceframe_info_up
target_traceframe_info ()
{
- return current_top_target ()->traceframe_info ();
+ return current_inferior ()->top_target ()->traceframe_info ();
}
bool
target_use_agent (bool use)
{
- return current_top_target ()->use_agent (use);
+ return current_inferior ()->top_target ()->use_agent (use);
}
bool
target_can_use_agent ()
{
- return current_top_target ()->can_use_agent ();
+ return current_inferior ()->top_target ()->can_use_agent ();
}
bool
target_augmented_libraries_svr4_read ()
{
- return current_top_target ()->augmented_libraries_svr4_read ();
+ return current_inferior ()->top_target ()->augmented_libraries_svr4_read ();
}
bool
target_supports_memory_tagging ()
{
- return current_top_target ()->supports_memory_tagging ();
+ return current_inferior ()->top_target ()->supports_memory_tagging ();
}
bool
target_fetch_memtags (CORE_ADDR address, size_t len, gdb::byte_vector &tags,
int type)
{
- return current_top_target ()->fetch_memtags (address, len, tags, type);
+ return current_inferior ()->top_target ()->fetch_memtags (address, len, tags, type);
}
bool
target_store_memtags (CORE_ADDR address, size_t len,
const gdb::byte_vector &tags, int type)
{
- return current_top_target ()->store_memtags (address, len, tags, type);
+ return current_inferior ()->top_target ()->store_memtags (address, len, tags, type);
}
void
target_log_command (const char *p)
{
- return current_top_target ()->log_command (p);
+ return current_inferior ()->top_target ()->log_command (p);
}
/* This is used to implement the various target commands. */
void
target_kill (void)
{
- current_top_target ()->kill ();
+ current_inferior ()->top_target ()->kill ();
}
void
target_load (const char *arg, int from_tty)
{
target_dcache_invalidate ();
- current_top_target ()->load (arg, from_tty);
+ current_inferior ()->top_target ()->load (arg, from_tty);
}
/* Define it. */
void
target_terminal::init (void)
{
- current_top_target ()->terminal_init ();
+ current_inferior ()->top_target ()->terminal_init ();
m_terminal_state = target_terminal_state::is_ours;
}
if (inf->terminal_state != target_terminal_state::is_inferior)
{
- current_top_target ()->terminal_inferior ();
+ current_inferior ()->top_target ()->terminal_inferior ();
inf->terminal_state = target_terminal_state::is_inferior;
}
if (inf->terminal_state == target_terminal_state::is_ours_for_output)
{
set_current_inferior (inf);
- current_top_target ()->terminal_inferior ();
+ current_inferior ()->top_target ()->terminal_inferior ();
inf->terminal_state = target_terminal_state::is_inferior;
}
}
if (inf->terminal_state == target_terminal_state::is_inferior)
{
set_current_inferior (inf);
- current_top_target ()->terminal_save_inferior ();
+ current_inferior ()->top_target ()->terminal_save_inferior ();
}
}
{
set_current_inferior (inf);
if (desired_state == target_terminal_state::is_ours)
- current_top_target ()->terminal_ours ();
+ current_inferior ()->top_target ()->terminal_ours ();
else if (desired_state == target_terminal_state::is_ours_for_output)
- current_top_target ()->terminal_ours_for_output ();
+ current_inferior ()->top_target ()->terminal_ours_for_output ();
else
gdb_assert_not_reached ("unhandled desired state");
inf->terminal_state = desired_state;
void
target_terminal::info (const char *arg, int from_tty)
{
- current_top_target ()->terminal_info (arg, from_tty);
+ current_inferior ()->top_target ()->terminal_info (arg, from_tty);
}
/* See target.h. */
tcomplain (void)
{
error (_("You can't do that when your target is `%s'"),
- current_top_target ()->shortname ());
+ current_inferior ()->top_target ()->shortname ());
}
void
void
pop_all_targets_above (enum strata above_stratum)
{
- while ((int) (current_top_target ()->stratum ()) > (int) above_stratum)
- unpush_target_and_assert (current_top_target ());
+ while ((int) (current_inferior ()->top_target ()->stratum ())
+ > (int) above_stratum)
+ unpush_target_and_assert (current_inferior ()->top_target ());
}
/* See target.h. */
void
pop_all_targets_at_and_above (enum strata stratum)
{
- while ((int) (current_top_target ()->stratum ()) >= (int) stratum)
- unpush_target_and_assert (current_top_target ());
+ while ((int) (current_inferior ()->top_target ()->stratum ())
+ >= (int) stratum)
+ unpush_target_and_assert (current_inferior ()->top_target ());
}
void
target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
{
volatile CORE_ADDR addr = 0;
- struct target_ops *target = current_top_target ();
+ struct target_ops *target = current_inferior ()->top_target ();
struct gdbarch *gdbarch = target_gdbarch ();
if (gdbarch_fetch_tls_load_module_address_p (gdbarch))
int
target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
{
- if (target_read (current_top_target (), TARGET_OBJECT_MEMORY, NULL,
+ if (target_read (current_inferior ()->top_target (),
+ TARGET_OBJECT_MEMORY, NULL,
myaddr, memaddr, len) == len)
return 0;
else
int
target_read_raw_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
{
- if (target_read (current_top_target (), TARGET_OBJECT_RAW_MEMORY, NULL,
+ if (target_read (current_inferior ()->top_target (),
+ TARGET_OBJECT_RAW_MEMORY, NULL,
myaddr, memaddr, len) == len)
return 0;
else
int
target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
{
- if (target_read (current_top_target (), TARGET_OBJECT_STACK_MEMORY, NULL,
+ if (target_read (current_inferior ()->top_target (),
+ TARGET_OBJECT_STACK_MEMORY, NULL,
myaddr, memaddr, len) == len)
return 0;
else
int
target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
{
- if (target_read (current_top_target (), TARGET_OBJECT_CODE_MEMORY, NULL,
+ if (target_read (current_inferior ()->top_target (),
+ TARGET_OBJECT_CODE_MEMORY, NULL,
myaddr, memaddr, len) == len)
return 0;
else
int
target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
{
- if (target_write (current_top_target (), TARGET_OBJECT_MEMORY, NULL,
+ if (target_write (current_inferior ()->top_target (),
+ TARGET_OBJECT_MEMORY, NULL,
myaddr, memaddr, len) == len)
return 0;
else
int
target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
{
- if (target_write (current_top_target (), TARGET_OBJECT_RAW_MEMORY, NULL,
+ if (target_write (current_inferior ()->top_target (),
+ TARGET_OBJECT_RAW_MEMORY, NULL,
myaddr, memaddr, len) == len)
return 0;
else
std::vector<mem_region>
target_memory_map (void)
{
- std::vector<mem_region> result = current_top_target ()->memory_map ();
+ target_ops *target = current_inferior ()->top_target ();
+ std::vector<mem_region> result = target->memory_map ();
if (result.empty ())
return result;
void
target_flash_erase (ULONGEST address, LONGEST length)
{
- current_top_target ()->flash_erase (address, length);
+ current_inferior ()->top_target ()->flash_erase (address, length);
}
void
target_flash_done (void)
{
- current_top_target ()->flash_done ();
+ current_inferior ()->top_target ()->flash_done ();
}
static void
return 1;
}
- return current_top_target ()->insert_breakpoint (gdbarch, bp_tgt);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->insert_breakpoint (gdbarch, bp_tgt);
}
/* See target.h. */
return 1;
}
- return current_top_target ()->remove_breakpoint (gdbarch, bp_tgt, reason);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->remove_breakpoint (gdbarch, bp_tgt, reason);
}
static void
objfile_name (objf));
}
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
{
if (!t->has_memory ())
continue;
target. */
auto proc_target_ref = target_ops_ref::new_reference (inf->process_target ());
- current_top_target ()->detach (inf, from_tty);
+ current_inferior ()->top_target ()->detach (inf, from_tty);
process_stratum_target *proc_target
= as_process_stratum_target (proc_target_ref.get ());
disconnecting. */
remove_breakpoints ();
- current_top_target ()->disconnect (args, from_tty);
+ current_inferior ()->top_target ()->disconnect (args, from_tty);
}
/* See target/target.h. */
target_wait (ptid_t ptid, struct target_waitstatus *status,
target_wait_flags options)
{
- target_ops *target = current_top_target ();
+ target_ops *target = current_inferior ()->top_target ();
if (!target->can_async_p ())
gdb_assert ((options & TARGET_WNOHANG) == 0);
std::string
target_pid_to_str (ptid_t ptid)
{
- return current_top_target ()->pid_to_str (ptid);
+ return current_inferior ()->top_target ()->pid_to_str (ptid);
}
const char *
{
gdb_assert (info->inf == current_inferior ());
- return current_top_target ()->thread_name (info);
+ return current_inferior ()->top_target ()->thread_name (info);
}
struct thread_info *
int handle_len,
struct inferior *inf)
{
- return current_top_target ()->thread_handle_to_thread_info (thread_handle,
- handle_len, inf);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->thread_handle_to_thread_info (thread_handle, handle_len, inf);
}
/* See target.h. */
gdb::byte_vector
target_thread_info_to_thread_handle (struct thread_info *tip)
{
- return current_top_target ()->thread_info_to_thread_handle (tip);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->thread_info_to_thread_handle (tip);
}
void
target_dcache_invalidate ();
- current_top_target ()->resume (ptid, step, signal);
+ current_inferior ()->top_target ()->resume (ptid, step, signal);
registers_changed_ptid (curr_target, ptid);
/* We only set the internal executing state here. The user/frontend
if (defer_target_commit_resume)
return;
- current_top_target ()->commit_resume ();
+ current_inferior ()->top_target ()->commit_resume ();
}
/* See target.h. */
void
target_pass_signals (gdb::array_view<const unsigned char> pass_signals)
{
- current_top_target ()->pass_signals (pass_signals);
+ current_inferior ()->top_target ()->pass_signals (pass_signals);
}
void
target_program_signals (gdb::array_view<const unsigned char> program_signals)
{
- current_top_target ()->program_signals (program_signals);
+ current_inferior ()->top_target ()->program_signals (program_signals);
}
static bool
bool
target_follow_fork (bool follow_child, bool detach_fork)
{
- return current_top_target ()->follow_fork (follow_child, detach_fork);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->follow_fork (follow_child, detach_fork);
}
/* Target wrapper for follow exec hook. */
void
target_follow_exec (struct inferior *inf, const char *execd_pathname)
{
- current_top_target ()->follow_exec (inf, execd_pathname);
+ current_inferior ()->top_target ()->follow_exec (inf, execd_pathname);
}
static void
target_mourn_inferior (ptid_t ptid)
{
gdb_assert (ptid.pid () == inferior_ptid.pid ());
- current_top_target ()->mourn_inferior ();
+ current_inferior ()->top_target ()->mourn_inferior ();
/* We no longer need to keep handles on any of the object files.
Make sure to release them to avoid unnecessarily locking any
{
auto read_memory = [=] (CORE_ADDR addr, gdb_byte *result, size_t len)
{
- return target_read (current_top_target (), TARGET_OBJECT_MEMORY, NULL,
+ return target_read (current_inferior ()->top_target (),
+ TARGET_OBJECT_MEMORY, NULL,
result, addr, len) == len;
};
const gdb_byte *pattern, ULONGEST pattern_len,
CORE_ADDR *found_addrp)
{
- return current_top_target ()->search_memory (start_addr, search_space_len,
- pattern, pattern_len, found_addrp);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->search_memory (start_addr, search_space_len, pattern,
+ pattern_len, found_addrp);
}
/* Look through the currently pushed targets. If none of them will
void
target_require_runnable (void)
{
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
{
/* If this target knows how to create a new program, then
assume we will still be able to after killing the current
find_attach_target (void)
{
/* If a target on the current stack can attach, use it. */
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
{
if (t->can_attach ())
return t;
find_run_target (void)
{
/* If a target on the current stack can run, use it. */
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
{
if (t->can_create_inferior ())
return t;
int
target_supports_disable_randomization (void)
{
- return current_top_target ()->supports_disable_randomization ();
+ return current_inferior ()->top_target ()->supports_disable_randomization ();
}
/* See target/target.h. */
int
target_supports_multi_process (void)
{
- return current_top_target ()->supports_multi_process ();
+ return current_inferior ()->top_target ()->supports_multi_process ();
}
/* See target.h. */
{
struct address_space *aspace;
- aspace = current_top_target ()->thread_address_space (ptid);
+ aspace = current_inferior ()->top_target ()->thread_address_space (ptid);
gdb_assert (aspace != NULL);
return aspace;
int
target_can_run ()
{
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
{
if (t->can_run ())
return 1;
int
target_thread_alive (ptid_t ptid)
{
- return current_top_target ()->thread_alive (ptid);
+ return current_inferior ()->top_target ()->thread_alive (ptid);
}
void
target_update_thread_list (void)
{
- current_top_target ()->update_thread_list ();
+ current_inferior ()->top_target ()->update_thread_list ();
}
void
return;
}
- current_top_target ()->stop (ptid);
+ current_inferior ()->top_target ()->stop (ptid);
}
void
return;
}
- current_top_target ()->interrupt ();
+ current_inferior ()->top_target ()->interrupt ();
}
/* See target.h. */
through the target_stack. */
scoped_restore_current_inferior restore_inferior;
set_current_inferior (inf);
- current_top_target ()->pass_ctrlc ();
+ current_inferior ()->top_target ()->pass_ctrlc ();
return;
}
}
void
target_fetch_registers (struct regcache *regcache, int regno)
{
- current_top_target ()->fetch_registers (regcache, regno);
+ current_inferior ()->top_target ()->fetch_registers (regcache, regno);
if (targetdebug)
regcache->debug_print_register ("target_fetch_registers", regno);
}
if (!may_write_registers)
error (_("Writing to registers is not allowed (regno %d)"), regno);
- current_top_target ()->store_registers (regcache, regno);
+ current_inferior ()->top_target ()->store_registers (regcache, regno);
if (targetdebug)
{
regcache->debug_print_register ("target_store_registers", regno);
int
target_core_of_thread (ptid_t ptid)
{
- return current_top_target ()->core_of_thread (ptid);
+ return current_inferior ()->top_target ()->core_of_thread (ptid);
}
int
const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
{
/* Start over from the top of the target stack. */
- return simple_verify_memory (current_top_target (),
+ return simple_verify_memory (current_inferior ()->top_target (),
data, memaddr, size);
}
int
target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
{
- return current_top_target ()->verify_memory (data, memaddr, size);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->verify_memory (data, memaddr, size);
}
/* The documentation for this function is in its prototype declaration in
target_insert_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask,
enum target_hw_bp_type rw)
{
- return current_top_target ()->insert_mask_watchpoint (addr, mask, rw);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->insert_mask_watchpoint (addr, mask, rw);
}
/* The documentation for this function is in its prototype declaration in
target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask,
enum target_hw_bp_type rw)
{
- return current_top_target ()->remove_mask_watchpoint (addr, mask, rw);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->remove_mask_watchpoint (addr, mask, rw);
}
/* The documentation for this function is in its prototype declaration
int
target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask)
{
- return current_top_target ()->masked_watch_num_registers (addr, mask);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->masked_watch_num_registers (addr, mask);
}
/* The documentation for this function is in its prototype declaration
int
target_ranged_break_num_registers (void)
{
- return current_top_target ()->ranged_break_num_registers ();
+ return current_inferior ()->top_target ()->ranged_break_num_registers ();
}
/* See target.h. */
struct btrace_target_info *
target_enable_btrace (ptid_t ptid, const struct btrace_config *conf)
{
- return current_top_target ()->enable_btrace (ptid, conf);
+ return current_inferior ()->top_target ()->enable_btrace (ptid, conf);
}
/* See target.h. */
void
target_disable_btrace (struct btrace_target_info *btinfo)
{
- current_top_target ()->disable_btrace (btinfo);
+ current_inferior ()->top_target ()->disable_btrace (btinfo);
}
/* See target.h. */
void
target_teardown_btrace (struct btrace_target_info *btinfo)
{
- current_top_target ()->teardown_btrace (btinfo);
+ current_inferior ()->top_target ()->teardown_btrace (btinfo);
}
/* See target.h. */
struct btrace_target_info *btinfo,
enum btrace_read_type type)
{
- return current_top_target ()->read_btrace (btrace, btinfo, type);
+ target_ops *target = current_inferior ()->top_target ();
+
+ return target->read_btrace (btrace, btinfo, type);
}
/* See target.h. */
const struct btrace_config *
target_btrace_conf (const struct btrace_target_info *btinfo)
{
- return current_top_target ()->btrace_conf (btinfo);
+ return current_inferior ()->top_target ()->btrace_conf (btinfo);
}
/* See target.h. */
void
target_stop_recording (void)
{
- current_top_target ()->stop_recording ();
+ current_inferior ()->top_target ()->stop_recording ();
}
/* See target.h. */
void
target_save_record (const char *filename)
{
- current_top_target ()->save_record (filename);
+ current_inferior ()->top_target ()->save_record (filename);
}
/* See target.h. */
int
target_supports_delete_record ()
{
- return current_top_target ()->supports_delete_record ();
+ return current_inferior ()->top_target ()->supports_delete_record ();
}
/* See target.h. */
void
target_delete_record (void)
{
- current_top_target ()->delete_record ();
+ current_inferior ()->top_target ()->delete_record ();
}
/* See target.h. */
enum record_method
target_record_method (ptid_t ptid)
{
- return current_top_target ()->record_method (ptid);
+ return current_inferior ()->top_target ()->record_method (ptid);
}
/* See target.h. */
int
target_record_is_replaying (ptid_t ptid)
{
- return current_top_target ()->record_is_replaying (ptid);
+ return current_inferior ()->top_target ()->record_is_replaying (ptid);
}
/* See target.h. */
int
target_record_will_replay (ptid_t ptid, int dir)
{
- return current_top_target ()->record_will_replay (ptid, dir);
+ return current_inferior ()->top_target ()->record_will_replay (ptid, dir);
}
/* See target.h. */
void
target_record_stop_replaying (void)
{
- current_top_target ()->record_stop_replaying ();
+ current_inferior ()->top_target ()->record_stop_replaying ();
}
/* See target.h. */
void
target_goto_record_begin (void)
{
- current_top_target ()->goto_record_begin ();
+ current_inferior ()->top_target ()->goto_record_begin ();
}
/* See target.h. */
void
target_goto_record_end (void)
{
- current_top_target ()->goto_record_end ();
+ current_inferior ()->top_target ()->goto_record_end ();
}
/* See target.h. */
void
target_goto_record (ULONGEST insn)
{
- current_top_target ()->goto_record (insn);
+ current_inferior ()->top_target ()->goto_record (insn);
}
/* See target.h. */
void
target_insn_history (int size, gdb_disassembly_flags flags)
{
- current_top_target ()->insn_history (size, flags);
+ current_inferior ()->top_target ()->insn_history (size, flags);
}
/* See target.h. */
target_insn_history_from (ULONGEST from, int size,
gdb_disassembly_flags flags)
{
- current_top_target ()->insn_history_from (from, size, flags);
+ current_inferior ()->top_target ()->insn_history_from (from, size, flags);
}
/* See target.h. */
target_insn_history_range (ULONGEST begin, ULONGEST end,
gdb_disassembly_flags flags)
{
- current_top_target ()->insn_history_range (begin, end, flags);
+ current_inferior ()->top_target ()->insn_history_range (begin, end, flags);
}
/* See target.h. */
void
target_call_history (int size, record_print_flags flags)
{
- current_top_target ()->call_history (size, flags);
+ current_inferior ()->top_target ()->call_history (size, flags);
}
/* See target.h. */
void
target_call_history_from (ULONGEST begin, int size, record_print_flags flags)
{
- current_top_target ()->call_history_from (begin, size, flags);
+ current_inferior ()->top_target ()->call_history_from (begin, size, flags);
}
/* See target.h. */
void
target_call_history_range (ULONGEST begin, ULONGEST end, record_print_flags flags)
{
- current_top_target ()->call_history_range (begin, end, flags);
+ current_inferior ()->top_target ()->call_history_range (begin, end, flags);
}
/* See target.h. */
const struct frame_unwind *
target_get_unwinder (void)
{
- return current_top_target ()->get_unwinder ();
+ return current_inferior ()->top_target ()->get_unwinder ();
}
/* See target.h. */
const struct frame_unwind *
target_get_tailcall_unwinder (void)
{
- return current_top_target ()->get_tailcall_unwinder ();
+ return current_inferior ()->top_target ()->get_tailcall_unwinder ();
}
/* See target.h. */
void
target_prepare_to_generate_core (void)
{
- current_top_target ()->prepare_to_generate_core ();
+ current_inferior ()->top_target ()->prepare_to_generate_core ();
}
/* See target.h. */
void
target_done_generating_core (void)
{
- current_top_target ()->done_generating_core ();
+ current_inferior ()->top_target ()->done_generating_core ();
}
\f
{
printf_filtered (_("The current target stack is:\n"));
- for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
+ for (target_ops *t = current_inferior ()->top_target ();
+ t != NULL;
+ t = t->beneath ())
{
if (t->stratum () == debug_stratum)
continue;
target_async (int enable)
{
infrun_async (enable);
- current_top_target ()->async (enable);
+ current_inferior ()->top_target ()->async (enable);
}
/* See target.h. */
void
target_thread_events (int enable)
{
- current_top_target ()->thread_events (enable);
+ current_inferior ()->top_target ()->thread_events (enable);
}
/* Controls if targets can report that they can/are async. This is
static int
target_always_non_stop_p (void)
{
- return current_top_target ()->always_non_stop_p ();
+ return current_inferior ()->top_target ()->always_non_stop_p ();
}
/* See target.h. */