diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2021-03-24 18:08:12 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2021-03-24 18:08:24 -0400 |
commit | 328d42d87e97c75d6e52800bfd4bc1bfdfb745d2 (patch) | |
tree | 4dee500fe0bf6acd7dcb8153aabebaa27936c564 /gdb | |
parent | d777bf0df22f1048fd24999ae563e30abcbcfbe7 (diff) | |
download | gdb-328d42d87e97c75d6e52800bfd4bc1bfdfb745d2.zip gdb-328d42d87e97c75d6e52800bfd4bc1bfdfb745d2.tar.gz gdb-328d42d87e97c75d6e52800bfd4bc1bfdfb745d2.tar.bz2 |
gdb: remove current_top_target function
The current_top_target function is a hidden dependency on the current
inferior. Since I'd like to slowly move towards reducing our dependency
on the global current state, remove this function and make callers use
current_inferior ()->top_target ()
There is no expected change in behavior, but this one step towards
making those callers use the inferior from their context, rather than
refer to the global current inferior.
gdb/ChangeLog:
* target.h (current_top_target): Remove, make callers use the
current inferior instead.
* target.c (current_top_target): Remove.
Change-Id: Iccd457036f84466cdaa3865aa3f9339a24ea001d
Diffstat (limited to 'gdb')
48 files changed, 454 insertions, 329 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a145925..a548c58 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2021-03-24 Simon Marchi <simon.marchi@polymtl.ca> + * target.h (current_top_target): Remove, make callers use the + current inferior instead. + * target.c (current_top_target): Remove. + +2021-03-24 Simon Marchi <simon.marchi@polymtl.ca> + * target.h (target_shortname): Change to function declaration. (target_longname): Likewise. (target_attach_no_wait): Likewise. @@ -320,7 +320,8 @@ target_auxv_parse (gdb_byte **readptr, if (gdbarch_auxv_parse_p (gdbarch)) return gdbarch_auxv_parse (gdbarch, readptr, endptr, typep, valp); - return current_top_target ()->auxv_parse (readptr, endptr, typep, valp); + return current_inferior ()->top_target ()->auxv_parse (readptr, endptr, + typep, valp); } @@ -580,7 +581,8 @@ info_auxv_command (const char *cmd, int from_tty) error (_("The program has no auxiliary information now.")); else { - int ents = fprint_target_auxv (gdb_stdout, current_top_target ()); + int ents = fprint_target_auxv (gdb_stdout, + current_inferior ()->top_target ()); if (ents < 0) error (_("No auxiliary vector found, or failed reading it.")); diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c index 815c6d4..018b18f 100644 --- a/gdb/avr-tdep.c +++ b/gdb/avr-tdep.c @@ -1561,7 +1561,8 @@ avr_io_reg_read_command (const char *args, int from_tty) /* Find out how many io registers the target has. */ gdb::optional<gdb::byte_vector> buf - = target_read_alloc (current_top_target (), TARGET_OBJECT_AVR, "avr.io_reg"); + = target_read_alloc (current_inferior ()->top_target (), + TARGET_OBJECT_AVR, "avr.io_reg"); if (!buf) { @@ -1595,7 +1596,8 @@ avr_io_reg_read_command (const char *args, int from_tty) j = nreg - i; /* last block is less than 8 registers */ snprintf (query, sizeof (query) - 1, "avr.io_reg:%x,%x", i, j); - buf = target_read_alloc (current_top_target (), TARGET_OBJECT_AVR, query); + buf = target_read_alloc (current_inferior ()->top_target (), + TARGET_OBJECT_AVR, query); if (!buf) { diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index de1e79b..16cf797 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -3598,8 +3598,8 @@ create_exception_master_breakpoint_hook (objfile *objfile) } addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym); - addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, - current_top_target ()); + addr = gdbarch_convert_from_func_ptr_addr + (gdbarch, addr, current_inferior ()->top_target ()); b = create_internal_breakpoint (gdbarch, addr, bp_exception_master, &internal_breakpoint_ops); initialize_explicit_location (&explicit_loc); @@ -4869,7 +4869,7 @@ watchpoints_triggered (struct target_waitstatus *ws) return 0; } - if (!target_stopped_data_address (current_top_target (), &addr)) + if (!target_stopped_data_address (current_inferior ()->top_target (), &addr)) { /* We were stopped by a watchpoint, but we don't know where. Mark all watchpoints as unknown. */ @@ -4909,9 +4909,9 @@ watchpoints_triggered (struct target_waitstatus *ws) } } /* Exact match not required. Within range is sufficient. */ - else if (target_watchpoint_addr_within_range (current_top_target (), - addr, loc->address, - loc->length)) + else if (target_watchpoint_addr_within_range + (current_inferior ()->top_target (), addr, loc->address, + loc->length)) { w->watchpoint_triggered = watch_triggered_yes; break; diff --git a/gdb/corefile.c b/gdb/corefile.c index 4ddcc06..30960c1 100644 --- a/gdb/corefile.c +++ b/gdb/corefile.c @@ -218,8 +218,8 @@ read_memory_object (enum target_object object, CORE_ADDR memaddr, enum target_xfer_status status; ULONGEST xfered_len; - status = target_xfer_partial (current_top_target (), object, NULL, - myaddr + xfered, NULL, + status = target_xfer_partial (current_inferior ()->top_target (), object, + NULL, myaddr + xfered, NULL, memaddr + xfered, len - xfered, &xfered_len); diff --git a/gdb/elfread.c b/gdb/elfread.c index 8510087..49bbbec 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -863,8 +863,8 @@ elf_gnu_ifunc_resolve_by_got (const char *name, CORE_ADDR *addr_p) if (target_read_memory (pointer_address, buf, ptr_size) != 0) continue; addr = extract_typed_address (buf, ptr_type); - addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, - current_top_target ()); + addr = gdbarch_convert_from_func_ptr_addr + (gdbarch, addr, current_inferior ()->top_target ()); addr = gdbarch_addr_bits_remove (gdbarch, addr); if (elf_gnu_ifunc_record_cache (name, addr)) @@ -931,12 +931,13 @@ elf_gnu_ifunc_resolve_addr (struct gdbarch *gdbarch, CORE_ADDR pc) parameter. FUNCTION is the function entry address. ADDRESS may be a function descriptor. */ - target_auxv_search (current_top_target (), AT_HWCAP, &hwcap); + target_auxv_search (current_inferior ()->top_target (), AT_HWCAP, &hwcap); hwcap_val = value_from_longest (builtin_type (gdbarch) ->builtin_unsigned_long, hwcap); address_val = call_function_by_hand (function, NULL, hwcap_val); address = value_as_address (address_val); - address = gdbarch_convert_from_func_ptr_addr (gdbarch, address, current_top_target ()); + address = gdbarch_convert_from_func_ptr_addr + (gdbarch, address, current_inferior ()->top_target ()); address = gdbarch_addr_bits_remove (gdbarch, address); if (name_at_pc) @@ -1042,9 +1043,8 @@ elf_gnu_ifunc_resolver_return_stop (struct breakpoint *b) gdbarch_return_value (gdbarch, func_func, value_type, regcache, value_contents_raw (value), NULL); resolved_address = value_as_address (value); - resolved_pc = gdbarch_convert_from_func_ptr_addr (gdbarch, - resolved_address, - current_top_target ()); + resolved_pc = gdbarch_convert_from_func_ptr_addr + (gdbarch, resolved_address, current_inferior ()->top_target ()); resolved_pc = gdbarch_addr_bits_remove (gdbarch, resolved_pc); gdb_assert (current_program_space == b->pspace || b->pspace == NULL); @@ -42,6 +42,7 @@ #include <ctype.h> #include "expop.h" #include "c-exp.h" +#include "inferior.h" /* Parse the string EXP as a C expression, evaluate it, @@ -1964,8 +1965,8 @@ eval_op_objc_msgcall (struct type *expect_type, struct expression *exp, /* The address might point to a function descriptor; resolve it to the actual code address instead. */ - addr = gdbarch_convert_from_func_ptr_addr (exp->gdbarch, addr, - current_top_target ()); + addr = gdbarch_convert_from_func_ptr_addr + (exp->gdbarch, addr, current_inferior ()->top_target ()); /* Is it a high_level symbol? */ sym = find_pc_function (addr); @@ -775,7 +775,7 @@ section_table_read_available_memory (gdb_byte *readbuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len) { const target_section_table *table - = target_get_section_table (current_top_target ()); + = target_get_section_table (current_inferior ()->top_target ()); std::vector<mem_range> available_memory = section_table_available_memory (offset, len, *table); diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c index 170e8f5..6cab31d 100644 --- a/gdb/fbsd-tdep.c +++ b/gdb/fbsd-tdep.c @@ -593,7 +593,7 @@ static gdb::optional<gdb::byte_vector> fbsd_make_note_desc (enum target_object object, uint32_t structsize) { gdb::optional<gdb::byte_vector> buf = - target_read_alloc (current_top_target (), object, NULL); + target_read_alloc (current_inferior ()->top_target (), object, NULL); if (!buf || buf->empty ()) return {}; diff --git a/gdb/frame.c b/gdb/frame.c index 4578b1a..dc9fdd4 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -2478,9 +2478,8 @@ inside_main_func (frame_info *this_frame) /* Convert any function descriptor addresses into the actual function code address. */ - sym_addr - = gdbarch_convert_from_func_ptr_addr (get_frame_arch (this_frame), - sym_addr, current_top_target ()); + sym_addr = gdbarch_convert_from_func_ptr_addr + (get_frame_arch (this_frame), sym_addr, current_inferior ()->top_target ()); return sym_addr == get_frame_func (this_frame); } diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 8461535..45e57c2 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -31,6 +31,7 @@ #include <algorithm> #include "cli/cli-style.h" #include "dwarf2/loc.h" +#include "inferior.h" static struct cp_abi_ops gnu_v3_abi_ops; @@ -1243,8 +1244,8 @@ gnuv3_skip_trampoline (struct frame_info *frame, CORE_ADDR stop_pc) (powerpc 64 for example). Make sure to retrieve the address of the real function from the function descriptor before passing on the address to other layers of GDB. */ - func_addr = gdbarch_convert_from_func_ptr_addr (gdbarch, method_stop_pc, - current_top_target ()); + func_addr = gdbarch_convert_from_func_ptr_addr + (gdbarch, method_stop_pc, current_inferior ()->top_target ()); if (func_addr != 0) method_stop_pc = func_addr; diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 35eeffe..1c4fc4c 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -2653,8 +2653,8 @@ getunwind_table () we should find a way to override the corefile layer's xfer_partial method. */ - return target_read_alloc (current_top_target (), TARGET_OBJECT_UNWIND_TABLE, - NULL); + return target_read_alloc (current_inferior ()->top_target (), + TARGET_OBJECT_UNWIND_TABLE, NULL); } /* Get the kernel unwind table. */ diff --git a/gdb/ia64-vms-tdep.c b/gdb/ia64-vms-tdep.c index 0481f00..cc8e191 100644 --- a/gdb/ia64-vms-tdep.c +++ b/gdb/ia64-vms-tdep.c @@ -41,7 +41,8 @@ ia64_vms_find_proc_info_x (unw_addr_space_t as, unw_word_t ip, CORE_ADDR table_addr; unsigned int info_len; - res = target_read (current_top_target (), TARGET_OBJECT_OPENVMS_UIB, + res = target_read (current_inferior ()->top_target (), + TARGET_OBJECT_OPENVMS_UIB, annex + 2, buf, 0, sizeof (buf)); if (res != sizeof (buf)) diff --git a/gdb/infcall.c b/gdb/infcall.c index 2332f29..ca3347f 100644 --- a/gdb/infcall.c +++ b/gdb/infcall.c @@ -269,8 +269,8 @@ find_function_addr (struct value *function, ftype = check_typedef (TYPE_TARGET_TYPE (ftype)); if (ftype->code () == TYPE_CODE_FUNC || ftype->code () == TYPE_CODE_METHOD) - funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr, - current_top_target ()); + funaddr = gdbarch_convert_from_func_ptr_addr + (gdbarch, funaddr, current_inferior ()->top_target()); } if (ftype->code () == TYPE_CODE_FUNC || ftype->code () == TYPE_CODE_METHOD) @@ -321,9 +321,8 @@ find_function_addr (struct value *function, funaddr = value_as_address (value_addr (function)); nfunaddr = funaddr; - funaddr - = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr, - current_top_target ()); + funaddr = gdbarch_convert_from_func_ptr_addr + (gdbarch, funaddr, current_inferior ()->top_target ()); if (funaddr != nfunaddr) found_descriptor = 1; } diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 80e6ad3..a6e9572 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -759,7 +759,7 @@ continue_command (const char *args, int from_tty) ensure_not_running (); } - prepare_execution_command (current_top_target (), async_exec); + prepare_execution_command (current_inferior ()->top_target (), async_exec); if (from_tty) printf_filtered (_("Continuing.\n")); @@ -877,7 +877,7 @@ step_1 (int skip_subroutines, int single_inst, const char *count_string) = strip_bg_char (count_string, &async_exec); count_string = stripped.get (); - prepare_execution_command (current_top_target (), async_exec); + prepare_execution_command (current_inferior ()->top_target (), async_exec); count = count_string ? parse_and_eval_long (count_string) : 1; @@ -1075,7 +1075,7 @@ jump_command (const char *arg, int from_tty) gdb::unique_xmalloc_ptr<char> stripped = strip_bg_char (arg, &async_exec); arg = stripped.get (); - prepare_execution_command (current_top_target (), async_exec); + prepare_execution_command (current_inferior ()->top_target (), async_exec); if (!arg) error_no_arg (_("starting address")); @@ -1155,7 +1155,7 @@ signal_command (const char *signum_exp, int from_tty) = strip_bg_char (signum_exp, &async_exec); signum_exp = stripped.get (); - prepare_execution_command (current_top_target (), async_exec); + prepare_execution_command (current_inferior ()->top_target (), async_exec); if (!signum_exp) error_no_arg (_("signal number")); @@ -1400,7 +1400,7 @@ until_command (const char *arg, int from_tty) gdb::unique_xmalloc_ptr<char> stripped = strip_bg_char (arg, &async_exec); arg = stripped.get (); - prepare_execution_command (current_top_target (), async_exec); + prepare_execution_command (current_inferior ()->top_target (), async_exec); if (arg) until_break_command (arg, from_tty, 0); @@ -1425,7 +1425,7 @@ advance_command (const char *arg, int from_tty) gdb::unique_xmalloc_ptr<char> stripped = strip_bg_char (arg, &async_exec); arg = stripped.get (); - prepare_execution_command (current_top_target (), async_exec); + prepare_execution_command (current_inferior ()->top_target (), async_exec); until_break_command (arg, from_tty, 1); } @@ -1772,7 +1772,7 @@ finish_command (const char *arg, int from_tty) gdb::unique_xmalloc_ptr<char> stripped = strip_bg_char (arg, &async_exec); arg = stripped.get (); - prepare_execution_command (current_top_target (), async_exec); + prepare_execution_command (current_inferior ()->top_target (), async_exec); if (arg) error (_("The \"finish\" command does not take any arguments.")); diff --git a/gdb/inferior.c b/gdb/inferior.c index 69baee3..9188f72 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -507,7 +507,7 @@ print_inferior (struct ui_out *uiout, const char *requested_inferiors) uiout->field_signed ("number", inf->num); - /* Because target_pid_to_str uses current_top_target, + /* Because target_pid_to_str uses the current inferior, switch the inferior. */ switch_to_inferior_no_thread (inf); diff --git a/gdb/infrun.c b/gdb/infrun.c index b6f399d..20035a0 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -1777,7 +1777,7 @@ displaced_step_finish (thread_info *event_thread, enum gdb_signal signal) /* Fixup may need to read memory/registers. Switch to the thread that we're fixing up. Also, target_stopped_by_watchpoint checks the current thread, and displaced_step_restore performs ptid-dependent - memory accesses using current_inferior() and current_top_target(). */ + memory accesses using current_inferior(). */ switch_to_thread (event_thread); displaced_step_reset_cleanup cleanup (displaced); @@ -5813,7 +5813,8 @@ handle_signal_stop (struct execution_control_state *ecs) infrun_debug_printf ("stopped by watchpoint"); - if (target_stopped_data_address (current_top_target (), &addr)) + if (target_stopped_data_address (current_inferior ()->top_target (), + &addr)) infrun_debug_printf ("stopped data address=%s", paddress (reg_gdbarch, addr)); else @@ -8835,7 +8836,8 @@ siginfo_value_read (struct value *v) validate_registers_access (); transferred = - target_read (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, + target_read (current_inferior ()->top_target (), + TARGET_OBJECT_SIGNAL_INFO, NULL, value_contents_all_raw (v), value_offset (v), @@ -8857,7 +8859,7 @@ siginfo_value_write (struct value *v, struct value *fromval) vice versa. */ validate_registers_access (); - transferred = target_write (current_top_target (), + transferred = target_write (current_inferior ()->top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, value_contents_all_raw (fromval), @@ -8921,7 +8923,8 @@ public: siginfo_data.reset ((gdb_byte *) xmalloc (len)); - if (target_read (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, + if (target_read (current_inferior ()->top_target (), + TARGET_OBJECT_SIGNAL_INFO, NULL, siginfo_data.get (), 0, len) != len) { /* Errors ignored. */ @@ -8956,7 +8959,8 @@ public: struct type *type = gdbarch_get_siginfo_type (gdbarch); /* Errors ignored. */ - target_write (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, + target_write (current_inferior ()->top_target (), + TARGET_OBJECT_SIGNAL_INFO, NULL, m_siginfo_data.get (), 0, TYPE_LENGTH (type)); } diff --git a/gdb/linespec.c b/gdb/linespec.c index c7dbd3e..4034bba 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -47,6 +47,7 @@ #include "gdbsupport/function-view.h" #include "gdbsupport/def-vector.h" #include <algorithm> +#include "inferior.h" /* An enumeration of the various things a user might attempt to complete for a linespec location. */ @@ -2314,7 +2315,7 @@ convert_linespec_to_sals (struct linespec_state *state, linespec_p ls) = (gdbarch_convert_from_func_ptr_addr (gdbarch, msym_addr, - current_top_target ())); + current_inferior ()->top_target ())); } if (msym_addr == addr) diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 38c5ecf..19604b5 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -410,9 +410,10 @@ int linux_is_uclinux (void) { CORE_ADDR dummy; + target_ops *target = current_inferior ()->top_target (); - return (target_auxv_search (current_top_target (), AT_NULL, &dummy) > 0 - && target_auxv_search (current_top_target (), AT_PAGESZ, &dummy) == 0); + return (target_auxv_search (target, AT_NULL, &dummy) > 0 + && target_auxv_search (target, AT_PAGESZ, &dummy) == 0); } static int @@ -1735,7 +1736,8 @@ linux_get_siginfo_data (thread_info *thread, struct gdbarch *gdbarch) gdb::byte_vector buf (TYPE_LENGTH (siginfo_type)); - bytes_read = target_read (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, + bytes_read = target_read (current_inferior ()->top_target (), + TARGET_OBJECT_SIGNAL_INFO, NULL, buf.data (), 0, TYPE_LENGTH (siginfo_type)); if (bytes_read != TYPE_LENGTH (siginfo_type)) buf.clear (); @@ -2037,7 +2039,8 @@ linux_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size) /* Auxillary vector. */ gdb::optional<gdb::byte_vector> auxv = - target_read_alloc (current_top_target (), TARGET_OBJECT_AUXV, NULL); + target_read_alloc (current_inferior ()->top_target (), + TARGET_OBJECT_AUXV, NULL); if (auxv && !auxv->empty ()) { note_data.reset (elfcore_write_note (obfd, note_data.release (), @@ -2317,7 +2320,8 @@ linux_vsyscall_range_raw (struct gdbarch *gdbarch, struct mem_range *range) char filename[100]; long pid; - if (target_auxv_search (current_top_target (), AT_SYSINFO_EHDR, &range->start) <= 0) + if (target_auxv_search (current_inferior ()->top_target (), + AT_SYSINFO_EHDR, &range->start) <= 0) return 0; /* It doesn't make sense to access the host's /proc when debugging a @@ -2507,14 +2511,15 @@ linux_displaced_step_location (struct gdbarch *gdbarch) local-store address and is thus not usable as displaced stepping location. The auxiliary vector gets us the PowerPC-side entry point address instead. */ - if (target_auxv_search (current_top_target (), AT_ENTRY, &addr) <= 0) + if (target_auxv_search (current_inferior ()->top_target (), + AT_ENTRY, &addr) <= 0) throw_error (NOT_SUPPORTED_ERROR, _("Cannot find AT_ENTRY auxiliary vector entry.")); /* Make certain that the address points at real code, and not a function descriptor. */ - addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, - current_top_target ()); + addr = gdbarch_convert_from_func_ptr_addr + (gdbarch, addr, current_inferior ()->top_target ()); /* Inferior calls also use the entry point as a breakpoint location. We don't want displaced stepping to interfere with those diff --git a/gdb/maint.c b/gdb/maint.c index 5254cd6..7f505d0 100644 --- a/gdb/maint.c +++ b/gdb/maint.c @@ -40,6 +40,7 @@ #include "top.h" #include "maint.h" #include "gdbsupport/selftest.h" +#include "inferior.h" #include "cli/cli-decode.h" #include "cli/cli-utils.h" @@ -472,7 +473,7 @@ maintenance_info_target_sections (const char *arg, int from_tty) bfd *abfd = nullptr; int digits = 0; const target_section_table *table - = target_get_section_table (current_top_target ()); + = target_get_section_table (current_inferior ()->top_target ()); if (table == nullptr) return; diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index d5ce08e..c6f1ab4 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -264,7 +264,7 @@ proceed_thread_callback (struct thread_info *thread, void *arg) static void exec_continue (char **argv, int argc) { - prepare_execution_command (current_top_target (), mi_async_p ()); + prepare_execution_command (current_inferior ()->top_target (), mi_async_p ()); if (non_stop) { @@ -1328,7 +1328,8 @@ mi_cmd_data_read_memory (const char *command, char **argv, int argc) gdb::byte_vector mbuf (total_bytes); - nr_bytes = target_read (current_top_target (), TARGET_OBJECT_MEMORY, NULL, + nr_bytes = target_read (current_inferior ()->top_target (), + TARGET_OBJECT_MEMORY, NULL, mbuf.data (), addr, total_bytes); if (nr_bytes <= 0) error (_("Unable to read memory.")); @@ -1448,7 +1449,7 @@ mi_cmd_data_read_memory_bytes (const char *command, char **argv, int argc) length = atol (argv[1]); std::vector<memory_read_result> result - = read_memory_robust (current_top_target (), addr, length); + = read_memory_robust (current_inferior ()->top_target (), addr, length); if (result.size () == 0) error (_("Unable to read memory.")); diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 3cf849f..8ffd907 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -54,6 +54,7 @@ #include <algorithm> #include "safe-ctype.h" #include "gdbsupport/parallel-for.h" +#include "inferior.h" #if CXX_STD_THREAD #include <mutex> @@ -78,9 +79,8 @@ msymbol_is_function (struct objfile *objfile, minimal_symbol *minsym, case mst_data_gnu_ifunc: { struct gdbarch *gdbarch = objfile->arch (); - CORE_ADDR pc - = gdbarch_convert_from_func_ptr_addr (gdbarch, msym_addr, - current_top_target ()); + CORE_ADDR pc = gdbarch_convert_from_func_ptr_addr + (gdbarch, msym_addr, current_inferior ()->top_target ()); if (pc != msym_addr) { if (func_address_p != NULL) diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c index f1ba165..171f5b3 100644 --- a/gdb/ppc-linux-nat.c +++ b/gdb/ppc-linux-nat.c @@ -1967,8 +1967,8 @@ ppc_linux_nat_target::read_description () features.wordsize = ppc_linux_target_wordsize (tid); - CORE_ADDR hwcap = linux_get_hwcap (current_top_target ()); - CORE_ADDR hwcap2 = linux_get_hwcap2 (current_top_target ()); + CORE_ADDR hwcap = linux_get_hwcap (current_inferior ()->top_target ()); + CORE_ADDR hwcap2 = linux_get_hwcap2 (current_inferior ()->top_target ()); if (have_ptrace_getsetvsxregs && (hwcap & PPC_FEATURE_HAS_VSX)) @@ -2125,7 +2125,8 @@ ppc_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) takes two hardware watchpoints though. */ if (len > 1 && hwdebug_info.features & PPC_DEBUG_FEATURE_DATA_BP_RANGE - && linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE) + && (linux_get_hwcap (current_inferior ()->top_target ()) + & PPC_FEATURE_BOOKE)) return 2; /* Check if the processor provides DAWR interface. */ if (hwdebug_info.features & PPC_DEBUG_FEATURE_DATA_BP_DAWR) @@ -2153,7 +2154,8 @@ ppc_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) { gdb_assert (m_dreg_interface.debugreg_p ()); - if (((linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE) + if (((linux_get_hwcap (current_inferior ()->top_target ()) + & PPC_FEATURE_BOOKE) && (addr + len) > (addr & ~3) + 4) || (addr + len) > (addr & ~7) + 8) return 0; @@ -2640,7 +2642,8 @@ ppc_linux_nat_target::insert_watchpoint (CORE_ADDR addr, int len, long wp_value; long read_mode, write_mode; - if (linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE) + if (linux_get_hwcap (current_inferior ()->top_target ()) + & PPC_FEATURE_BOOKE) { /* PowerPC 440 requires only the read/write flags to be passed to the kernel. */ @@ -3013,9 +3016,11 @@ ppc_linux_nat_target::watchpoint_addr_within_range (CORE_ADDR addr, int mask; if (m_dreg_interface.hwdebug_p () - && linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE) + && (linux_get_hwcap (current_inferior ()->top_target ()) + & PPC_FEATURE_BOOKE)) return start <= addr && start + length >= addr; - else if (linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE) + else if (linux_get_hwcap (current_inferior ()->top_target ()) + & PPC_FEATURE_BOOKE) mask = 3; else mask = 7; diff --git a/gdb/procfs.c b/gdb/procfs.c index 91d2039..eb703cf 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -3643,7 +3643,8 @@ procfs_target::make_corefile_notes (bfd *obfd, int *note_size) &thread_args); gdb::optional<gdb::byte_vector> auxv = - target_read_alloc (current_top_target (), TARGET_OBJECT_AUXV, NULL); + target_read_alloc (current_inferior ()->top_target (), + TARGET_OBJECT_AUXV, NULL); if (auxv && !auxv->empty ()) note_data.reset (elfcore_write_note (obfd, note_data.release (), note_size, "CORE", NT_AUXV, auxv->data (), diff --git a/gdb/regcache.c b/gdb/regcache.c index a419a21..bf3c6f4 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -1916,7 +1916,7 @@ cooked_write_test (struct gdbarch *gdbarch) { /* Error out if debugging something, because we're going to push the test target, which would pop any existing target. */ - if (current_top_target ()->stratum () >= process_stratum) + if (current_inferior ()->top_target ()->stratum () >= process_stratum) error (_("target already pushed")); /* Create a mock environment. A process_stratum target pushed. */ diff --git a/gdb/remote.c b/gdb/remote.c index 6ccfa33..ff1366e 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -5079,9 +5079,8 @@ remote_target::remote_check_symbols () /* If this is a function address, return the start of code instead of any data function descriptor. */ - sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), - sym_addr, - current_top_target ()); + sym_addr = gdbarch_convert_from_func_ptr_addr + (target_gdbarch (), sym_addr, current_inferior ()->top_target ()); xsnprintf (msg.data (), get_remote_packet_size (), "qSymbol:%s:%s", phex_nz (sym_addr, addr_size), &reply[8]); @@ -11463,7 +11462,8 @@ remote_target::memory_map () { std::vector<mem_region> result; gdb::optional<gdb::char_vector> text - = target_read_stralloc (current_top_target (), TARGET_OBJECT_MEMORY_MAP, NULL); + = target_read_stralloc (current_inferior ()->top_target (), + TARGET_OBJECT_MEMORY_MAP, NULL); if (text) result = parse_memory_map (text->data ()); @@ -13694,7 +13694,8 @@ traceframe_info_up remote_target::traceframe_info () { gdb::optional<gdb::char_vector> text - = target_read_stralloc (current_top_target (), TARGET_OBJECT_TRACEFRAME_INFO, + = target_read_stralloc (current_inferior ()->top_target (), + TARGET_OBJECT_TRACEFRAME_INFO, NULL); if (text) return parse_traceframe_info (text->data ()); @@ -13923,7 +13924,8 @@ static void btrace_read_config (struct btrace_config *conf) { gdb::optional<gdb::char_vector> xml - = target_read_stralloc (current_top_target (), TARGET_OBJECT_BTRACE_CONF, ""); + = target_read_stralloc (current_inferior ()->top_target (), + TARGET_OBJECT_BTRACE_CONF, ""); if (xml) parse_xml_btrace_conf (conf, xml->data ()); } @@ -14124,7 +14126,8 @@ remote_target::read_btrace (struct btrace_data *btrace, } gdb::optional<gdb::char_vector> xml - = target_read_stralloc (current_top_target (), TARGET_OBJECT_BTRACE, annex); + = target_read_stralloc (current_inferior ()->top_target (), + TARGET_OBJECT_BTRACE, annex); if (!xml) return BTRACE_ERR_UNKNOWN; @@ -14180,7 +14183,7 @@ remote_target::pid_to_exec_file (int pid) xsnprintf (annex, annex_size, "%x", pid); } - filename = target_read_stralloc (current_top_target (), + filename = target_read_stralloc (current_inferior ()->top_target (), TARGET_OBJECT_EXEC_FILE, annex); return filename ? filename->data () : nullptr; diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index b09f631..cb06cd9 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -5077,7 +5077,8 @@ ppc_process_record_op31 (struct gdbarch *gdbarch, struct regcache *regcache, return 0; case 1014: /* Data Cache Block set to Zero */ - if (target_auxv_search (current_top_target (), AT_DCACHEBSIZE, &at_dcsz) <= 0 + if (target_auxv_search (current_inferior ()->top_target (), + AT_DCACHEBSIZE, &at_dcsz) <= 0 || at_dcsz == 0) at_dcsz = 128; /* Assume 128-byte cache line size (POWER8) */ diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c index d493843..41b50ce 100644 --- a/gdb/s390-linux-nat.c +++ b/gdb/s390-linux-nat.c @@ -1002,7 +1002,7 @@ s390_linux_nat_target::read_description () that mode, report s390 architecture with 64-bit GPRs. */ #ifdef __s390x__ { - CORE_ADDR hwcap = linux_get_hwcap (current_top_target ()); + CORE_ADDR hwcap = linux_get_hwcap (current_inferior ()->top_target ()); have_regset_tdb = (hwcap & HWCAP_S390_TE) && check_regset (tid, NT_S390_TDB, s390_sizeof_tdbregset); diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 39c8ee0..1bd770a 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -39,6 +39,7 @@ #include "target-descriptions.h" #include "trad-frame.h" #include "value.h" +#include "inferior.h" #include "features/s390-linux32.c" #include "features/s390x-linux64.c" @@ -685,7 +686,7 @@ s390_load (struct s390_prologue_data *data, if (pv_is_constant (addr)) { const struct target_section *secp - = target_section_by_addr (current_top_target (), addr.k); + = target_section_by_addr (current_inferior ()->top_target (), addr.k); if (secp != NULL && (bfd_section_flags (secp->the_bfd_section) & SEC_READONLY)) return pv_constant (read_memory_integer (addr.k, size, diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c index a0dbdde..faccf29 100644 --- a/gdb/solib-aix.c +++ b/gdb/solib-aix.c @@ -246,7 +246,8 @@ solib_aix_get_library_list (struct inferior *inf, const char *warning_msg) return data->library_list; gdb::optional<gdb::char_vector> library_document - = target_read_stralloc (current_top_target (), TARGET_OBJECT_LIBRARIES_AIX, + = target_read_stralloc (current_inferior ()->top_target (), + TARGET_OBJECT_LIBRARIES_AIX, NULL); if (!library_document && warning_msg != NULL) { diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index 628ef02..152afc2 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -488,7 +488,8 @@ darwin_solib_read_all_image_info_addr (struct darwin_info *info) if (TYPE_LENGTH (ptr_type) > sizeof (buf)) return; - len = target_read (current_top_target (), TARGET_OBJECT_DARWIN_DYLD_INFO, + len = target_read (current_inferior ()->top_target (), + TARGET_OBJECT_DARWIN_DYLD_INFO, NULL, buf, 0, TYPE_LENGTH (ptr_type)); if (len <= 0) return; diff --git a/gdb/solib-dsbt.c b/gdb/solib-dsbt.c index 4b1b756..c279435 100644 --- a/gdb/solib-dsbt.c +++ b/gdb/solib-dsbt.c @@ -280,7 +280,8 @@ dsbt_get_initial_loadmaps (void) { struct dsbt_info *info = get_dsbt_info (); gdb::optional<gdb::byte_vector> buf - = target_read_alloc (current_top_target (), TARGET_OBJECT_FDPIC, "exec"); + = target_read_alloc (current_inferior ()->top_target (), + TARGET_OBJECT_FDPIC, "exec"); if (!buf || buf->empty ()) { @@ -291,7 +292,8 @@ dsbt_get_initial_loadmaps (void) if (solib_dsbt_debug) dsbt_print_loadmap (info->exec_loadmap); - buf = target_read_alloc (current_top_target (), TARGET_OBJECT_FDPIC, "exec"); + buf = target_read_alloc (current_inferior ()->top_target (), + TARGET_OBJECT_FDPIC, "exec"); if (!buf || buf->empty ()) { info->interp_loadmap = NULL; diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index c7b3157..5314694 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -428,11 +428,14 @@ read_program_header (int type, int *p_arch_size, CORE_ADDR *base_addr) int pt_phdr_p = 0; /* Get required auxv elements from target. */ - if (target_auxv_search (current_top_target (), AT_PHDR, &at_phdr) <= 0) + if (target_auxv_search (current_inferior ()->top_target (), + AT_PHDR, &at_phdr) <= 0) return {}; - if (target_auxv_search (current_top_target (), AT_PHENT, &at_phent) <= 0) + if (target_auxv_search (current_inferior ()->top_target (), + AT_PHENT, &at_phent) <= 0) return {}; - if (target_auxv_search (current_top_target (), AT_PHNUM, &at_phnum) <= 0) + if (target_auxv_search (current_inferior ()->top_target (), + AT_PHNUM, &at_phnum) <= 0) return {}; if (!at_phdr || !at_phnum) return {}; @@ -1239,7 +1242,8 @@ svr4_current_sos_via_xfer_libraries (struct svr4_library_list *list, /* Fetch the list of shared libraries. */ gdb::optional<gdb::char_vector> svr4_library_document - = target_read_stralloc (current_top_target (), TARGET_OBJECT_LIBRARIES_SVR4, + = target_read_stralloc (current_inferior ()->top_target (), + TARGET_OBJECT_LIBRARIES_SVR4, annex); if (!svr4_library_document) return 0; @@ -2242,9 +2246,8 @@ enable_break (struct svr4_info *info, int from_tty) sym_addr = gdbarch_addr_bits_remove (target_gdbarch (), - gdbarch_convert_from_func_ptr_addr (target_gdbarch (), - sym_addr, - current_top_target ())); + gdbarch_convert_from_func_ptr_addr + (target_gdbarch (), sym_addr, current_inferior ()->top_target ())); /* On at least some versions of Solaris there's a dynamic relocation on _r_debug.r_brk and SYM_ADDR may not be relocated yet, e.g., if @@ -2353,7 +2356,8 @@ enable_break (struct svr4_info *info, int from_tty) /* If we were not able to find the base address of the loader from our so_list, then try using the AT_BASE auxilliary entry. */ if (!load_addr_found) - if (target_auxv_search (current_top_target (), AT_BASE, &load_addr) > 0) + if (target_auxv_search (current_inferior ()->top_target (), + AT_BASE, &load_addr) > 0) { int addr_bit = gdbarch_addr_bit (target_gdbarch ()); @@ -2474,9 +2478,8 @@ enable_break (struct svr4_info *info, int from_tty) && (BMSYMBOL_VALUE_ADDRESS (msymbol) != 0)) { sym_addr = BMSYMBOL_VALUE_ADDRESS (msymbol); - sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), - sym_addr, - current_top_target ()); + sym_addr = gdbarch_convert_from_func_ptr_addr + (target_gdbarch (), sym_addr, current_inferior ()->top_target ()); svr4_create_solib_event_breakpoints (info, target_gdbarch (), sym_addr); return 1; @@ -2492,9 +2495,9 @@ enable_break (struct svr4_info *info, int from_tty) && (BMSYMBOL_VALUE_ADDRESS (msymbol) != 0)) { sym_addr = BMSYMBOL_VALUE_ADDRESS (msymbol); - sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), - sym_addr, - current_top_target ()); + sym_addr = gdbarch_convert_from_func_ptr_addr + (target_gdbarch (), sym_addr, + current_inferior ()->top_target ()); svr4_create_solib_event_breakpoints (info, target_gdbarch (), sym_addr); return 1; @@ -2582,7 +2585,8 @@ svr4_exec_displacement (CORE_ADDR *displacementp) if ((bfd_get_file_flags (current_program_space->exec_bfd ()) & DYNAMIC) == 0) return 0; - if (target_auxv_search (current_top_target (), AT_ENTRY, &entry_point) <= 0) + if (target_auxv_search (current_inferior ()->top_target (), + AT_ENTRY, &entry_point) <= 0) return 0; exec_displacement diff --git a/gdb/solib-target.c b/gdb/solib-target.c index d8e33c3..1e010c5 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -25,6 +25,7 @@ #include "target.h" #include "solib-target.h" #include <vector> +#include "inferior.h" /* Private data for each loaded library. */ struct lm_info_target : public lm_info_base @@ -233,8 +234,8 @@ solib_target_current_sos (void) /* Fetch the list of shared libraries. */ gdb::optional<gdb::char_vector> library_document - = target_read_stralloc (current_top_target (), TARGET_OBJECT_LIBRARIES, - NULL); + = target_read_stralloc (current_inferior ()->top_target (), + TARGET_OBJECT_LIBRARIES, NULL); if (!library_document) return NULL; diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c index 34f2287..a6df0fc 100644 --- a/gdb/sparc-tdep.c +++ b/gdb/sparc-tdep.c @@ -189,7 +189,7 @@ ULONGEST sparc_fetch_wcookie (struct gdbarch *gdbarch) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); - struct target_ops *ops = current_top_target (); + struct target_ops *ops = current_inferior ()->top_target (); gdb_byte buf[8]; int len; diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c index c4d5ab2..3609794 100644 --- a/gdb/sparc64-tdep.c +++ b/gdb/sparc64-tdep.c @@ -214,10 +214,12 @@ adi_available (void) return proc->stat.is_avail; proc->stat.checked_avail = true; - if (target_auxv_search (current_top_target (), AT_ADI_BLKSZ, &value) <= 0) + if (target_auxv_search (current_inferior ()->top_target (), + AT_ADI_BLKSZ, &value) <= 0) return false; proc->stat.blksize = value; - target_auxv_search (current_top_target (), AT_ADI_NBITS, &value); + target_auxv_search (current_inferior ()->top_target (), + AT_ADI_NBITS, &value); proc->stat.nbits = value; proc->stat.max_version = (1 << proc->stat.nbits) - 2; proc->stat.is_avail = true; diff --git a/gdb/symfile.c b/gdb/symfile.c index adcdc16..e417878 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -838,10 +838,8 @@ init_entry_point_info (struct objfile *objfile) /* Make certain that the address points at real code, and not a function descriptor. */ - entry_point - = gdbarch_convert_from_func_ptr_addr (objfile->arch (), - entry_point, - current_top_target ()); + entry_point = gdbarch_convert_from_func_ptr_addr + (objfile->arch (), entry_point, current_inferior ()->top_target ()); /* Remove any ISA markers, so that this matches entries in the symbol table. */ diff --git a/gdb/symtab.c b/gdb/symtab.c index 084e8ec..122fdf0 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -5564,10 +5564,8 @@ find_gnu_ifunc (const symbol *sym) if (MSYMBOL_TYPE (minsym) == mst_data_gnu_ifunc) { struct gdbarch *gdbarch = objfile->arch (); - msym_addr - = gdbarch_convert_from_func_ptr_addr (gdbarch, - msym_addr, - current_top_target ()); + msym_addr = gdbarch_convert_from_func_ptr_addr + (gdbarch, msym_addr, current_inferior ()->top_target ()); } if (msym_addr == address) { diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c index 248edd5..c0e798a 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -553,11 +553,13 @@ target_find_description (void) /* Next try to read the description from the current target using target objects. */ if (current_target_desc == NULL) - current_target_desc = target_read_description_xml (current_top_target ()); + current_target_desc = target_read_description_xml + (current_inferior ()->top_target ()); /* If that failed try a target-specific hook. */ if (current_target_desc == NULL) - current_target_desc = target_read_description (current_top_target ()); + current_target_desc = target_read_description + (current_inferior ()->top_target ()); /* If a non-NULL description was returned, then update the current architecture. */ diff --git a/gdb/target-memory.c b/gdb/target-memory.c index 060f9cc..877f6c3 100644 --- a/gdb/target-memory.c +++ b/gdb/target-memory.c @@ -21,6 +21,7 @@ #include "defs.h" #include "target.h" #include "memory-map.h" +#include "inferior.h" #include "gdbsupport/gdb_sys_time.h" #include <algorithm> @@ -335,7 +336,7 @@ target_write_memory_blocks (const std::vector<memory_write_request> &requests, { LONGEST len; - len = target_write_with_progress (current_top_target (), + len = target_write_with_progress (current_inferior ()->top_target (), TARGET_OBJECT_MEMORY, NULL, iter.data, iter.begin, iter.end - iter.begin, @@ -358,7 +359,7 @@ target_write_memory_blocks (const std::vector<memory_write_request> &requests, { LONGEST len; - len = target_write_with_progress (current_top_target (), + len = target_write_with_progress (current_inferior ()->top_target (), TARGET_OBJECT_FLASH, NULL, iter.data, iter.begin, iter.end - iter.begin, diff --git a/gdb/target.c b/gdb/target.c index 9c4af5b..3653a7a 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -110,16 +110,6 @@ static std::unordered_map<const target_info *, target_open_ftype *> 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; @@ -173,7 +163,9 @@ show_targetdebug (struct ui_file *file, int from_tty, 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; @@ -183,7 +175,9 @@ target_has_memory () 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; @@ -193,7 +187,9 @@ target_has_stack () 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; @@ -218,7 +214,7 @@ target_has_execution (inferior *inf) const char * target_shortname () { - return current_top_target ()->shortname (); + return current_inferior ()->top_target ()->shortname (); } /* See target.h. */ @@ -226,7 +222,7 @@ target_shortname () bool target_attach_no_wait () { - return current_top_target ()->attach_no_wait (); + return current_inferior ()->top_target ()->attach_no_wait (); } /* See target.h. */ @@ -234,7 +230,7 @@ target_attach_no_wait () void target_post_attach (int pid) { - return current_top_target ()->post_attach (pid); + return current_inferior ()->top_target ()->post_attach (pid); } /* See target.h. */ @@ -242,7 +238,7 @@ target_post_attach (int pid) 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. */ @@ -250,13 +246,15 @@ target_prepare_to_store (regcache *regcache) 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. */ @@ -264,7 +262,9 @@ target_supports_string_tracing () 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. */ @@ -272,7 +272,7 @@ target_supports_evaluation_of_breakpoint_conditions () bool target_supports_dumpcore () { - return current_top_target ()->supports_dumpcore (); + return current_inferior ()->top_target ()->supports_dumpcore (); } /* See target.h. */ @@ -280,7 +280,7 @@ target_supports_dumpcore () void target_dumpcore (const char *filename) { - return current_top_target ()->dumpcore (filename); + return current_inferior ()->top_target ()->dumpcore (filename); } /* See target.h. */ @@ -288,7 +288,7 @@ target_dumpcore (const char *filename) 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. */ @@ -296,7 +296,7 @@ target_can_run_breakpoint_commands () void target_files_info () { - return current_top_target ()->files_info (); + return current_inferior ()->top_target ()->files_info (); } /* See target.h. */ @@ -304,7 +304,7 @@ target_files_info () 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. */ @@ -312,7 +312,7 @@ target_post_startup_inferior (ptid_t ptid) 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. */ @@ -320,7 +320,7 @@ target_insert_fork_catchpoint (int pid) 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. */ @@ -328,7 +328,7 @@ target_remove_fork_catchpoint (int pid) 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. */ @@ -336,7 +336,7 @@ target_insert_vfork_catchpoint (int pid) 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. */ @@ -344,7 +344,7 @@ target_remove_vfork_catchpoint (int pid) 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. */ @@ -352,7 +352,7 @@ target_insert_exec_catchpoint (int pid) 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. */ @@ -361,8 +361,10 @@ int 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. */ @@ -370,7 +372,7 @@ target_set_syscall_catchpoint (int pid, bool needed, int any_count, 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. */ @@ -378,8 +380,9 @@ target_rcmd (const char *command, struct ui_file *outbuf) 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. */ @@ -387,7 +390,7 @@ target_can_lock_scheduler () bool target_can_async_p () { - return current_top_target ()->can_async_p (); + return current_inferior ()->top_target ()->can_async_p (); } /* See target.h. */ @@ -395,13 +398,13 @@ target_can_async_p () 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. */ @@ -409,7 +412,7 @@ target_execution_direction () 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. */ @@ -417,7 +420,7 @@ target_extra_thread_info (thread_info *tp) 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. */ @@ -425,7 +428,7 @@ target_pid_to_exec_file (int pid) 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. */ @@ -433,7 +436,7 @@ target_thread_architecture (ptid_t ptid) 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. */ @@ -441,19 +444,19 @@ target_find_memory_regions (find_memory_region_ftype func, void *data) 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. */ @@ -461,7 +464,7 @@ target_goto_bookmark (const gdb_byte *arg, int from_tty) bool target_stopped_by_watchpoint () { - return current_top_target ()->stopped_by_watchpoint (); + return current_inferior ()->top_target ()->stopped_by_watchpoint (); } /* See target.h. */ @@ -469,25 +472,29 @@ target_stopped_by_watchpoint () 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. */ @@ -495,7 +502,7 @@ target_supports_stopped_by_hw_breakpoint () bool target_have_steppable_watchpoint () { - return current_top_target ()->have_steppable_watchpoint (); + return current_inferior ()->top_target ()->have_steppable_watchpoint (); } /* See target.h. */ @@ -503,7 +510,9 @@ target_have_steppable_watchpoint () 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. */ @@ -511,14 +520,16 @@ target_can_use_hardware_watchpoint (bptype type, int cnt, int othertype) 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. */ @@ -527,7 +538,9 @@ int 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. */ @@ -536,7 +549,9 @@ int 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. */ @@ -544,7 +559,9 @@ target_remove_watchpoint (CORE_ADDR addr, int len, target_hw_bp_type type, 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. */ @@ -552,7 +569,9 @@ target_insert_hw_breakpoint (gdbarch *gdbarch, bp_target_info *bp_tgt) 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. */ @@ -561,7 +580,9 @@ bool 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. */ @@ -569,228 +590,246 @@ target_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int type, 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. */ @@ -863,14 +902,14 @@ add_deprecated_target_alias (const target_info &tinfo, const char *alias) 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. */ @@ -883,7 +922,7 @@ target_terminal_state target_terminal::m_terminal_state void target_terminal::init (void) { - current_top_target ()->terminal_init (); + current_inferior ()->top_target ()->terminal_init (); m_terminal_state = target_terminal_state::is_ours; } @@ -914,7 +953,7 @@ target_terminal::inferior (void) 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; } @@ -949,7 +988,7 @@ target_terminal::restore_inferior (void) 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; } } @@ -981,7 +1020,7 @@ target_terminal_is_ours_kind (target_terminal_state desired_state) 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 (); } } @@ -996,9 +1035,9 @@ target_terminal_is_ours_kind (target_terminal_state desired_state) { 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; @@ -1047,7 +1086,7 @@ target_terminal::ours_for_output () 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. */ @@ -1071,7 +1110,7 @@ static void tcomplain (void) { error (_("You can't do that when your target is `%s'"), - current_top_target ()->shortname ()); + current_inferior ()->top_target ()->shortname ()); } void @@ -1206,8 +1245,9 @@ unpush_target_and_assert (struct target_ops *target) 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. */ @@ -1215,8 +1255,9 @@ pop_all_targets_above (enum strata above_stratum) 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 @@ -1246,7 +1287,7 @@ CORE_ADDR 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)) @@ -1765,7 +1806,8 @@ target_xfer_partial (struct target_ops *ops, 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 @@ -1795,7 +1837,8 @@ target_read_uint32 (CORE_ADDR memaddr, uint32_t *result) 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 @@ -1808,7 +1851,8 @@ target_read_raw_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) 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 @@ -1821,7 +1865,8 @@ target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) 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 @@ -1837,7 +1882,8 @@ target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) 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 @@ -1853,7 +1899,8 @@ target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len) 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 @@ -1865,7 +1912,8 @@ target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len) 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; @@ -1895,13 +1943,13 @@ target_memory_map (void) 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 @@ -2356,7 +2404,9 @@ target_insert_breakpoint (struct gdbarch *gdbarch, 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. */ @@ -2376,7 +2426,9 @@ target_remove_breakpoint (struct gdbarch *gdbarch, 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 @@ -2391,7 +2443,9 @@ info_target_command (const char *args, int from_tty) 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; @@ -2511,7 +2565,7 @@ target_detach (inferior *inf, int from_tty) 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 ()); @@ -2533,7 +2587,7 @@ target_disconnect (const char *args, int from_tty) disconnecting. */ remove_breakpoints (); - current_top_target ()->disconnect (args, from_tty); + current_inferior ()->top_target ()->disconnect (args, from_tty); } /* See target/target.h. */ @@ -2542,7 +2596,7 @@ ptid_t 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); @@ -2564,7 +2618,7 @@ default_target_wait (struct target_ops *ops, 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 * @@ -2572,7 +2626,7 @@ target_thread_name (struct thread_info *info) { gdb_assert (info->inf == current_inferior ()); - return current_top_target ()->thread_name (info); + return current_inferior ()->top_target ()->thread_name (info); } struct thread_info * @@ -2580,8 +2634,9 @@ target_thread_handle_to_thread_info (const gdb_byte *thread_handle, 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. */ @@ -2589,7 +2644,9 @@ target_thread_handle_to_thread_info (const gdb_byte *thread_handle, 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 @@ -2599,7 +2656,7 @@ target_resume (ptid_t ptid, int step, enum gdb_signal signal) 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 @@ -2620,7 +2677,7 @@ target_commit_resume (void) if (defer_target_commit_resume) return; - current_top_target ()->commit_resume (); + current_inferior ()->top_target ()->commit_resume (); } /* See target.h. */ @@ -2634,13 +2691,13 @@ make_scoped_defer_target_commit_resume () 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 @@ -2658,7 +2715,9 @@ default_follow_fork (struct target_ops *self, bool follow_child, 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. */ @@ -2666,7 +2725,7 @@ target_follow_fork (bool follow_child, bool detach_fork) 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 @@ -2680,7 +2739,7 @@ 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 @@ -2708,7 +2767,8 @@ default_search_memory (struct target_ops *self, { 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; }; @@ -2729,8 +2789,10 @@ target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_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 @@ -2740,7 +2802,9 @@ target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len, 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 @@ -2830,7 +2894,9 @@ struct target_ops * 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; @@ -2846,7 +2912,9 @@ struct target_ops * 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; @@ -2905,7 +2973,7 @@ find_default_supports_disable_randomization (struct target_ops *self) 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. */ @@ -2913,7 +2981,7 @@ target_supports_disable_randomization (void) int target_supports_multi_process (void) { - return current_top_target ()->supports_multi_process (); + return current_inferior ()->top_target ()->supports_multi_process (); } /* See target.h. */ @@ -2943,7 +3011,7 @@ target_thread_address_space (ptid_t ptid) { 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; @@ -2996,7 +3064,9 @@ target_ops::can_run () 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; @@ -3679,13 +3749,13 @@ target_close (struct target_ops *targ) 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 @@ -3697,7 +3767,7 @@ target_stop (ptid_t ptid) return; } - current_top_target ()->stop (ptid); + current_inferior ()->top_target ()->stop (ptid); } void @@ -3709,7 +3779,7 @@ target_interrupt () return; } - current_top_target ()->interrupt (); + current_inferior ()->top_target ()->interrupt (); } /* See target.h. */ @@ -3739,7 +3809,7 @@ target_pass_ctrlc (void) 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; } } @@ -3834,7 +3904,7 @@ target_options_to_string (target_wait_flags target_options) 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); } @@ -3845,7 +3915,7 @@ target_store_registers (struct regcache *regcache, int 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); @@ -3855,7 +3925,7 @@ target_store_registers (struct regcache *regcache, int 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 @@ -3893,14 +3963,16 @@ default_verify_memory (struct target_ops *self, 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 @@ -3910,7 +3982,9 @@ int 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 @@ -3920,7 +3994,9 @@ int 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 @@ -3929,7 +4005,9 @@ target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, 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 @@ -3938,7 +4016,7 @@ target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask) 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. */ @@ -3946,7 +4024,7 @@ target_ranged_break_num_registers (void) 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. */ @@ -3954,7 +4032,7 @@ target_enable_btrace (ptid_t ptid, const struct btrace_config *conf) 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. */ @@ -3962,7 +4040,7 @@ target_disable_btrace (struct btrace_target_info *btinfo) 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. */ @@ -3972,7 +4050,9 @@ target_read_btrace (struct btrace_data *btrace, 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. */ @@ -3980,7 +4060,7 @@ target_read_btrace (struct btrace_data *btrace, 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. */ @@ -3988,7 +4068,7 @@ target_btrace_conf (const struct btrace_target_info *btinfo) void target_stop_recording (void) { - current_top_target ()->stop_recording (); + current_inferior ()->top_target ()->stop_recording (); } /* See target.h. */ @@ -3996,7 +4076,7 @@ target_stop_recording (void) void target_save_record (const char *filename) { - current_top_target ()->save_record (filename); + current_inferior ()->top_target ()->save_record (filename); } /* See target.h. */ @@ -4004,7 +4084,7 @@ target_save_record (const char *filename) int target_supports_delete_record () { - return current_top_target ()->supports_delete_record (); + return current_inferior ()->top_target ()->supports_delete_record (); } /* See target.h. */ @@ -4012,7 +4092,7 @@ target_supports_delete_record () void target_delete_record (void) { - current_top_target ()->delete_record (); + current_inferior ()->top_target ()->delete_record (); } /* See target.h. */ @@ -4020,7 +4100,7 @@ target_delete_record (void) 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. */ @@ -4028,7 +4108,7 @@ target_record_method (ptid_t ptid) 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. */ @@ -4036,7 +4116,7 @@ target_record_is_replaying (ptid_t ptid) 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. */ @@ -4044,7 +4124,7 @@ target_record_will_replay (ptid_t ptid, int dir) void target_record_stop_replaying (void) { - current_top_target ()->record_stop_replaying (); + current_inferior ()->top_target ()->record_stop_replaying (); } /* See target.h. */ @@ -4052,7 +4132,7 @@ target_record_stop_replaying (void) void target_goto_record_begin (void) { - current_top_target ()->goto_record_begin (); + current_inferior ()->top_target ()->goto_record_begin (); } /* See target.h. */ @@ -4060,7 +4140,7 @@ target_goto_record_begin (void) void target_goto_record_end (void) { - current_top_target ()->goto_record_end (); + current_inferior ()->top_target ()->goto_record_end (); } /* See target.h. */ @@ -4068,7 +4148,7 @@ target_goto_record_end (void) void target_goto_record (ULONGEST insn) { - current_top_target ()->goto_record (insn); + current_inferior ()->top_target ()->goto_record (insn); } /* See target.h. */ @@ -4076,7 +4156,7 @@ target_goto_record (ULONGEST insn) 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. */ @@ -4085,7 +4165,7 @@ void 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. */ @@ -4094,7 +4174,7 @@ void 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. */ @@ -4102,7 +4182,7 @@ target_insn_history_range (ULONGEST begin, ULONGEST end, 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. */ @@ -4110,7 +4190,7 @@ target_call_history (int size, record_print_flags flags) 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. */ @@ -4118,7 +4198,7 @@ target_call_history_from (ULONGEST begin, int size, record_print_flags flags) 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. */ @@ -4126,7 +4206,7 @@ target_call_history_range (ULONGEST begin, ULONGEST end, record_print_flags flag const struct frame_unwind * target_get_unwinder (void) { - return current_top_target ()->get_unwinder (); + return current_inferior ()->top_target ()->get_unwinder (); } /* See target.h. */ @@ -4134,7 +4214,7 @@ target_get_unwinder (void) 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. */ @@ -4142,7 +4222,7 @@ target_get_tailcall_unwinder (void) 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. */ @@ -4150,7 +4230,7 @@ target_prepare_to_generate_core (void) void target_done_generating_core (void) { - current_top_target ()->done_generating_core (); + current_inferior ()->top_target ()->done_generating_core (); } @@ -4218,7 +4298,9 @@ maintenance_print_target_stack (const char *cmd, int from_tty) { 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; @@ -4232,7 +4314,7 @@ void target_async (int enable) { infrun_async (enable); - current_top_target ()->async (enable); + current_inferior ()->top_target ()->async (enable); } /* See target.h. */ @@ -4240,7 +4322,7 @@ target_async (int enable) 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 @@ -4280,7 +4362,7 @@ maint_show_target_async_command (struct ui_file *file, int from_tty, 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. */ diff --git a/gdb/target.h b/gdb/target.h index 482952e..5d14edb 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -1385,11 +1385,6 @@ private: target_ops *m_stack[(int) debug_stratum + 1] {}; }; -/* The ops structure for our "current" target process. This should - never be NULL. If there is no target, it points to the dummy_target. */ - -extern target_ops *current_top_target (); - /* Return the dummy target. */ extern target_ops *get_dummy_target (); diff --git a/gdb/tracefile-tfile.c b/gdb/tracefile-tfile.c index d82cac8..33ce86b 100644 --- a/gdb/tracefile-tfile.c +++ b/gdb/tracefile-tfile.c @@ -310,7 +310,7 @@ tfile_write_tdesc (struct trace_file_writer *self) = (struct tfile_trace_file_writer *) self; gdb::optional<std::string> tdesc - = target_fetch_description_xml (current_top_target ()); + = target_fetch_description_xml (current_inferior ()->top_target ()); if (!tdesc) return; diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index bf8a63c..48d72d6 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -3812,7 +3812,8 @@ sdata_make_value (struct gdbarch *gdbarch, struct internalvar *var, { /* We need to read the whole object before we know its size. */ gdb::optional<gdb::byte_vector> buf - = target_read_alloc (current_top_target (), TARGET_OBJECT_STATIC_TRACE_DATA, + = target_read_alloc (current_inferior ()->top_target (), + TARGET_OBJECT_STATIC_TRACE_DATA, NULL); if (buf) { diff --git a/gdb/valops.c b/gdb/valops.c index fec821a..f86c981 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1040,7 +1040,7 @@ read_value_memory (struct value *val, LONGEST bit_offset, enum target_xfer_status status; ULONGEST xfered_partial; - status = target_xfer_partial (current_top_target (), + status = target_xfer_partial (current_inferior ()->top_target (), object, NULL, buffer + xfered_total * unit_size, NULL, memaddr + xfered_total, @@ -1286,7 +1286,8 @@ value_assign (struct value *toval, struct value *fromval) case lval_register: case lval_computed: - gdb::observers::target_changed.notify (current_top_target ()); + gdb::observers::target_changed.notify + (current_inferior ()->top_target ()); /* Having destroyed the frame cache, restore the selected frame. */ diff --git a/gdb/valprint.c b/gdb/valprint.c index c089ee2..baf50f7 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -42,6 +42,7 @@ #include "count-one-bits.h" #include "c-lang.h" #include "cp-abi.h" +#include "inferior.h" /* Maximum number of wchars returned from wchar_iterate. */ #define MAX_WCHARS 4 @@ -1848,9 +1849,8 @@ print_function_pointer_address (const struct value_print_options *options, CORE_ADDR address, struct ui_file *stream) { - CORE_ADDR func_addr - = gdbarch_convert_from_func_ptr_addr (gdbarch, address, - current_top_target ()); + CORE_ADDR func_addr = gdbarch_convert_from_func_ptr_addr + (gdbarch, address, current_inferior ()->top_target ()); /* If the function pointer is represented by a description, print the address of the description. */ diff --git a/gdb/value.c b/gdb/value.c index 9527186..3bd81e7 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -45,6 +45,7 @@ #include "gdbsupport/array-view.h" #include "cli/cli-style.h" #include "expop.h" +#include "inferior.h" /* Definition of a user function. */ struct internal_function @@ -3159,7 +3160,8 @@ value_fn_field (struct value **arg1p, struct fn_field *f, set_value_address (v, gdbarch_convert_from_func_ptr_addr - (gdbarch, BMSYMBOL_VALUE_ADDRESS (msym), current_top_target ())); + (gdbarch, BMSYMBOL_VALUE_ADDRESS (msym), + current_inferior ()->top_target ())); } if (arg1p) diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c index a06b448..97aa3da 100644 --- a/gdb/windows-tdep.c +++ b/gdb/windows-tdep.c @@ -487,7 +487,7 @@ display_one_tib (ptid_t ptid) return -1; } - if (target_read (current_top_target (), TARGET_OBJECT_MEMORY, + if (target_read (current_inferior ()->top_target (), TARGET_OBJECT_MEMORY, NULL, tib, thread_local_base, tib_size) != tib_size) { printf_filtered (_("Unable to read thread information " |