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