From: Simon Marchi Date: Wed, 24 Mar 2021 22:08:12 +0000 (-0400) Subject: gdb: remove current_top_target function X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=328d42d87e97c75d6e52800bfd4bc1bfdfb745d2;p=binutils-gdb.git 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 --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a14592592e4..a548c58e8f7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2021-03-24 Simon Marchi + + * target.h (current_top_target): Remove, make callers use the + current inferior instead. + * target.c (current_top_target): Remove. + 2021-03-24 Simon Marchi * target.h (target_shortname): Change to function declaration. diff --git a/gdb/auxv.c b/gdb/auxv.c index f13f90b153f..6507df192e5 100644 --- a/gdb/auxv.c +++ b/gdb/auxv.c @@ -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 815c6d45143..018b18f3dfd 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 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 de1e79ba5d0..16cf7977b62 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 4ddcc06ec96..30960c129fd 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 85100875347..49bbbec663e 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); diff --git a/gdb/eval.c b/gdb/eval.c index 530ff152134..363ab4fa4af 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -42,6 +42,7 @@ #include #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); diff --git a/gdb/exec.c b/gdb/exec.c index b737bcf6e0f..ff0db82a69b 100644 --- a/gdb/exec.c +++ b/gdb/exec.c @@ -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 available_memory = section_table_available_memory (offset, len, *table); diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c index 170e8f5e84e..6cab31dde82 100644 --- a/gdb/fbsd-tdep.c +++ b/gdb/fbsd-tdep.c @@ -593,7 +593,7 @@ static gdb::optional fbsd_make_note_desc (enum target_object object, uint32_t structsize) { gdb::optional 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 4578b1acab3..dc9fdd41646 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 8461535c6ec..45e57c210cb 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -31,6 +31,7 @@ #include #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 35eeffe8434..1c4fc4cca47 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 0481f00c2fa..cc8e1914274 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 2332f293a1e..ca3347fbb9d 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 80e6ad3048f..a6e9572fc7f 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 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 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 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 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 69baee34ce9..9188f72e35d 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 b6f399d5478..20035a0f5e8 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 c7dbd3eeae2..4034bbab8a0 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -47,6 +47,7 @@ #include "gdbsupport/function-view.h" #include "gdbsupport/def-vector.h" #include +#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 38c5ecf5b59..19604b5ff9a 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 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 5254cd6ed26..7f505d07a69 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 d5ce08e95ed..c6f1ab4e3f0 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 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 3cf849f48bf..8ffd9076124 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -54,6 +54,7 @@ #include #include "safe-ctype.h" #include "gdbsupport/parallel-for.h" +#include "inferior.h" #if CXX_STD_THREAD #include @@ -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 f1ba165d540..171f5b386fa 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 91d2039e3f9..eb703cf43b7 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 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 a419a21f30a..bf3c6f43e6a 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 6ccfa3365b0..ff1366ebc40 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 result; gdb::optional 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 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 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 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 b09f63137dc..cb06cd952a7 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 d493843410a..41b50ce4800 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 39c8ee0450a..1bd770a3cc3 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 a0dbdde4d49..faccf299899 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 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 628ef02a653..152afc21b9d 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 4b1b7560e16..c279435c89a 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 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 c7b3157191f..531469484e5 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 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 d8e33c3b027..1e010c52221 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -25,6 +25,7 @@ #include "target.h" #include "solib-target.h" #include +#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 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 34f22879737..a6df0fcb58b 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 c4d5ab21b2f..3609794419a 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 adcdc169306..e417878031d 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 084e8ecc2e8..122fdf0b1d3 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 248edd51bd1..c0e798a3530 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 060f9cc6642..877f6c3e946 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 @@ -335,7 +336,7 @@ target_write_memory_blocks (const std::vector &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 &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 9c4af5beaf0..3653a7a98f8 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -110,16 +110,6 @@ static std::unordered_map 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 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 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 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 target_memory_map (void) { - std::vector result = current_top_target ()->memory_map (); + target_ops *target = current_inferior ()->top_target (); + std::vector 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 pass_signals) { - current_top_target ()->pass_signals (pass_signals); + current_inferior ()->top_target ()->pass_signals (pass_signals); } void target_program_signals (gdb::array_view 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 482952e5f5d..5d14edb9f4c 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 d82cac8d9dd..33ce86bbe23 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 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 bf8a63c5966..48d72d6a1f2 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 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 fec821ad932..f86c9818058 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 c089ee27a23..baf50f76b60 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 9527186f57a..3bd81e76007 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 a06b44822d4..97aa3da6e77 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 "