From patchwork Mon May 28 16:10:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pedro Alves X-Patchwork-Id: 27527 Received: (qmail 34382 invoked by alias); 28 May 2018 16:10:58 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 34143 invoked by uid 89); 28 May 2018 16:10:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_STOCKGEN, SPF_HELO_PASS, T_FILL_THIS_FORM_SHORT autolearn=ham version=3.3.2 spammy=layers, itll, it'll, UD:id X-HELO: mx1.redhat.com Received: from mx3-rdu2.redhat.com (HELO mx1.redhat.com) (66.187.233.73) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 28 May 2018 16:10:45 +0000 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1DEDA81AFF12 for ; Mon, 28 May 2018 16:10:44 +0000 (UTC) Received: from localhost.localdomain (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5996C2166BB2 for ; Mon, 28 May 2018 16:10:43 +0000 (UTC) From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 1/4] target_stack -> current_top_target() throughout Date: Mon, 28 May 2018 17:10:38 +0100 Message-Id: <20180528161041.32497-2-palves@redhat.com> In-Reply-To: <20180528161041.32497-1-palves@redhat.com> References: <20180528161041.32497-1-palves@redhat.com> The recent C++ification of target_ops replaced references to the old "current_target" squashed target throughout with references to a "target_stack" pointer. I had picked the "target_stack" name very early in the multi-target work, and managed to stick with it, even though it's a bit of a misnomer, since it isn't really a "target stack" object, but a pointer into the current top target in the stack. As I'm splitting more pieces off of the multi-target branch, I've come to think that it's better to rename it now. A following patch will introduce a new class to represent a target stack, and "target_stack" would be _its_ ideal name. (In the branch, the class is called a_target_stack to work around the clash.) Thus this commit renames target_target to current_top_target and replaces all references throughout. Also, while at it, current_top_target is made a function instead of a pointer, to make it possible to change its internal implementation without leaking implementation details out. In a couple patches, the implementation of the function will change to refer to a target stack object, and then further down the multi-target work, it'll change again to find the right target stack for the current inferior. gdb/ChangeLog: yyyy-mm-dd Pedro Alves * target.h (target_stack): Delete. (current_top_target): Declare function. * target.c (target_stack): Delete. (g_current_top_target): New. (current_top_target): New function. * auxv.c: Use current_top_target instead of target_stack throughout. * avr-tdep.c: Likewise. * breakpoint.c: Likewise. * corefile.c: Likewise. * elfread.c: Likewise. * eval.c: Likewise. * exceptions.c: Likewise. * frame.c: Likewise. * gdbarch-selftests.c: Likewise. * gnu-v3-abi.c: Likewise. * ia64-tdep.c: Likewise. * ia64-vms-tdep.c: Likewise. * infcall.c: Likewise. * infcmd.c: Likewise. * infrun.c: Likewise. * linespec.c: Likewise. * linux-tdep.c: Likewise. * minsyms.c: Likewise. * ppc-linux-nat.c: Likewise. * ppc-linux-tdep.c: Likewise. * procfs.c: Likewise. * regcache.c: Likewise. * remote.c: Likewise. * rs6000-tdep.c: Likewise. * s390-linux-nat.c: Likewise. * s390-tdep.c: Likewise. * solib-aix.c: Likewise. * solib-darwin.c: Likewise. * solib-dsbt.c: Likewise. * solib-spu.c: Likewise. * solib-svr4.c: Likewise. * solib-target.c: Likewise. * sparc-tdep.c: Likewise. * sparc64-tdep.c: Likewise. * spu-tdep.c: Likewise. * symfile.c: Likewise. * symtab.c: Likewise. * target-descriptions.c: Likewise. * target-memory.c: Likewise. * target.c: Likewise. * target.h: Likewise. * tracefile-tfile.c: Likewise. * tracepoint.c: Likewise. * valops.c: Likewise. * valprint.c: Likewise. * value.c: Likewise. * windows-tdep.c: Likewise. * mi/mi-main.c: Likewise. --- gdb/auxv.c | 4 +- gdb/avr-tdep.c | 4 +- gdb/breakpoint.c | 7 +- gdb/corefile.c | 2 +- gdb/elfread.c | 9 +- gdb/eval.c | 2 +- gdb/exceptions.c | 2 +- gdb/frame.c | 2 +- gdb/gdbarch-selftests.c | 2 +- gdb/gnu-v3-abi.c | 2 +- gdb/ia64-tdep.c | 2 +- gdb/ia64-vms-tdep.c | 2 +- gdb/infcall.c | 7 +- gdb/infcmd.c | 18 ++-- gdb/infrun.c | 12 +-- gdb/linespec.c | 2 +- gdb/linux-tdep.c | 19 ++-- gdb/mi/mi-main.c | 8 +- gdb/minsyms.c | 5 +- gdb/ppc-linux-nat.c | 2 +- gdb/ppc-linux-tdep.c | 4 +- gdb/procfs.c | 2 +- gdb/regcache.c | 4 +- gdb/remote.c | 12 +-- gdb/rs6000-tdep.c | 2 +- gdb/s390-linux-nat.c | 2 +- gdb/s390-tdep.c | 2 +- gdb/solib-aix.c | 2 +- gdb/solib-darwin.c | 4 +- gdb/solib-dsbt.c | 4 +- gdb/solib-spu.c | 6 +- gdb/solib-svr4.c | 23 ++--- gdb/solib-target.c | 3 +- gdb/sparc-tdep.c | 2 +- gdb/sparc64-tdep.c | 4 +- gdb/spu-tdep.c | 32 +++---- gdb/symfile.c | 2 +- gdb/symtab.c | 7 +- gdb/target-descriptions.c | 4 +- gdb/target-memory.c | 4 +- gdb/target.c | 214 ++++++++++++++++++++++++---------------------- gdb/target.h | 160 +++++++++++++++++----------------- gdb/tracefile-tfile.c | 2 +- gdb/tracepoint.c | 2 +- gdb/valops.c | 4 +- gdb/valprint.c | 2 +- gdb/value.c | 2 +- gdb/windows-tdep.c | 2 +- 48 files changed, 321 insertions(+), 305 deletions(-) diff --git a/gdb/auxv.c b/gdb/auxv.c index 86a1ba88a6..2afa136efe 100644 --- a/gdb/auxv.c +++ b/gdb/auxv.c @@ -291,7 +291,7 @@ target_auxv_parse (gdb_byte **readptr, if (gdbarch_auxv_parse_p (gdbarch)) return gdbarch_auxv_parse (gdbarch, readptr, endptr, typep, valp); - return target_stack->auxv_parse (readptr, endptr, typep, valp); + return current_top_target ()->auxv_parse (readptr, endptr, typep, valp); } @@ -549,7 +549,7 @@ 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, target_stack); + int ents = fprint_target_auxv (gdb_stdout, current_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 5aa61ba2d9..74602c13ec 100644 --- a/gdb/avr-tdep.c +++ b/gdb/avr-tdep.c @@ -1555,7 +1555,7 @@ 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 (target_stack, TARGET_OBJECT_AVR, "avr.io_reg"); + = target_read_alloc (current_top_target (), TARGET_OBJECT_AVR, "avr.io_reg"); if (!buf) { @@ -1589,7 +1589,7 @@ 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 (target_stack, TARGET_OBJECT_AVR, query); + buf = target_read_alloc (current_top_target (), TARGET_OBJECT_AVR, query); if (!buf) { diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 721afd2c04..4fbf118ecd 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -3489,7 +3489,8 @@ create_exception_master_breakpoint (void) } addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym); - addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, target_stack); + addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, + current_top_target ()); b = create_internal_breakpoint (gdbarch, addr, bp_exception_master, &internal_breakpoint_ops); initialize_explicit_location (&explicit_loc); @@ -4748,7 +4749,7 @@ watchpoints_triggered (struct target_waitstatus *ws) return 0; } - if (!target_stopped_data_address (target_stack, &addr)) + if (!target_stopped_data_address (current_top_target (), &addr)) { /* We were stopped by a watchpoint, but we don't know where. Mark all watchpoints as unknown. */ @@ -4788,7 +4789,7 @@ watchpoints_triggered (struct target_waitstatus *ws) } } /* Exact match not required. Within range is sufficient. */ - else if (target_watchpoint_addr_within_range (target_stack, + else if (target_watchpoint_addr_within_range (current_top_target (), addr, loc->address, loc->length)) { diff --git a/gdb/corefile.c b/gdb/corefile.c index 5f66ead897..0e348938fa 100644 --- a/gdb/corefile.c +++ b/gdb/corefile.c @@ -214,7 +214,7 @@ read_memory_object (enum target_object object, CORE_ADDR memaddr, enum target_xfer_status status; ULONGEST xfered_len; - status = target_xfer_partial (target_stack, object, NULL, + status = target_xfer_partial (current_top_target (), object, NULL, myaddr + xfered, NULL, memaddr + xfered, len - xfered, &xfered_len); diff --git a/gdb/elfread.c b/gdb/elfread.c index b4b4a1b24c..c253b5a039 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -836,7 +836,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, target_stack); + addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, + current_top_target ()); addr = gdbarch_addr_bits_remove (gdbarch, addr); if (elf_gnu_ifunc_record_cache (name, addr)) @@ -903,12 +904,12 @@ 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 (target_stack, AT_HWCAP, &hwcap); + target_auxv_search (current_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, 1, &hwcap_val); address = value_as_address (address_val); - address = gdbarch_convert_from_func_ptr_addr (gdbarch, address, target_stack); + address = gdbarch_convert_from_func_ptr_addr (gdbarch, address, current_top_target ()); address = gdbarch_addr_bits_remove (gdbarch, address); if (name_at_pc) @@ -1015,7 +1016,7 @@ elf_gnu_ifunc_resolver_return_stop (struct breakpoint *b) resolved_address = value_as_address (value); resolved_pc = gdbarch_convert_from_func_ptr_addr (gdbarch, resolved_address, - target_stack); + current_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 5bd6e2cbfe..4b90d2f6b7 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -1748,7 +1748,7 @@ evaluate_subexp_standard (struct type *expect_type, /* 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, - target_stack); + current_top_target ()); /* Is it a high_level symbol? */ sym = find_pc_function (addr); diff --git a/gdb/exceptions.c b/gdb/exceptions.c index 5abbaf2137..54aab704b7 100644 --- a/gdb/exceptions.c +++ b/gdb/exceptions.c @@ -43,7 +43,7 @@ print_flush (void) stack, the NULL check is needed here because we can get here very early during startup, before the target stack is first initialized. */ - if (target_stack != NULL && target_supports_terminal_ours ()) + if (current_top_target () != NULL && target_supports_terminal_ours ()) { term_state.emplace (); target_terminal::ours_for_output (); diff --git a/gdb/frame.c b/gdb/frame.c index c0f6e64dfc..9d4546edcf 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -2222,7 +2222,7 @@ inside_main_func (struct frame_info *this_frame) returned. */ maddr = gdbarch_convert_from_func_ptr_addr (get_frame_arch (this_frame), BMSYMBOL_VALUE_ADDRESS (msymbol), - target_stack); + current_top_target ()); return maddr == get_frame_func (this_frame); } diff --git a/gdb/gdbarch-selftests.c b/gdb/gdbarch-selftests.c index 23afe3d75e..73a31244b4 100644 --- a/gdb/gdbarch-selftests.c +++ b/gdb/gdbarch-selftests.c @@ -71,7 +71,7 @@ register_to_value_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 (target_stack->to_stratum >= process_stratum) + if (current_top_target ()->to_stratum >= process_stratum) error (_("target already pushed")); /* Create a mock environment. An inferior with a thread, with a diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index ddbec13891..3cef80c1ec 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -1217,7 +1217,7 @@ gnuv3_skip_trampoline (struct frame_info *frame, CORE_ADDR stop_pc) 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, - target_stack); + current_top_target ()); if (func_addr != 0) method_stop_pc = func_addr; diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 26e112e7bc..bf10eae92e 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -2660,7 +2660,7 @@ getunwind_table (gdb_byte **buf_p) we should find a way to override the corefile layer's xfer_partial method. */ - x = target_read_alloc (target_stack, TARGET_OBJECT_UNWIND_TABLE, + x = target_read_alloc (current_top_target (), TARGET_OBJECT_UNWIND_TABLE, NULL, buf_p); return x; diff --git a/gdb/ia64-vms-tdep.c b/gdb/ia64-vms-tdep.c index 9b78576608..e2d40e2079 100644 --- a/gdb/ia64-vms-tdep.c +++ b/gdb/ia64-vms-tdep.c @@ -42,7 +42,7 @@ 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 (target_stack, TARGET_OBJECT_OPENVMS_UIB, + res = target_read (current_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 b13f5b61d9..c20ab6f877 100644 --- a/gdb/infcall.c +++ b/gdb/infcall.c @@ -256,7 +256,7 @@ find_function_addr (struct value *function, if (TYPE_CODE (ftype) == TYPE_CODE_FUNC || TYPE_CODE (ftype) == TYPE_CODE_METHOD) funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr, - target_stack); + current_top_target ()); } if (TYPE_CODE (ftype) == TYPE_CODE_FUNC || TYPE_CODE (ftype) == TYPE_CODE_METHOD) @@ -307,8 +307,9 @@ find_function_addr (struct value *function, funaddr = value_as_address (value_addr (function)); nfunaddr = funaddr; - funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr, - target_stack); + funaddr + = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr, + current_top_target ()); if (funaddr != nfunaddr) found_descriptor = 1; } diff --git a/gdb/infcmd.c b/gdb/infcmd.c index af3fa5fd1a..b3f0238eba 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -660,7 +660,7 @@ run_command_1 (const char *args, int from_tty, enum run_how run_how) /* Pass zero for FROM_TTY, because at this point the "run" command has done its thing; now we are setting up the running program. */ - post_create_inferior (target_stack, 0); + post_create_inferior (current_top_target (), 0); /* Queue a pending event so that the program stops immediately. */ if (run_how == RUN_STOP_AT_FIRST_INSN) @@ -896,7 +896,7 @@ continue_command (const char *args, int from_tty) ensure_not_running (); } - prepare_execution_command (target_stack, async_exec); + prepare_execution_command (current_top_target (), async_exec); if (from_tty) printf_filtered (_("Continuing.\n")); @@ -1043,7 +1043,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 (target_stack, async_exec); + prepare_execution_command (current_top_target (), async_exec); count = count_string ? parse_and_eval_long (count_string) : 1; @@ -1232,7 +1232,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 (target_stack, async_exec); + prepare_execution_command (current_top_target (), async_exec); if (!arg) error_no_arg (_("starting address")); @@ -1312,7 +1312,7 @@ signal_command (const char *signum_exp, int from_tty) = strip_bg_char (signum_exp, &async_exec); signum_exp = stripped.get (); - prepare_execution_command (target_stack, async_exec); + prepare_execution_command (current_top_target (), async_exec); if (!signum_exp) error_no_arg (_("signal number")); @@ -1585,7 +1585,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 (target_stack, async_exec); + prepare_execution_command (current_top_target (), async_exec); if (arg) until_break_command (arg, from_tty, 0); @@ -1610,7 +1610,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 (target_stack, async_exec); + prepare_execution_command (current_top_target (), async_exec); until_break_command (arg, from_tty, 1); } @@ -1990,7 +1990,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 (target_stack, async_exec); + prepare_execution_command (current_top_target (), async_exec); if (arg) error (_("The \"finish\" command does not take any arguments.")); @@ -2686,7 +2686,7 @@ setup_inferior (int from_tty) /* Take any necessary post-attaching actions for this platform. */ target_post_attach (ptid_get_pid (inferior_ptid)); - post_create_inferior (target_stack, from_tty); + post_create_inferior (current_top_target (), from_tty); } /* What to do after the first program stops after attaching. */ diff --git a/gdb/infrun.c b/gdb/infrun.c index df19478ef3..94a88c13d7 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -3240,7 +3240,7 @@ start_remote (int from_tty) /* Now that the inferior has stopped, do any bookkeeping like loading shared libraries. We want to do this before normal_stop, so that the displayed frame is up to date. */ - post_create_inferior (target_stack, from_tty); + post_create_inferior (current_top_target (), from_tty); normal_stop (); } @@ -5697,7 +5697,7 @@ handle_signal_stop (struct execution_control_state *ecs) fprintf_unfiltered (gdb_stdlog, "infrun: stopped by watchpoint\n"); - if (target_stopped_data_address (target_stack, &addr)) + if (target_stopped_data_address (current_top_target (), &addr)) fprintf_unfiltered (gdb_stdlog, "infrun: stopped data address = %s\n", paddress (gdbarch, addr)); @@ -8744,7 +8744,7 @@ siginfo_value_read (struct value *v) validate_registers_access (); transferred = - target_read (target_stack, TARGET_OBJECT_SIGNAL_INFO, + target_read (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, value_contents_all_raw (v), value_offset (v), @@ -8766,7 +8766,7 @@ siginfo_value_write (struct value *v, struct value *fromval) vice versa. */ validate_registers_access (); - transferred = target_write (target_stack, + transferred = target_write (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, value_contents_all_raw (fromval), @@ -8845,7 +8845,7 @@ save_infcall_suspend_state (void) siginfo_data = (gdb_byte *) xmalloc (len); back_to = make_cleanup (xfree, siginfo_data); - if (target_read (target_stack, TARGET_OBJECT_SIGNAL_INFO, NULL, + if (target_read (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, siginfo_data, 0, len) == len) discard_cleanups (back_to); else @@ -8895,7 +8895,7 @@ restore_infcall_suspend_state (struct infcall_suspend_state *inf_state) struct type *type = gdbarch_get_siginfo_type (gdbarch); /* Errors ignored. */ - target_write (target_stack, TARGET_OBJECT_SIGNAL_INFO, NULL, + target_write (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, inf_state->siginfo_data, 0, TYPE_LENGTH (type)); } diff --git a/gdb/linespec.c b/gdb/linespec.c index 835650750c..763f4ed4a5 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -2303,7 +2303,7 @@ convert_linespec_to_sals (struct linespec_state *state, linespec_p ls) = (gdbarch_convert_from_func_ptr_addr (gdbarch, msym_addr, - target_stack)); + current_top_target ())); } if (msym_addr == addr) diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 4d3919df31..5a40a6802a 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -402,8 +402,8 @@ linux_is_uclinux (void) { CORE_ADDR dummy; - return (target_auxv_search (target_stack, AT_NULL, &dummy) > 0 - && target_auxv_search (target_stack, AT_PAGESZ, &dummy) == 0); + return (target_auxv_search (current_top_target (), AT_NULL, &dummy) > 0 + && target_auxv_search (current_top_target (), AT_PAGESZ, &dummy) == 0); } static int @@ -1423,7 +1423,8 @@ linux_spu_make_corefile_notes (bfd *obfd, char *note_data, int *note_size) /* Determine list of SPU ids. */ gdb::optional - spu_ids = target_read_alloc (target_stack, TARGET_OBJECT_SPU, NULL); + spu_ids = target_read_alloc (current_top_target (), + TARGET_OBJECT_SPU, NULL); if (!spu_ids) return note_data; @@ -1439,7 +1440,7 @@ linux_spu_make_corefile_notes (bfd *obfd, char *note_data, int *note_size) xsnprintf (annex, sizeof annex, "%d/%s", fd, spu_files[j]); gdb::optional spu_data - = target_read_alloc (target_stack, TARGET_OBJECT_SPU, annex); + = target_read_alloc (current_top_target (), TARGET_OBJECT_SPU, annex); if (spu_data && !spu_data->empty ()) { @@ -1661,7 +1662,7 @@ linux_get_siginfo_data (thread_info *thread, struct gdbarch *gdbarch) gdb::byte_vector buf (TYPE_LENGTH (siginfo_type)); - bytes_read = target_read (target_stack, TARGET_OBJECT_SIGNAL_INFO, NULL, + bytes_read = target_read (current_top_target (), TARGET_OBJECT_SIGNAL_INFO, NULL, buf.data (), 0, TYPE_LENGTH (siginfo_type)); if (bytes_read != TYPE_LENGTH (siginfo_type)) buf.clear (); @@ -1970,7 +1971,7 @@ linux_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size) /* Auxillary vector. */ gdb::optional auxv = - target_read_alloc (target_stack, TARGET_OBJECT_AUXV, NULL); + target_read_alloc (current_top_target (), TARGET_OBJECT_AUXV, NULL); if (auxv && !auxv->empty ()) { note_data = elfcore_write_note (obfd, note_data, note_size, @@ -2253,7 +2254,7 @@ linux_vsyscall_range_raw (struct gdbarch *gdbarch, struct mem_range *range) char filename[100]; long pid; - if (target_auxv_search (target_stack, AT_SYSINFO_EHDR, &range->start) <= 0) + if (target_auxv_search (current_top_target (), AT_SYSINFO_EHDR, &range->start) <= 0) return 0; /* It doesn't make sense to access the host's /proc when debugging a @@ -2443,14 +2444,14 @@ 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 (target_stack, AT_ENTRY, &addr) <= 0) + if (target_auxv_search (current_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, - target_stack); + current_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/mi/mi-main.c b/gdb/mi/mi-main.c index 76e783daf9..14b3e6853a 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -266,7 +266,7 @@ proceed_thread_callback (struct thread_info *thread, void *arg) static void exec_continue (char **argv, int argc) { - prepare_execution_command (target_stack, mi_async_p ()); + prepare_execution_command (current_top_target (), mi_async_p ()); if (non_stop) { @@ -1353,8 +1353,8 @@ mi_cmd_data_read_memory (const char *command, char **argv, int argc) gdb::byte_vector mbuf (total_bytes); - nr_bytes = target_read (target_stack, TARGET_OBJECT_MEMORY, NULL, mbuf.data (), - addr, total_bytes); + nr_bytes = target_read (current_top_target (), TARGET_OBJECT_MEMORY, NULL, + mbuf.data (), addr, total_bytes); if (nr_bytes <= 0) error (_("Unable to read memory.")); @@ -1473,7 +1473,7 @@ mi_cmd_data_read_memory_bytes (const char *command, char **argv, int argc) length = atol (argv[1]); std::vector result - = read_memory_robust (target_stack, addr, length); + = read_memory_robust (current_top_target (), addr, length); if (result.size () == 0) error (_("Unable to read memory.")); diff --git a/gdb/minsyms.c b/gdb/minsyms.c index b98f121d5f..46d6d09153 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -73,8 +73,9 @@ msymbol_is_function (struct objfile *objfile, minimal_symbol *minsym, case mst_data_gnu_ifunc: { struct gdbarch *gdbarch = get_objfile_arch (objfile); - CORE_ADDR pc = gdbarch_convert_from_func_ptr_addr (gdbarch, msym_addr, - target_stack); + CORE_ADDR pc + = gdbarch_convert_from_func_ptr_addr (gdbarch, msym_addr, + current_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 eb21f91c13..a5984dfba3 100644 --- a/gdb/ppc-linux-nat.c +++ b/gdb/ppc-linux-nat.c @@ -1170,7 +1170,7 @@ ppc_linux_get_hwcap (void) { CORE_ADDR field; - if (target_auxv_search (target_stack, AT_HWCAP, &field) != 1) + if (target_auxv_search (current_top_target (), AT_HWCAP, &field) != 1) return 0; return field; diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index 5716f82810..bf111b9d2c 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -1271,7 +1271,7 @@ ppc_linux_spe_context (int wordsize, enum bfd_endian byte_order, /* Look up cached address of thread-local variable. */ if (!ptid_equal (spe_context_cache_ptid, inferior_ptid)) { - struct target_ops *target = target_stack; + struct target_ops *target = current_top_target (); TRY { @@ -1431,7 +1431,7 @@ ppu2spu_sniffer (const struct frame_unwind *self, return 0; xsnprintf (annex, sizeof annex, "%d/regs", data.id); - if (target_read (target_stack, TARGET_OBJECT_SPU, annex, + if (target_read (current_top_target (), TARGET_OBJECT_SPU, annex, data.gprs, 0, sizeof data.gprs) == sizeof data.gprs) { diff --git a/gdb/procfs.c b/gdb/procfs.c index 70619f1c15..6c76b4e82c 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -3894,7 +3894,7 @@ procfs_target::make_corefile_notes (bfd *obfd, int *note_size) &thread_args); note_data = thread_args.note_data; - auxv_len = target_read_alloc (target_stack, TARGET_OBJECT_AUXV, + auxv_len = target_read_alloc (current_top_target (), TARGET_OBJECT_AUXV, NULL, &auxv); if (auxv_len > 0) { diff --git a/gdb/regcache.c b/gdb/regcache.c index 83bcbd22a3..24627c96f7 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -1554,7 +1554,7 @@ cooked_read_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 (target_stack->to_stratum >= process_stratum) + if (current_top_target ()->to_stratum >= process_stratum) error (_("target already pushed")); /* Create a mock environment. An inferior with a thread, with a @@ -1728,7 +1728,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 (target_stack->to_stratum >= process_stratum) + if (current_top_target ()->to_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 e7ade41c34..bc0c8e1292 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -4924,7 +4924,7 @@ remote_target::remote_check_symbols () instead of any data function descriptor. */ sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), sym_addr, - target_stack); + current_top_target ()); xsnprintf (msg, get_remote_packet_size (), "qSymbol:%s:%s", phex_nz (sym_addr, addr_size), &reply[8]); @@ -11392,7 +11392,7 @@ remote_target::memory_map () { std::vector result; gdb::optional text - = target_read_stralloc (target_stack, TARGET_OBJECT_MEMORY_MAP, NULL); + = target_read_stralloc (current_top_target (), TARGET_OBJECT_MEMORY_MAP, NULL); if (text) result = parse_memory_map (text->data ()); @@ -13581,7 +13581,7 @@ traceframe_info_up remote_target::traceframe_info () { gdb::optional text - = target_read_stralloc (target_stack, TARGET_OBJECT_TRACEFRAME_INFO, + = target_read_stralloc (current_top_target (), TARGET_OBJECT_TRACEFRAME_INFO, NULL); if (text) return parse_traceframe_info (text->data ()); @@ -13810,7 +13810,7 @@ static void btrace_read_config (struct btrace_config *conf) { gdb::optional xml - = target_read_stralloc (target_stack, TARGET_OBJECT_BTRACE_CONF, ""); + = target_read_stralloc (current_top_target (), TARGET_OBJECT_BTRACE_CONF, ""); if (xml) parse_xml_btrace_conf (conf, xml->data ()); } @@ -14006,7 +14006,7 @@ remote_target::read_btrace (struct btrace_data *btrace, } gdb::optional xml - = target_read_stralloc (target_stack, TARGET_OBJECT_BTRACE, annex); + = target_read_stralloc (current_top_target (), TARGET_OBJECT_BTRACE, annex); if (!xml) return BTRACE_ERR_UNKNOWN; @@ -14063,7 +14063,7 @@ remote_target::pid_to_exec_file (int pid) xsnprintf (annex, annex_size, "%x", pid); } - filename = target_read_stralloc (target_stack, + filename = target_read_stralloc (current_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 ff4699c191..c73dc0e1cb 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -4702,7 +4702,7 @@ ppc_process_record_op31 (struct gdbarch *gdbarch, struct regcache *regcache, return 0; case 1014: /* Data Cache Block set to Zero */ - if (target_auxv_search (target_stack, AT_DCACHEBSIZE, &at_dcsz) <= 0 + if (target_auxv_search (current_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 3c65c5eaa5..2168a2a503 100644 --- a/gdb/s390-linux-nat.c +++ b/gdb/s390-linux-nat.c @@ -1019,7 +1019,7 @@ s390_linux_nat_target::read_description () { CORE_ADDR hwcap = 0; - target_auxv_search (target_stack, AT_HWCAP, &hwcap); + target_auxv_search (current_top_target (), AT_HWCAP, &hwcap); 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 4af035fbfc..4f1e12a96e 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -661,7 +661,7 @@ s390_load (struct s390_prologue_data *data, if (pv_is_constant (addr)) { struct target_section *secp; - secp = target_section_by_addr (target_stack, addr.k); + secp = target_section_by_addr (current_top_target (), addr.k); if (secp != NULL && (bfd_get_section_flags (secp->the_bfd_section->owner, secp->the_bfd_section) diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c index f3dfdb577c..6e5b8b1326 100644 --- a/gdb/solib-aix.c +++ b/gdb/solib-aix.c @@ -280,7 +280,7 @@ solib_aix_get_library_list (struct inferior *inf, const char *warning_msg) return data->library_list; gdb::optional library_document - = target_read_stralloc (target_stack, TARGET_OBJECT_LIBRARIES_AIX, + = target_read_stralloc (current_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 557fb156b2..e655110d2d 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -497,8 +497,8 @@ darwin_solib_read_all_image_info_addr (struct darwin_info *info) if (TYPE_LENGTH (ptr_type) > sizeof (buf)) return; - len = target_read (target_stack, TARGET_OBJECT_DARWIN_DYLD_INFO, NULL, - buf, 0, TYPE_LENGTH (ptr_type)); + len = target_read (current_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 9868606249..bf643febf8 100644 --- a/gdb/solib-dsbt.c +++ b/gdb/solib-dsbt.c @@ -293,7 +293,7 @@ dsbt_get_initial_loadmaps (void) { struct dsbt_info *info = get_dsbt_info (); gdb::optional buf - = target_read_alloc (target_stack, TARGET_OBJECT_FDPIC, "exec"); + = target_read_alloc (current_top_target (), TARGET_OBJECT_FDPIC, "exec"); if (!buf || buf->empty ()) { @@ -304,7 +304,7 @@ dsbt_get_initial_loadmaps (void) if (solib_dsbt_debug) dsbt_print_loadmap (info->exec_loadmap); - buf = target_read_alloc (target_stack, TARGET_OBJECT_FDPIC, "exec"); + buf = target_read_alloc (current_top_target (), TARGET_OBJECT_FDPIC, "exec"); if (!buf || buf->empty ()) { info->interp_loadmap = NULL; diff --git a/gdb/solib-spu.c b/gdb/solib-spu.c index a0fe8965bf..8419c2c139 100644 --- a/gdb/solib-spu.c +++ b/gdb/solib-spu.c @@ -171,7 +171,7 @@ spu_current_sos (void) ; /* Determine list of SPU ids. */ - size = target_read (target_stack, TARGET_OBJECT_SPU, NULL, + size = target_read (current_top_target (), TARGET_OBJECT_SPU, NULL, buf, 0, sizeof buf); /* Do not add stand-alone SPE executable context as shared library, @@ -206,7 +206,7 @@ spu_current_sos (void) already created the SPE context, but not installed the object-id yet. Skip such entries; we'll be back for them later. */ xsnprintf (annex, sizeof annex, "%d/object-id", fd); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, (gdb_byte *) id, 0, sizeof id); if (len <= 0 || len >= sizeof id) continue; @@ -418,7 +418,7 @@ spu_enable_break (struct objfile *objfile) CORE_ADDR addr = BMSYMBOL_VALUE_ADDRESS (spe_event_sym); addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), addr, - target_stack); + current_top_target ()); create_solib_event_breakpoint (target_gdbarch (), addr); return 1; } diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index f9936b36de..d012f082b8 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -432,11 +432,11 @@ read_program_header (int type, int *p_sect_size, int *p_arch_size, int pt_phdr_p = 0; /* Get required auxv elements from target. */ - if (target_auxv_search (target_stack, AT_PHDR, &at_phdr) <= 0) + if (target_auxv_search (current_top_target (), AT_PHDR, &at_phdr) <= 0) return 0; - if (target_auxv_search (target_stack, AT_PHENT, &at_phent) <= 0) + if (target_auxv_search (current_top_target (), AT_PHENT, &at_phent) <= 0) return 0; - if (target_auxv_search (target_stack, AT_PHNUM, &at_phnum) <= 0) + if (target_auxv_search (current_top_target (), AT_PHNUM, &at_phnum) <= 0) return 0; if (!at_phdr || !at_phnum) return 0; @@ -1244,7 +1244,7 @@ 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 (target_stack, TARGET_OBJECT_LIBRARIES_SVR4, + = target_read_stralloc (current_top_target (), TARGET_OBJECT_LIBRARIES_SVR4, annex); if (!svr4_library_document) return 0; @@ -2217,9 +2217,10 @@ enable_break (struct svr4_info *info, int from_tty) struct obj_section *os; sym_addr = gdbarch_addr_bits_remove - (target_gdbarch (), gdbarch_convert_from_func_ptr_addr (target_gdbarch (), - sym_addr, - target_stack)); + (target_gdbarch (), + gdbarch_convert_from_func_ptr_addr (target_gdbarch (), + sym_addr, + current_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 @@ -2334,7 +2335,7 @@ 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 (target_stack, AT_BASE, &load_addr) > 0) + if (target_auxv_search (current_top_target (), AT_BASE, &load_addr) > 0) { int addr_bit = gdbarch_addr_bit (target_gdbarch ()); @@ -2459,7 +2460,7 @@ enable_break (struct svr4_info *info, int from_tty) sym_addr = BMSYMBOL_VALUE_ADDRESS (msymbol); sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), sym_addr, - target_stack); + current_top_target ()); svr4_create_solib_event_breakpoints (target_gdbarch (), sym_addr); return 1; } @@ -2476,7 +2477,7 @@ enable_break (struct svr4_info *info, int from_tty) sym_addr = BMSYMBOL_VALUE_ADDRESS (msymbol); sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (), sym_addr, - target_stack); + current_top_target ()); svr4_create_solib_event_breakpoints (target_gdbarch (), sym_addr); return 1; } @@ -2571,7 +2572,7 @@ svr4_exec_displacement (CORE_ADDR *displacementp) if ((bfd_get_file_flags (exec_bfd) & DYNAMIC) == 0) return 0; - if (target_auxv_search (target_stack, AT_ENTRY, &entry_point) <= 0) + if (target_auxv_search (current_top_target (), AT_ENTRY, &entry_point) <= 0) return 0; exec_displacement = entry_point - bfd_get_start_address (exec_bfd); diff --git a/gdb/solib-target.c b/gdb/solib-target.c index adbab7ea32..3c9872c116 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -258,7 +258,8 @@ solib_target_current_sos (void) /* Fetch the list of shared libraries. */ gdb::optional library_document - = target_read_stralloc (target_stack, TARGET_OBJECT_LIBRARIES, NULL); + = target_read_stralloc (current_top_target (), TARGET_OBJECT_LIBRARIES, + NULL); if (!library_document) return NULL; diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c index 7300080d8d..0e177734d0 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 = target_stack; + struct target_ops *ops = current_top_target (); gdb_byte buf[8]; int len; diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c index 9fd6a66199..1a7a952867 100644 --- a/gdb/sparc64-tdep.c +++ b/gdb/sparc64-tdep.c @@ -222,10 +222,10 @@ adi_available (void) return proc->stat.is_avail; proc->stat.checked_avail = true; - if (target_auxv_search (target_stack, AT_ADI_BLKSZ, &value) <= 0) + if (target_auxv_search (current_top_target (), AT_ADI_BLKSZ, &value) <= 0) return false; proc->stat.blksize = value; - target_auxv_search (target_stack, AT_ADI_NBITS, &value); + target_auxv_search (current_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/spu-tdep.c b/gdb/spu-tdep.c index 2567c240d4..409e2c2336 100644 --- a/gdb/spu-tdep.c +++ b/gdb/spu-tdep.c @@ -198,7 +198,7 @@ spu_pseudo_register_read_spu (readable_regcache *regcache, const char *regname, return status; xsnprintf (annex, sizeof annex, "%d/%s", (int) id, regname); memset (reg, 0, sizeof reg); - target_read (target_stack, TARGET_OBJECT_SPU, annex, + target_read (current_top_target (), TARGET_OBJECT_SPU, annex, reg, 0, sizeof reg); ul = strtoulst ((char *) reg, NULL, 16); @@ -229,7 +229,7 @@ spu_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, if (status != REG_VALID) return status; xsnprintf (annex, sizeof annex, "%d/fpcr", (int) id); - target_read (target_stack, TARGET_OBJECT_SPU, annex, buf, 0, 16); + target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 16); return status; case SPU_SRR0_REGNUM: @@ -263,7 +263,7 @@ spu_pseudo_register_write_spu (struct regcache *regcache, const char *regname, xsnprintf (annex, sizeof annex, "%d/%s", (int) id, regname); xsnprintf (reg, sizeof reg, "0x%s", phex_nz (extract_unsigned_integer (buf, 4, byte_order), 4)); - target_write (target_stack, TARGET_OBJECT_SPU, annex, + target_write (current_top_target (), TARGET_OBJECT_SPU, annex, (gdb_byte *) reg, 0, strlen (reg)); } @@ -286,7 +286,7 @@ spu_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, case SPU_FPSCR_REGNUM: regcache_raw_read_unsigned (regcache, SPU_ID_REGNUM, &id); xsnprintf (annex, sizeof annex, "%d/fpcr", (int) id); - target_write (target_stack, TARGET_OBJECT_SPU, annex, buf, 0, 16); + target_write (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 16); break; case SPU_SRR0_REGNUM: @@ -2079,7 +2079,7 @@ info_spu_event_command (const char *args, int from_tty) id = get_frame_register_unsigned (frame, SPU_ID_REGNUM); xsnprintf (annex, sizeof annex, "%d/event_status", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, (sizeof (buf) - 1)); if (len <= 0) error (_("Could not read event_status.")); @@ -2087,7 +2087,7 @@ info_spu_event_command (const char *args, int from_tty) event_status = strtoulst ((char *) buf, NULL, 16); xsnprintf (annex, sizeof annex, "%d/event_mask", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, (sizeof (buf) - 1)); if (len <= 0) error (_("Could not read event_mask.")); @@ -2127,7 +2127,8 @@ info_spu_signal_command (const char *args, int from_tty) id = get_frame_register_unsigned (frame, SPU_ID_REGNUM); xsnprintf (annex, sizeof annex, "%d/signal1", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, buf, 0, 4); + len = target_read (current_top_target (), TARGET_OBJECT_SPU, + annex, buf, 0, 4); if (len < 0) error (_("Could not read signal1.")); else if (len == 4) @@ -2137,7 +2138,7 @@ info_spu_signal_command (const char *args, int from_tty) } xsnprintf (annex, sizeof annex, "%d/signal1_type", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, (sizeof (buf) - 1)); if (len <= 0) error (_("Could not read signal1_type.")); @@ -2145,7 +2146,8 @@ info_spu_signal_command (const char *args, int from_tty) signal1_type = strtoulst ((char *) buf, NULL, 16); xsnprintf (annex, sizeof annex, "%d/signal2", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, buf, 0, 4); + len = target_read (current_top_target (), TARGET_OBJECT_SPU, + annex, buf, 0, 4); if (len < 0) error (_("Could not read signal2.")); else if (len == 4) @@ -2155,7 +2157,7 @@ info_spu_signal_command (const char *args, int from_tty) } xsnprintf (annex, sizeof annex, "%d/signal2_type", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, (sizeof (buf) - 1)); if (len <= 0) error (_("Could not read signal2_type.")); @@ -2243,7 +2245,7 @@ info_spu_mailbox_command (const char *args, int from_tty) ui_out_emit_tuple tuple_emitter (current_uiout, "SPUInfoMailbox"); xsnprintf (annex, sizeof annex, "%d/mbox_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, sizeof buf); if (len < 0) error (_("Could not read mbox_info.")); @@ -2252,7 +2254,7 @@ info_spu_mailbox_command (const char *args, int from_tty) "mbox", "SPU Outbound Mailbox"); xsnprintf (annex, sizeof annex, "%d/ibox_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, sizeof buf); if (len < 0) error (_("Could not read ibox_info.")); @@ -2261,7 +2263,7 @@ info_spu_mailbox_command (const char *args, int from_tty) "ibox", "SPU Outbound Interrupt Mailbox"); xsnprintf (annex, sizeof annex, "%d/wbox_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, sizeof buf); if (len < 0) error (_("Could not read wbox_info.")); @@ -2473,7 +2475,7 @@ info_spu_dma_command (const char *args, int from_tty) id = get_frame_register_unsigned (frame, SPU_ID_REGNUM); xsnprintf (annex, sizeof annex, "%d/dma_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 40 + 16 * 32); if (len <= 0) error (_("Could not read dma_info.")); @@ -2550,7 +2552,7 @@ info_spu_proxydma_command (const char *args, int from_tty) id = get_frame_register_unsigned (frame, SPU_ID_REGNUM); xsnprintf (annex, sizeof annex, "%d/proxydma_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 24 + 8 * 32); if (len <= 0) error (_("Could not read proxydma_info.")); diff --git a/gdb/symfile.c b/gdb/symfile.c index a57bd6a593..6555eb23d6 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -864,7 +864,7 @@ init_entry_point_info (struct objfile *objfile) entry_point = gdbarch_convert_from_func_ptr_addr (get_objfile_arch (objfile), entry_point, - target_stack); + current_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 e1f033d1d8..d02909d551 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -4983,9 +4983,10 @@ find_gnu_ifunc (const symbol *sym) if (MSYMBOL_TYPE (minsym) == mst_data_gnu_ifunc) { struct gdbarch *gdbarch = get_objfile_arch (objfile); - msym_addr = gdbarch_convert_from_func_ptr_addr (gdbarch, - msym_addr, - target_stack); + msym_addr + = gdbarch_convert_from_func_ptr_addr (gdbarch, + msym_addr, + current_top_target ()); } if (msym_addr == address) { diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c index 83a6f6cafc..3076d79a13 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -521,11 +521,11 @@ 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 (target_stack); + current_target_desc = target_read_description_xml (current_top_target ()); /* If that failed try a target-specific hook. */ if (current_target_desc == NULL) - current_target_desc = target_read_description (target_stack); + current_target_desc = target_read_description (current_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 8db64d7284..783e59dd55 100644 --- a/gdb/target-memory.c +++ b/gdb/target-memory.c @@ -338,7 +338,7 @@ target_write_memory_blocks (const std::vector &requests, { LONGEST len; - len = target_write_with_progress (target_stack, + len = target_write_with_progress (current_top_target (), TARGET_OBJECT_MEMORY, NULL, iter.data, iter.begin, iter.end - iter.begin, @@ -361,7 +361,7 @@ target_write_memory_blocks (const std::vector &requests, { LONGEST len; - len = target_write_with_progress (target_stack, + len = target_write_with_progress (current_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 d96cdec418..13f7e68fdf 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -123,7 +123,13 @@ static struct target_ops *the_debug_target; /* The target structure we are currently using to talk to a process or file or whatever "inferior" we have. */ -struct target_ops *target_stack; +static target_ops *g_current_top_target; + +target_ops * +current_top_target () +{ + return g_current_top_target; +} /* Command list for target. */ @@ -264,7 +270,7 @@ target_has_all_memory_1 (void) { struct target_ops *t; - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) if (t->has_all_memory ()) return 1; @@ -276,7 +282,7 @@ target_has_memory_1 (void) { struct target_ops *t; - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) if (t->has_memory ()) return 1; @@ -288,7 +294,7 @@ target_has_stack_1 (void) { struct target_ops *t; - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) if (t->has_stack ()) return 1; @@ -300,7 +306,7 @@ target_has_registers_1 (void) { struct target_ops *t; - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) if (t->has_registers ()) return 1; @@ -312,7 +318,7 @@ target_has_execution_1 (ptid_t the_ptid) { struct target_ops *t; - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) if (t->has_execution (the_ptid)) return 1; @@ -395,14 +401,14 @@ add_deprecated_target_alias (const target_info &tinfo, const char *alias) void target_kill (void) { - target_stack->kill (); + current_top_target ()->kill (); } void target_load (const char *arg, int from_tty) { target_dcache_invalidate (); - target_stack->load (arg, from_tty); + current_top_target ()->load (arg, from_tty); } /* Define it. */ @@ -415,7 +421,7 @@ target_terminal_state target_terminal::m_terminal_state void target_terminal::init (void) { - target_stack->terminal_init (); + current_top_target ()->terminal_init (); m_terminal_state = target_terminal_state::is_ours; } @@ -446,7 +452,7 @@ target_terminal::inferior (void) if (inf->terminal_state != target_terminal_state::is_inferior) { - target_stack->terminal_inferior (); + current_top_target ()->terminal_inferior (); inf->terminal_state = target_terminal_state::is_inferior; } @@ -482,7 +488,7 @@ target_terminal::restore_inferior (void) if (inf->terminal_state == target_terminal_state::is_ours_for_output) { set_current_inferior (inf); - target_stack->terminal_inferior (); + current_top_target ()->terminal_inferior (); inf->terminal_state = target_terminal_state::is_inferior; } } @@ -515,7 +521,7 @@ target_terminal_is_ours_kind (target_terminal_state desired_state) if (inf->terminal_state == target_terminal_state::is_inferior) { set_current_inferior (inf); - target_stack->terminal_save_inferior (); + current_top_target ()->terminal_save_inferior (); } } @@ -530,9 +536,9 @@ target_terminal_is_ours_kind (target_terminal_state desired_state) { set_current_inferior (inf); if (desired_state == target_terminal_state::is_ours) - target_stack->terminal_ours (); + current_top_target ()->terminal_ours (); else if (desired_state == target_terminal_state::is_ours_for_output) - target_stack->terminal_ours_for_output (); + current_top_target ()->terminal_ours_for_output (); else gdb_assert_not_reached ("unhandled desired state"); inf->terminal_state = desired_state; @@ -581,7 +587,7 @@ target_terminal::ours_for_output () void target_terminal::info (const char *arg, int from_tty) { - target_stack->terminal_info (arg, from_tty); + current_top_target ()->terminal_info (arg, from_tty); } /* See target.h. */ @@ -589,14 +595,14 @@ target_terminal::info (const char *arg, int from_tty) int target_supports_terminal_ours (void) { - return target_stack->supports_terminal_ours (); + return current_top_target ()->supports_terminal_ours (); } static void tcomplain (void) { error (_("You can't do that when your target is `%s'"), - target_stack->shortname ()); + current_top_target ()->shortname ()); } void @@ -648,7 +654,7 @@ push_target (struct target_ops *t) struct target_ops **cur; /* Find the proper stratum to install this target in. */ - for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath) + for (cur = &g_current_top_target; (*cur) != NULL; cur = &(*cur)->beneath) { if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum) break; @@ -689,7 +695,7 @@ unpush_target (struct target_ops *t) /* Look for the specified target. Note that we assume that a target can only occur once in the target stack. */ - for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath) + for (cur = &g_current_top_target; (*cur) != NULL; cur = &(*cur)->beneath) { if ((*cur) == t) break; @@ -731,8 +737,8 @@ unpush_target_and_assert (struct target_ops *target) void pop_all_targets_above (enum strata above_stratum) { - while ((int) (target_stack->to_stratum) > (int) above_stratum) - unpush_target_and_assert (target_stack); + while ((int) (current_top_target ()->to_stratum) > (int) above_stratum) + unpush_target_and_assert (current_top_target ()); } /* See target.h. */ @@ -740,8 +746,8 @@ pop_all_targets_above (enum strata above_stratum) void pop_all_targets_at_and_above (enum strata stratum) { - while ((int) (target_stack->to_stratum) >= (int) stratum) - unpush_target_and_assert (target_stack); + while ((int) (current_top_target ()->to_stratum) >= (int) stratum) + unpush_target_and_assert (current_top_target ()); } void @@ -757,7 +763,7 @@ target_is_pushed (struct target_ops *t) { struct target_ops *cur; - for (cur = target_stack; cur != NULL; cur = cur->beneath) + for (cur = current_top_target (); cur != NULL; cur = cur->beneath) if (cur == t) return 1; @@ -779,7 +785,7 @@ CORE_ADDR target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset) { volatile CORE_ADDR addr = 0; - struct target_ops *target = target_stack; + struct target_ops *target = current_top_target (); if (gdbarch_fetch_tls_load_module_address_p (target_gdbarch ())) { @@ -1345,7 +1351,7 @@ target_xfer_partial (struct target_ops *ops, int target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) { - if (target_read (target_stack, TARGET_OBJECT_MEMORY, NULL, + if (target_read (current_top_target (), TARGET_OBJECT_MEMORY, NULL, myaddr, memaddr, len) == len) return 0; else @@ -1375,7 +1381,7 @@ 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 (target_stack, TARGET_OBJECT_RAW_MEMORY, NULL, + if (target_read (current_top_target (), TARGET_OBJECT_RAW_MEMORY, NULL, myaddr, memaddr, len) == len) return 0; else @@ -1388,7 +1394,7 @@ 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 (target_stack, TARGET_OBJECT_STACK_MEMORY, NULL, + if (target_read (current_top_target (), TARGET_OBJECT_STACK_MEMORY, NULL, myaddr, memaddr, len) == len) return 0; else @@ -1401,7 +1407,7 @@ 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 (target_stack, TARGET_OBJECT_CODE_MEMORY, NULL, + if (target_read (current_top_target (), TARGET_OBJECT_CODE_MEMORY, NULL, myaddr, memaddr, len) == len) return 0; else @@ -1417,7 +1423,7 @@ 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 (target_stack, TARGET_OBJECT_MEMORY, NULL, + if (target_write (current_top_target (), TARGET_OBJECT_MEMORY, NULL, myaddr, memaddr, len) == len) return 0; else @@ -1433,7 +1439,7 @@ 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 (target_stack, TARGET_OBJECT_RAW_MEMORY, NULL, + if (target_write (current_top_target (), TARGET_OBJECT_RAW_MEMORY, NULL, myaddr, memaddr, len) == len) return 0; else @@ -1445,7 +1451,7 @@ target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len) std::vector target_memory_map (void) { - std::vector result = target_stack->memory_map (); + std::vector result = current_top_target ()->memory_map (); if (result.empty ()) return result; @@ -1475,13 +1481,13 @@ target_memory_map (void) void target_flash_erase (ULONGEST address, LONGEST length) { - target_stack->flash_erase (address, length); + current_top_target ()->flash_erase (address, length); } void target_flash_done (void) { - target_stack->flash_done (); + current_top_target ()->flash_done (); } static void @@ -1936,7 +1942,7 @@ target_insert_breakpoint (struct gdbarch *gdbarch, return 1; } - return target_stack->insert_breakpoint (gdbarch, bp_tgt); + return current_top_target ()->insert_breakpoint (gdbarch, bp_tgt); } /* See target.h. */ @@ -1956,7 +1962,7 @@ target_remove_breakpoint (struct gdbarch *gdbarch, return 1; } - return target_stack->remove_breakpoint (gdbarch, bp_tgt, reason); + return current_top_target ()->remove_breakpoint (gdbarch, bp_tgt, reason); } static void @@ -1969,7 +1975,7 @@ info_target_command (const char *args, int from_tty) printf_unfiltered (_("Symbols from \"%s\".\n"), objfile_name (symfile_objfile)); - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) { if (!t->has_memory ()) continue; @@ -2105,7 +2111,7 @@ target_detach (inferior *inf, int from_tty) prepare_for_detach (); - target_stack->detach (inf, from_tty); + current_top_target ()->detach (inf, from_tty); } void @@ -2116,7 +2122,7 @@ target_disconnect (const char *args, int from_tty) disconnecting. */ remove_breakpoints (); - target_stack->disconnect (args, from_tty); + current_top_target ()->disconnect (args, from_tty); } /* See target/target.h. */ @@ -2124,7 +2130,7 @@ target_disconnect (const char *args, int from_tty) ptid_t target_wait (ptid_t ptid, struct target_waitstatus *status, int options) { - return target_stack->wait (ptid, status, options); + return current_top_target ()->wait (ptid, status, options); } /* See target.h. */ @@ -2141,13 +2147,13 @@ default_target_wait (struct target_ops *ops, const char * target_pid_to_str (ptid_t ptid) { - return target_stack->pid_to_str (ptid); + return current_top_target ()->pid_to_str (ptid); } const char * target_thread_name (struct thread_info *info) { - return target_stack->thread_name (info); + return current_top_target ()->thread_name (info); } struct thread_info * @@ -2155,7 +2161,7 @@ target_thread_handle_to_thread_info (const gdb_byte *thread_handle, int handle_len, struct inferior *inf) { - return target_stack->thread_handle_to_thread_info (thread_handle, + return current_top_target ()->thread_handle_to_thread_info (thread_handle, handle_len, inf); } @@ -2164,7 +2170,7 @@ target_resume (ptid_t ptid, int step, enum gdb_signal signal) { target_dcache_invalidate (); - target_stack->resume (ptid, step, signal); + current_top_target ()->resume (ptid, step, signal); registers_changed_ptid (ptid); /* We only set the internal executing state here. The user/frontend @@ -2184,7 +2190,7 @@ target_commit_resume (void) if (defer_target_commit_resume) return; - target_stack->commit_resume (); + current_top_target ()->commit_resume (); } /* See target.h. */ @@ -2198,13 +2204,13 @@ make_scoped_defer_target_commit_resume () void target_pass_signals (int numsigs, unsigned char *pass_signals) { - target_stack->pass_signals (numsigs, pass_signals); + current_top_target ()->pass_signals (numsigs, pass_signals); } void target_program_signals (int numsigs, unsigned char *program_signals) { - target_stack->program_signals (numsigs, program_signals); + current_top_target ()->program_signals (numsigs, program_signals); } static int @@ -2222,7 +2228,7 @@ default_follow_fork (struct target_ops *self, int follow_child, int target_follow_fork (int follow_child, int detach_fork) { - return target_stack->follow_fork (follow_child, detach_fork); + return current_top_target ()->follow_fork (follow_child, detach_fork); } /* Target wrapper for follow exec hook. */ @@ -2230,7 +2236,7 @@ target_follow_fork (int follow_child, int detach_fork) void target_follow_exec (struct inferior *inf, char *execd_pathname) { - target_stack->follow_exec (inf, execd_pathname); + current_top_target ()->follow_exec (inf, execd_pathname); } static void @@ -2244,7 +2250,7 @@ void target_mourn_inferior (ptid_t ptid) { gdb_assert (ptid_equal (ptid, inferior_ptid)); - target_stack->mourn_inferior (); + current_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 @@ -2371,7 +2377,7 @@ default_search_memory (struct target_ops *self, CORE_ADDR *found_addrp) { /* Start over from the top of the target stack. */ - return simple_search_memory (target_stack, + return simple_search_memory (current_top_target (), start_addr, search_space_len, pattern, pattern_len, found_addrp); } @@ -2388,7 +2394,7 @@ target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len, const gdb_byte *pattern, ULONGEST pattern_len, CORE_ADDR *found_addrp) { - return target_stack->search_memory (start_addr, search_space_len, + return current_top_target ()->search_memory (start_addr, search_space_len, pattern, pattern_len, found_addrp); } @@ -2401,7 +2407,7 @@ target_require_runnable (void) { struct target_ops *t; - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_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 @@ -2491,7 +2497,7 @@ struct target_ops * find_attach_target (void) { /* If a target on the current stack can attach, use it. */ - for (target_ops *t = target_stack; t != NULL; t = t->beneath) + for (target_ops *t = current_top_target (); t != NULL; t = t->beneath) { if (t->can_attach ()) return t; @@ -2507,7 +2513,7 @@ struct target_ops * find_run_target (void) { /* If a target on the current stack can run, use it. */ - for (target_ops *t = target_stack; t != NULL; t = t->beneath) + for (target_ops *t = current_top_target (); t != NULL; t = t->beneath) { if (t->can_create_inferior ()) return t; @@ -2566,7 +2572,7 @@ find_default_supports_disable_randomization (struct target_ops *self) int target_supports_disable_randomization (void) { - return target_stack->supports_disable_randomization (); + return current_top_target ()->supports_disable_randomization (); } /* See target/target.h. */ @@ -2574,7 +2580,7 @@ target_supports_disable_randomization (void) int target_supports_multi_process (void) { - return target_stack->supports_multi_process (); + return current_top_target ()->supports_multi_process (); } /* See target.h. */ @@ -2621,7 +2627,7 @@ target_thread_address_space (ptid_t ptid) { struct address_space *aspace; - aspace = target_stack->thread_address_space (ptid); + aspace = current_top_target ()->thread_address_space (ptid); gdb_assert (aspace != NULL); return aspace; @@ -2668,7 +2674,7 @@ target_can_run () { struct target_ops *t; - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) { if (t->can_run ()) return 1; @@ -3235,7 +3241,7 @@ find_target_at (enum strata stratum) { struct target_ops *t; - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) if (t->to_stratum == stratum) return t; @@ -3385,13 +3391,13 @@ target_close (struct target_ops *targ) int target_thread_alive (ptid_t ptid) { - return target_stack->thread_alive (ptid); + return current_top_target ()->thread_alive (ptid); } void target_update_thread_list (void) { - target_stack->update_thread_list (); + current_top_target ()->update_thread_list (); } void @@ -3403,7 +3409,7 @@ target_stop (ptid_t ptid) return; } - target_stack->stop (ptid); + current_top_target ()->stop (ptid); } void @@ -3415,7 +3421,7 @@ target_interrupt () return; } - target_stack->interrupt (); + current_top_target ()->interrupt (); } /* See target.h. */ @@ -3423,7 +3429,7 @@ target_interrupt () void target_pass_ctrlc (void) { - target_stack->pass_ctrlc (); + current_top_target ()->pass_ctrlc (); } /* See target.h. */ @@ -3518,7 +3524,7 @@ target_options_to_string (int target_options) void target_fetch_registers (struct regcache *regcache, int regno) { - target_stack->fetch_registers (regcache, regno); + current_top_target ()->fetch_registers (regcache, regno); if (targetdebug) regcache->debug_print_register ("target_fetch_registers", regno); } @@ -3529,7 +3535,7 @@ target_store_registers (struct regcache *regcache, int regno) if (!may_write_registers) error (_("Writing to registers is not allowed (regno %d)"), regno); - target_stack->store_registers (regcache, regno); + current_top_target ()->store_registers (regcache, regno); if (targetdebug) { regcache->debug_print_register ("target_store_registers", regno); @@ -3539,7 +3545,7 @@ target_store_registers (struct regcache *regcache, int regno) int target_core_of_thread (ptid_t ptid) { - return target_stack->core_of_thread (ptid); + return current_top_target ()->core_of_thread (ptid); } int @@ -3577,14 +3583,14 @@ 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 (target_stack, + return simple_verify_memory (current_top_target (), data, memaddr, size); } int target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size) { - return target_stack->verify_memory (data, memaddr, size); + return current_top_target ()->verify_memory (data, memaddr, size); } /* The documentation for this function is in its prototype declaration in @@ -3594,7 +3600,7 @@ int target_insert_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, enum target_hw_bp_type rw) { - return target_stack->insert_mask_watchpoint (addr, mask, rw); + return current_top_target ()->insert_mask_watchpoint (addr, mask, rw); } /* The documentation for this function is in its prototype declaration in @@ -3604,7 +3610,7 @@ int target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, enum target_hw_bp_type rw) { - return target_stack->remove_mask_watchpoint (addr, mask, rw); + return current_top_target ()->remove_mask_watchpoint (addr, mask, rw); } /* The documentation for this function is in its prototype declaration @@ -3613,7 +3619,7 @@ target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask) { - return target_stack->masked_watch_num_registers (addr, mask); + return current_top_target ()->masked_watch_num_registers (addr, mask); } /* The documentation for this function is in its prototype declaration @@ -3622,7 +3628,7 @@ target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask) int target_ranged_break_num_registers (void) { - return target_stack->ranged_break_num_registers (); + return current_top_target ()->ranged_break_num_registers (); } /* See target.h. */ @@ -3630,7 +3636,7 @@ target_ranged_break_num_registers (void) struct btrace_target_info * target_enable_btrace (ptid_t ptid, const struct btrace_config *conf) { - return target_stack->enable_btrace (ptid, conf); + return current_top_target ()->enable_btrace (ptid, conf); } /* See target.h. */ @@ -3638,7 +3644,7 @@ target_enable_btrace (ptid_t ptid, const struct btrace_config *conf) void target_disable_btrace (struct btrace_target_info *btinfo) { - target_stack->disable_btrace (btinfo); + current_top_target ()->disable_btrace (btinfo); } /* See target.h. */ @@ -3646,7 +3652,7 @@ target_disable_btrace (struct btrace_target_info *btinfo) void target_teardown_btrace (struct btrace_target_info *btinfo) { - target_stack->teardown_btrace (btinfo); + current_top_target ()->teardown_btrace (btinfo); } /* See target.h. */ @@ -3656,7 +3662,7 @@ target_read_btrace (struct btrace_data *btrace, struct btrace_target_info *btinfo, enum btrace_read_type type) { - return target_stack->read_btrace (btrace, btinfo, type); + return current_top_target ()->read_btrace (btrace, btinfo, type); } /* See target.h. */ @@ -3664,7 +3670,7 @@ target_read_btrace (struct btrace_data *btrace, const struct btrace_config * target_btrace_conf (const struct btrace_target_info *btinfo) { - return target_stack->btrace_conf (btinfo); + return current_top_target ()->btrace_conf (btinfo); } /* See target.h. */ @@ -3672,7 +3678,7 @@ target_btrace_conf (const struct btrace_target_info *btinfo) void target_stop_recording (void) { - target_stack->stop_recording (); + current_top_target ()->stop_recording (); } /* See target.h. */ @@ -3680,7 +3686,7 @@ target_stop_recording (void) void target_save_record (const char *filename) { - target_stack->save_record (filename); + current_top_target ()->save_record (filename); } /* See target.h. */ @@ -3688,7 +3694,7 @@ target_save_record (const char *filename) int target_supports_delete_record () { - return target_stack->supports_delete_record (); + return current_top_target ()->supports_delete_record (); } /* See target.h. */ @@ -3696,7 +3702,7 @@ target_supports_delete_record () void target_delete_record (void) { - target_stack->delete_record (); + current_top_target ()->delete_record (); } /* See target.h. */ @@ -3704,7 +3710,7 @@ target_delete_record (void) enum record_method target_record_method (ptid_t ptid) { - return target_stack->record_method (ptid); + return current_top_target ()->record_method (ptid); } /* See target.h. */ @@ -3712,7 +3718,7 @@ target_record_method (ptid_t ptid) int target_record_is_replaying (ptid_t ptid) { - return target_stack->record_is_replaying (ptid); + return current_top_target ()->record_is_replaying (ptid); } /* See target.h. */ @@ -3720,7 +3726,7 @@ target_record_is_replaying (ptid_t ptid) int target_record_will_replay (ptid_t ptid, int dir) { - return target_stack->record_will_replay (ptid, dir); + return current_top_target ()->record_will_replay (ptid, dir); } /* See target.h. */ @@ -3728,7 +3734,7 @@ target_record_will_replay (ptid_t ptid, int dir) void target_record_stop_replaying (void) { - target_stack->record_stop_replaying (); + current_top_target ()->record_stop_replaying (); } /* See target.h. */ @@ -3736,7 +3742,7 @@ target_record_stop_replaying (void) void target_goto_record_begin (void) { - target_stack->goto_record_begin (); + current_top_target ()->goto_record_begin (); } /* See target.h. */ @@ -3744,7 +3750,7 @@ target_goto_record_begin (void) void target_goto_record_end (void) { - target_stack->goto_record_end (); + current_top_target ()->goto_record_end (); } /* See target.h. */ @@ -3752,7 +3758,7 @@ target_goto_record_end (void) void target_goto_record (ULONGEST insn) { - target_stack->goto_record (insn); + current_top_target ()->goto_record (insn); } /* See target.h. */ @@ -3760,7 +3766,7 @@ target_goto_record (ULONGEST insn) void target_insn_history (int size, gdb_disassembly_flags flags) { - target_stack->insn_history (size, flags); + current_top_target ()->insn_history (size, flags); } /* See target.h. */ @@ -3769,7 +3775,7 @@ void target_insn_history_from (ULONGEST from, int size, gdb_disassembly_flags flags) { - target_stack->insn_history_from (from, size, flags); + current_top_target ()->insn_history_from (from, size, flags); } /* See target.h. */ @@ -3778,7 +3784,7 @@ void target_insn_history_range (ULONGEST begin, ULONGEST end, gdb_disassembly_flags flags) { - target_stack->insn_history_range (begin, end, flags); + current_top_target ()->insn_history_range (begin, end, flags); } /* See target.h. */ @@ -3786,7 +3792,7 @@ target_insn_history_range (ULONGEST begin, ULONGEST end, void target_call_history (int size, record_print_flags flags) { - target_stack->call_history (size, flags); + current_top_target ()->call_history (size, flags); } /* See target.h. */ @@ -3794,7 +3800,7 @@ target_call_history (int size, record_print_flags flags) void target_call_history_from (ULONGEST begin, int size, record_print_flags flags) { - target_stack->call_history_from (begin, size, flags); + current_top_target ()->call_history_from (begin, size, flags); } /* See target.h. */ @@ -3802,7 +3808,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) { - target_stack->call_history_range (begin, end, flags); + current_top_target ()->call_history_range (begin, end, flags); } /* See target.h. */ @@ -3810,7 +3816,7 @@ target_call_history_range (ULONGEST begin, ULONGEST end, record_print_flags flag const struct frame_unwind * target_get_unwinder (void) { - return target_stack->get_unwinder (); + return current_top_target ()->get_unwinder (); } /* See target.h. */ @@ -3818,7 +3824,7 @@ target_get_unwinder (void) const struct frame_unwind * target_get_tailcall_unwinder (void) { - return target_stack->get_tailcall_unwinder (); + return current_top_target ()->get_tailcall_unwinder (); } /* See target.h. */ @@ -3826,7 +3832,7 @@ target_get_tailcall_unwinder (void) void target_prepare_to_generate_core (void) { - target_stack->prepare_to_generate_core (); + current_top_target ()->prepare_to_generate_core (); } /* See target.h. */ @@ -3834,7 +3840,7 @@ target_prepare_to_generate_core (void) void target_done_generating_core (void) { - target_stack->done_generating_core (); + current_top_target ()->done_generating_core (); } @@ -3904,7 +3910,7 @@ maintenance_print_target_stack (const char *cmd, int from_tty) printf_filtered (_("The current target stack is:\n")); - for (t = target_stack; t != NULL; t = t->beneath) + for (t = current_top_target (); t != NULL; t = t->beneath) { if (t->to_stratum == debug_stratum) continue; @@ -3918,7 +3924,7 @@ void target_async (int enable) { infrun_async (enable); - target_stack->async (enable); + current_top_target ()->async (enable); } /* See target.h. */ @@ -3926,7 +3932,7 @@ target_async (int enable) void target_thread_events (int enable) { - target_stack->thread_events (enable); + current_top_target ()->thread_events (enable); } /* Controls if targets can report that they can/are async. This is @@ -3966,7 +3972,7 @@ maint_show_target_async_command (struct ui_file *file, int from_tty, static int target_always_non_stop_p (void) { - return target_stack->always_non_stop_p (); + return current_top_target ()->always_non_stop_p (); } /* See target.h. */ diff --git a/gdb/target.h b/gdb/target.h index e2d1e61cdc..fbd5c53f36 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -1269,12 +1269,12 @@ extern target_ops *get_native_target (); /* 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 struct target_ops *target_stack; +extern target_ops *current_top_target (); /* Define easy words for doing these operations on our current target. */ -#define target_shortname (target_stack->shortname ()) -#define target_longname (target_stack->longname ()) +#define target_shortname (current_top_target ()->shortname ()) +#define target_longname (current_top_target ()->longname ()) /* Does whatever cleanup is required for a target that we are no longer going to be calling. This routine is automatically always @@ -1302,7 +1302,7 @@ extern struct target_ops *find_run_target (void); These targets must set to_attach_no_wait. */ #define target_attach_no_wait() \ - (target_stack->attach_no_wait ()) + (current_top_target ()->attach_no_wait ()) /* The target_attach operation places a process under debugger control, and stops the process. @@ -1310,7 +1310,7 @@ extern struct target_ops *find_run_target (void); This operation provides a target-specific hook that allows the necessary bookkeeping to be performed after an attach completes. */ #define target_post_attach(pid) \ - (target_stack->post_attach) (pid) + (current_top_target ()->post_attach) (pid) /* Display a message indicating we're about to detach from the current inferior process. */ @@ -1392,7 +1392,7 @@ extern void target_store_registers (struct regcache *regcache, int regs); debugged. */ #define target_prepare_to_store(regcache) \ - (target_stack->prepare_to_store) (regcache) + (current_top_target ()->prepare_to_store) (regcache) /* Determine current address space of thread PTID. */ @@ -1413,22 +1413,22 @@ int target_supports_disable_randomization (void); while a trace experiment is running. */ #define target_supports_enable_disable_tracepoint() \ - (target_stack->supports_enable_disable_tracepoint) () + (current_top_target ()->supports_enable_disable_tracepoint) () #define target_supports_string_tracing() \ - (target_stack->supports_string_tracing) () + (current_top_target ()->supports_string_tracing) () /* Returns true if this target can handle breakpoint conditions on its end. */ #define target_supports_evaluation_of_breakpoint_conditions() \ - (target_stack->supports_evaluation_of_breakpoint_conditions) () + (current_top_target ()->supports_evaluation_of_breakpoint_conditions) () /* Returns true if this target can handle breakpoint commands on its end. */ #define target_can_run_breakpoint_commands() \ - (target_stack->can_run_breakpoint_commands) () + (current_top_target ()->can_run_breakpoint_commands) () extern int target_read_string (CORE_ADDR, gdb::unique_xmalloc_ptr *, int, int *); @@ -1511,7 +1511,7 @@ int target_write_memory_blocks /* Print a line about the current target. */ #define target_files_info() \ - (target_stack->files_info) () + (current_top_target ()->files_info) () /* Insert a breakpoint at address BP_TGT->placed_address in the target machine. Returns 0 for success, and returns non-zero or @@ -1561,7 +1561,7 @@ extern void target_load (const char *arg, int from_tty); Such targets will supply an appropriate definition for this function. */ #define target_post_startup_inferior(ptid) \ - (target_stack->post_startup_inferior) (ptid) + (current_top_target ()->post_startup_inferior) (ptid) /* On some targets, we can catch an inferior fork or vfork event when it occurs. These functions insert/remove an already-created @@ -1569,16 +1569,16 @@ extern void target_load (const char *arg, int from_tty); catchpoint type is not supported and -1 for failure. */ #define target_insert_fork_catchpoint(pid) \ - (target_stack->insert_fork_catchpoint) (pid) + (current_top_target ()->insert_fork_catchpoint) (pid) #define target_remove_fork_catchpoint(pid) \ - (target_stack->remove_fork_catchpoint) (pid) + (current_top_target ()->remove_fork_catchpoint) (pid) #define target_insert_vfork_catchpoint(pid) \ - (target_stack->insert_vfork_catchpoint) (pid) + (current_top_target ()->insert_vfork_catchpoint) (pid) #define target_remove_vfork_catchpoint(pid) \ - (target_stack->remove_vfork_catchpoint) (pid) + (current_top_target ()->remove_vfork_catchpoint) (pid) /* If the inferior forks or vforks, this function will be called at the next resume in order to perform any bookkeeping and fiddling @@ -1601,10 +1601,10 @@ void target_follow_exec (struct inferior *inf, char *execd_pathname); catchpoint type is not supported and -1 for failure. */ #define target_insert_exec_catchpoint(pid) \ - (target_stack->insert_exec_catchpoint) (pid) + (current_top_target ()->insert_exec_catchpoint) (pid) #define target_remove_exec_catchpoint(pid) \ - (target_stack->remove_exec_catchpoint) (pid) + (current_top_target ()->remove_exec_catchpoint) (pid) /* Syscall catch. @@ -1623,7 +1623,7 @@ void target_follow_exec (struct inferior *inf, char *execd_pathname); for failure. */ #define target_set_syscall_catchpoint(pid, needed, any_count, syscall_counts) \ - (target_stack->set_syscall_catchpoint) (pid, needed, any_count, \ + (current_top_target ()->set_syscall_catchpoint) (pid, needed, any_count, \ syscall_counts) /* The debugger has completed a blocking wait() call. There is now @@ -1707,7 +1707,7 @@ extern void default_target_pass_ctrlc (struct target_ops *ops); placed in OUTBUF. */ #define target_rcmd(command, outbuf) \ - (target_stack->rcmd) (command, outbuf) + (current_top_target ()->rcmd) (command, outbuf) /* Does the target include all of memory, or only part of it? This @@ -1762,16 +1762,16 @@ extern int default_child_has_execution (ptid_t the_ptid); Can it lock the thread scheduler? */ #define target_can_lock_scheduler \ - (target_stack->get_thread_control_capabilities () & tc_schedlock) + (current_top_target ()->get_thread_control_capabilities () & tc_schedlock) /* Controls whether async mode is permitted. */ extern int target_async_permitted; /* Can the target support asynchronous execution? */ -#define target_can_async_p() (target_stack->can_async_p ()) +#define target_can_async_p() (current_top_target ()->can_async_p ()) /* Is the target in asynchronous execution mode? */ -#define target_is_async_p() (target_stack->is_async_p ()) +#define target_is_async_p() (current_top_target ()->is_async_p ()) /* Enables/disabled async target events. */ extern void target_async (int enable); @@ -1789,7 +1789,7 @@ extern enum auto_boolean target_non_stop_enabled; extern int target_is_non_stop_p (void); #define target_execution_direction() \ - (target_stack->execution_direction ()) + (current_top_target ()->execution_direction ()) /* Converts a process id to a string. Usually, the string just contains `process xyz', but on some systems it may contain @@ -1804,7 +1804,7 @@ extern const char *normal_pid_to_str (ptid_t ptid); is okay. */ #define target_extra_thread_info(TP) \ - (target_stack->extra_thread_info (TP)) + (current_top_target ()->extra_thread_info (TP)) /* Return the thread's name, or NULL if the target is unable to determine it. The returned value must not be freed by the caller. */ @@ -1830,12 +1830,12 @@ extern struct thread_info *target_thread_handle_to_thread_info it must persist. */ #define target_pid_to_exec_file(pid) \ - (target_stack->pid_to_exec_file) (pid) + (current_top_target ()->pid_to_exec_file) (pid) /* See the to_thread_architecture description in struct target_ops. */ #define target_thread_architecture(ptid) \ - (target_stack->thread_architecture (ptid)) + (current_top_target ()->thread_architecture (ptid)) /* * Iterator function for target memory regions. @@ -1845,21 +1845,21 @@ extern struct thread_info *target_thread_handle_to_thread_info */ #define target_find_memory_regions(FUNC, DATA) \ - (target_stack->find_memory_regions) (FUNC, DATA) + (current_top_target ()->find_memory_regions) (FUNC, DATA) /* * Compose corefile .note section. */ #define target_make_corefile_notes(BFD, SIZE_P) \ - (target_stack->make_corefile_notes) (BFD, SIZE_P) + (current_top_target ()->make_corefile_notes) (BFD, SIZE_P) /* Bookmark interfaces. */ #define target_get_bookmark(ARGS, FROM_TTY) \ - (target_stack->get_bookmark) (ARGS, FROM_TTY) + (current_top_target ()->get_bookmark) (ARGS, FROM_TTY) #define target_goto_bookmark(ARG, FROM_TTY) \ - (target_stack->goto_bookmark) (ARG, FROM_TTY) + (current_top_target ()->goto_bookmark) (ARG, FROM_TTY) /* Hardware watchpoint interfaces. */ @@ -1867,32 +1867,32 @@ extern struct thread_info *target_thread_handle_to_thread_info write). Only the INFERIOR_PTID task is being queried. */ #define target_stopped_by_watchpoint() \ - ((target_stack->stopped_by_watchpoint) ()) + ((current_top_target ()->stopped_by_watchpoint) ()) /* Returns non-zero if the target stopped because it executed a software breakpoint instruction. */ #define target_stopped_by_sw_breakpoint() \ - ((target_stack->stopped_by_sw_breakpoint) ()) + ((current_top_target ()->stopped_by_sw_breakpoint) ()) #define target_supports_stopped_by_sw_breakpoint() \ - ((target_stack->supports_stopped_by_sw_breakpoint) ()) + ((current_top_target ()->supports_stopped_by_sw_breakpoint) ()) #define target_stopped_by_hw_breakpoint() \ - ((target_stack->stopped_by_hw_breakpoint) ()) + ((current_top_target ()->stopped_by_hw_breakpoint) ()) #define target_supports_stopped_by_hw_breakpoint() \ - ((target_stack->supports_stopped_by_hw_breakpoint) ()) + ((current_top_target ()->supports_stopped_by_hw_breakpoint) ()) /* Non-zero if we have steppable watchpoints */ #define target_have_steppable_watchpoint \ - (target_stack->have_steppable_watchpoint ()) + (current_top_target ()->have_steppable_watchpoint ()) /* Non-zero if we have continuable watchpoints */ #define target_have_continuable_watchpoint \ - (target_stack->have_continuable_watchpoint ()) + (current_top_target ()->have_continuable_watchpoint ()) /* Provide defaults for hardware watchpoint functions. */ @@ -1909,18 +1909,18 @@ extern struct thread_info *target_thread_handle_to_thread_info this one used so far. */ #define target_can_use_hardware_watchpoint(TYPE,CNT,OTHERTYPE) \ - (target_stack->can_use_hw_breakpoint) ( \ + (current_top_target ()->can_use_hw_breakpoint) ( \ TYPE, CNT, OTHERTYPE) /* Returns the number of debug registers needed to watch the given memory region, or zero if not supported. */ #define target_region_ok_for_hw_watchpoint(addr, len) \ - (target_stack->region_ok_for_hw_watchpoint) (addr, len) + (current_top_target ()->region_ok_for_hw_watchpoint) (addr, len) #define target_can_do_single_step() \ - (target_stack->can_do_single_step) () + (current_top_target ()->can_do_single_step) () /* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes. TYPE is 0 for write, 1 for read, and 2 for read/write accesses. @@ -1929,10 +1929,10 @@ extern struct thread_info *target_thread_handle_to_thread_info -1 for failure. */ #define target_insert_watchpoint(addr, len, type, cond) \ - (target_stack->insert_watchpoint) (addr, len, type, cond) + (current_top_target ()->insert_watchpoint) (addr, len, type, cond) #define target_remove_watchpoint(addr, len, type, cond) \ - (target_stack->remove_watchpoint) (addr, len, type, cond) + (current_top_target ()->remove_watchpoint) (addr, len, type, cond) /* Insert a new masked watchpoint at ADDR using the mask MASK. RW may be hw_read for a read watchpoint, hw_write for a write watchpoint @@ -1956,10 +1956,10 @@ extern int target_remove_mask_watchpoint (CORE_ADDR, CORE_ADDR, message) otherwise. */ #define target_insert_hw_breakpoint(gdbarch, bp_tgt) \ - (target_stack->insert_hw_breakpoint) (gdbarch, bp_tgt) + (current_top_target ()->insert_hw_breakpoint) (gdbarch, bp_tgt) #define target_remove_hw_breakpoint(gdbarch, bp_tgt) \ - (target_stack->remove_hw_breakpoint) (gdbarch, bp_tgt) + (current_top_target ()->remove_hw_breakpoint) (gdbarch, bp_tgt) /* Return number of debug registers needed for a ranged breakpoint, or -1 if ranged breakpoints are not supported. */ @@ -1988,7 +1988,7 @@ extern int target_ranged_break_num_registers (void); For this reason, GDB will still evaluate the condition expression when the watchpoint triggers. */ #define target_can_accel_watchpoint_condition(addr, len, type, cond) \ - (target_stack->can_accel_watchpoint_condition) (addr, len, type, cond) + (current_top_target ()->can_accel_watchpoint_condition) (addr, len, type, cond) /* Return number of debug registers needed for a masked watchpoint, -1 if masked watchpoints are not supported or -2 if the given address @@ -1998,12 +1998,12 @@ extern int target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask); /* Target can execute in reverse? */ #define target_can_execute_reverse \ - target_stack->can_execute_reverse () + current_top_target ()->can_execute_reverse () extern const struct target_desc *target_read_description (struct target_ops *); #define target_get_ada_task_ptid(lwp, tid) \ - (target_stack->get_ada_task_ptid) (lwp,tid) + (current_top_target ()->get_ada_task_ptid) (lwp,tid) /* Utility implementation of searching memory. */ extern int simple_search_memory (struct target_ops* ops, @@ -2025,7 +2025,7 @@ extern int target_search_memory (CORE_ADDR start_addr, /* Return nonzero if the filesystem seen by the current inferior is the local filesystem, zero otherwise. */ #define target_filesystem_is_local() \ - target_stack->filesystem_is_local () + current_top_target ()->filesystem_is_local () /* Open FILENAME on the target, in the filesystem as seen by INF, using FLAGS and MODE. If INF is NULL, use the filesystem seen @@ -2112,100 +2112,100 @@ extern gdb::unique_xmalloc_ptr target_fileio_read_stralloc /* Tracepoint-related operations. */ #define target_trace_init() \ - (target_stack->trace_init) () + (current_top_target ()->trace_init) () #define target_download_tracepoint(t) \ - (target_stack->download_tracepoint) (t) + (current_top_target ()->download_tracepoint) (t) #define target_can_download_tracepoint() \ - (target_stack->can_download_tracepoint) () + (current_top_target ()->can_download_tracepoint) () #define target_download_trace_state_variable(tsv) \ - (target_stack->download_trace_state_variable) (tsv) + (current_top_target ()->download_trace_state_variable) (tsv) #define target_enable_tracepoint(loc) \ - (target_stack->enable_tracepoint) (loc) + (current_top_target ()->enable_tracepoint) (loc) #define target_disable_tracepoint(loc) \ - (target_stack->disable_tracepoint) (loc) + (current_top_target ()->disable_tracepoint) (loc) #define target_trace_start() \ - (target_stack->trace_start) () + (current_top_target ()->trace_start) () #define target_trace_set_readonly_regions() \ - (target_stack->trace_set_readonly_regions) () + (current_top_target ()->trace_set_readonly_regions) () #define target_get_trace_status(ts) \ - (target_stack->get_trace_status) (ts) + (current_top_target ()->get_trace_status) (ts) #define target_get_tracepoint_status(tp,utp) \ - (target_stack->get_tracepoint_status) (tp, utp) + (current_top_target ()->get_tracepoint_status) (tp, utp) #define target_trace_stop() \ - (target_stack->trace_stop) () + (current_top_target ()->trace_stop) () #define target_trace_find(type,num,addr1,addr2,tpp) \ - (target_stack->trace_find) (\ + (current_top_target ()->trace_find) (\ (type), (num), (addr1), (addr2), (tpp)) #define target_get_trace_state_variable_value(tsv,val) \ - (target_stack->get_trace_state_variable_value) ((tsv), (val)) + (current_top_target ()->get_trace_state_variable_value) ((tsv), (val)) #define target_save_trace_data(filename) \ - (target_stack->save_trace_data) (filename) + (current_top_target ()->save_trace_data) (filename) #define target_upload_tracepoints(utpp) \ - (target_stack->upload_tracepoints) (utpp) + (current_top_target ()->upload_tracepoints) (utpp) #define target_upload_trace_state_variables(utsvp) \ - (target_stack->upload_trace_state_variables) (utsvp) + (current_top_target ()->upload_trace_state_variables) (utsvp) #define target_get_raw_trace_data(buf,offset,len) \ - (target_stack->get_raw_trace_data) ((buf), (offset), (len)) + (current_top_target ()->get_raw_trace_data) ((buf), (offset), (len)) #define target_get_min_fast_tracepoint_insn_len() \ - (target_stack->get_min_fast_tracepoint_insn_len) () + (current_top_target ()->get_min_fast_tracepoint_insn_len) () #define target_set_disconnected_tracing(val) \ - (target_stack->set_disconnected_tracing) (val) + (current_top_target ()->set_disconnected_tracing) (val) #define target_set_circular_trace_buffer(val) \ - (target_stack->set_circular_trace_buffer) (val) + (current_top_target ()->set_circular_trace_buffer) (val) #define target_set_trace_buffer_size(val) \ - (target_stack->set_trace_buffer_size) (val) + (current_top_target ()->set_trace_buffer_size) (val) #define target_set_trace_notes(user,notes,stopnotes) \ - (target_stack->set_trace_notes) ((user), (notes), (stopnotes)) + (current_top_target ()->set_trace_notes) ((user), (notes), (stopnotes)) #define target_get_tib_address(ptid, addr) \ - (target_stack->get_tib_address) ((ptid), (addr)) + (current_top_target ()->get_tib_address) ((ptid), (addr)) #define target_set_permissions() \ - (target_stack->set_permissions) () + (current_top_target ()->set_permissions) () #define target_static_tracepoint_marker_at(addr, marker) \ - (target_stack->static_tracepoint_marker_at) (addr, marker) + (current_top_target ()->static_tracepoint_marker_at) (addr, marker) #define target_static_tracepoint_markers_by_strid(marker_id) \ - (target_stack->static_tracepoint_markers_by_strid) (marker_id) + (current_top_target ()->static_tracepoint_markers_by_strid) (marker_id) #define target_traceframe_info() \ - (target_stack->traceframe_info) () + (current_top_target ()->traceframe_info) () #define target_use_agent(use) \ - (target_stack->use_agent) (use) + (current_top_target ()->use_agent) (use) #define target_can_use_agent() \ - (target_stack->can_use_agent) () + (current_top_target ()->can_use_agent) () #define target_augmented_libraries_svr4_read() \ - (target_stack->augmented_libraries_svr4_read) () + (current_top_target ()->augmented_libraries_svr4_read) () /* Command logging facility. */ #define target_log_command(p) \ - (target_stack->log_command) (p) + (current_top_target ()->log_command) (p) extern int target_core_of_thread (ptid_t ptid); diff --git a/gdb/tracefile-tfile.c b/gdb/tracefile-tfile.c index f4fdd3674d..f6844a6ba0 100644 --- a/gdb/tracefile-tfile.c +++ b/gdb/tracefile-tfile.c @@ -307,7 +307,7 @@ tfile_write_tdesc (struct trace_file_writer *self) = (struct tfile_trace_file_writer *) self; gdb::optional tdesc - = target_fetch_description_xml (target_stack); + = target_fetch_description_xml (current_top_target ()); if (!tdesc) return; diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index d99d663895..5af3cfe202 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -3792,7 +3792,7 @@ 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 (target_stack, TARGET_OBJECT_STATIC_TRACE_DATA, + = target_read_alloc (current_top_target (), TARGET_OBJECT_STATIC_TRACE_DATA, NULL); if (buf) { diff --git a/gdb/valops.c b/gdb/valops.c index 62a86c06a3..85aa89efef 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -964,7 +964,7 @@ read_value_memory (struct value *val, LONGEST bit_offset, enum target_xfer_status status; ULONGEST xfered_partial; - status = target_xfer_partial (target_stack, + status = target_xfer_partial (current_top_target (), object, NULL, buffer + xfered_total * unit_size, NULL, memaddr + xfered_total, @@ -1208,7 +1208,7 @@ value_assign (struct value *toval, struct value *fromval) case lval_register: case lval_computed: - gdb::observers::target_changed.notify (target_stack); + gdb::observers::target_changed.notify (current_top_target ()); /* Having destroyed the frame cache, restore the selected frame. */ diff --git a/gdb/valprint.c b/gdb/valprint.c index bed2cecf2c..aa3156ec6a 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -1885,7 +1885,7 @@ print_function_pointer_address (const struct value_print_options *options, { CORE_ADDR func_addr = gdbarch_convert_from_func_ptr_addr (gdbarch, address, - target_stack); + current_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 6bb6b8eb61..47588f2bef 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -3062,7 +3062,7 @@ 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), target_stack)); + (gdbarch, BMSYMBOL_VALUE_ADDRESS (msym), current_top_target ())); } if (arg1p) diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c index eb44d8d407..430d44b2ed 100644 --- a/gdb/windows-tdep.c +++ b/gdb/windows-tdep.c @@ -331,7 +331,7 @@ display_one_tib (ptid_t ptid) return -1; } - if (target_read (target_stack, TARGET_OBJECT_MEMORY, + if (target_read (current_top_target (), TARGET_OBJECT_MEMORY, NULL, tib, thread_local_base, tib_size) != tib_size) { printf_filtered (_("Unable to read thread information "