From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17843 invoked by alias); 26 Aug 2008 17:33:47 -0000 Received: (qmail 17425 invoked by uid 22791); 26 Aug 2008 17:33:40 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate7.de.ibm.com (HELO mtagate7.de.ibm.com) (195.212.29.156) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 26 Aug 2008 17:30:16 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate7.de.ibm.com (8.13.8/8.13.8) with ESMTP id m7QHT85X642582 for ; Tue, 26 Aug 2008 17:29:08 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v9.0) with ESMTP id m7QHT9EQ3551266 for ; Tue, 26 Aug 2008 19:29:09 +0200 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m7QHT8Gf023031 for ; Tue, 26 Aug 2008 19:29:08 +0200 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with SMTP id m7QHT86L023028 for ; Tue, 26 Aug 2008 19:29:08 +0200 Message-Id: <200808261729.m7QHT86L023028@d12av02.megacenter.de.ibm.com> Received: by tuxmaker.boeblingen.de.ibm.com (sSMTP sendmail emulation); Tue, 26 Aug 2008 19:29:08 +0200 Subject: Re: [rfc] Introduce "target_gdbarch" variable To: gdb-patches@sourceware.org Date: Tue, 26 Aug 2008 17:33:00 -0000 From: "Ulrich Weigand" In-Reply-To: <200808131952.m7DJqVoN009120@d12av02.megacenter.de.ibm.com> from "Ulrich Weigand" at Aug 13, 2008 09:52:31 PM X-Mailer: ELM [version 2.5 PL2] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-08/txt/msg00621.txt.bz2 > while moving away from current_gdbarch and towards a per-thread / > per-frame / per-objfile architecture, I noticed a couple of places > where we currently use current_gdbarch that simply do not make sense > in a per-thread / per-frame / per-objfile context. > > For example, the remote target uses "current_gdbarch" to store > basic information about the target connection (layout of various > packets etc). Also, the shared library layer uses "current_gdbarch" > to store the master solib_ops structure. I've now checked in the version below, which adds some more places that should be using a per-target architecture which I missed before. These include addition solib and remote uses, and a number of places where the per-target architecture is explicitly addressed. Re-tested on powerpc-linux, powerpc64-linux, and spu-elf, and by running a --enable-targets=all compile. Bye, Ulrich ChangeLog: * gdbarch.sh (target_gdbarch): New global variable. (deprecated_current_gdbarch_select_hack): Set it. * gdbarch.c, gdbarch.h: Regenerate. * arch-utils.c (gdbarch_update_p): Use target_gdbarch instead of current_gdbarch. * target-descriptions.c (target_find_description): Likewise. * arm-tdep.c (arm_update_current_architecture): Likewise. (show_fp_model, arm_show_abi, arm_show_fallback_mode, arm_show_force_mode): Likewise. * mips-tdep.c (show_mask_address, show_mipsfpu_command, show_mips_abi): Likewise. * mep-tdep.c (me_module_register_set, current_me_module): Likewise. * target.c (target_translate_tls_address): Use target_gdbarch instead of current_gdbarch. * remote.c (struct packet_reg): Likewise. (get_remote_arch_state, packet_reg_from_regnum, packet_reg_from_pnum, remote_check_symbols, remote_wait, remote_address_masked, remote_insert_breakpoint, remote_insert_hw_breakpoint, remote_read_description): Likewise. * remote-m32r-sdi.c (m32r_resume, m32r_wait): Likewise. * remote-mips.c (mips_open, mips_common_breakpoint): Likewise. * cris-tdep.c (cris_can_use_hardware_watchpoint): Likewise. * solib.c (solib_open, solib_map_sections, solib_read_symbols, solib_add, info_sharedlibrary_command, solib_address, solib_create_inferior_hook, in_solib_dynsym_resolve_code, solib_global_lookup): Likewise. * solib-frv.c (enable_break2, frv_relocate_main_executable): Likewise. * solib-irix.c (irix_current_sos, irix_open_symbol_file_object): Likewise. * solib-sunos.c (sunos_solib_create_inferior_hook): Likewise. * solib-svr4.c (exec_entry_point, enable_break, svr4_free_so, set_solib_svr4_fetch_link_map_offsets, svr4_fetch_link_map_offsets): Likewise. * nto-tdep.c (nto_find_and_open_solib, nto_init_solib_absolute_prefix, nto_truncate_ptr): Likewise. * mips-linux-tdep.c (mips_linux_in_dynsym_stub): Likewise. diff -urNp gdb-orig/gdb/arch-utils.c gdb-head/gdb/arch-utils.c --- gdb-orig/gdb/arch-utils.c 2008-08-22 03:25:26.000000000 +0200 +++ gdb-head/gdb/arch-utils.c 2008-08-26 00:41:54.000000000 +0200 @@ -491,7 +491,7 @@ gdbarch_update_p (struct gdbarch_info in /* If it is the same old architecture, accept the request (but don't swap anything). */ - if (new_gdbarch == current_gdbarch) + if (new_gdbarch == target_gdbarch) { if (gdbarch_debug) fprintf_unfiltered (gdb_stdlog, "gdbarch_update_p: " diff -urNp gdb-orig/gdb/arm-tdep.c gdb-head/gdb/arm-tdep.c --- gdb-orig/gdb/arm-tdep.c 2008-08-26 00:05:35.000000000 +0200 +++ gdb-head/gdb/arm-tdep.c 2008-08-26 00:44:45.000000000 +0200 @@ -2704,7 +2704,7 @@ arm_update_current_architecture (void) struct gdbarch_info info; /* If the current architecture is not ARM, we have nothing to do. */ - if (gdbarch_bfd_arch_info (current_gdbarch)->arch != bfd_arch_arm) + if (gdbarch_bfd_arch_info (target_gdbarch)->arch != bfd_arch_arm) return; /* Update the architecture. */ @@ -2738,10 +2738,10 @@ static void show_fp_model (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (target_gdbarch); if (arm_fp_model == ARM_FLOAT_AUTO - && gdbarch_bfd_arch_info (current_gdbarch)->arch == bfd_arch_arm) + && gdbarch_bfd_arch_info (target_gdbarch)->arch == bfd_arch_arm) fprintf_filtered (file, _("\ The current ARM floating point model is \"auto\" (currently \"%s\").\n"), fp_model_strings[tdep->fp_model]); @@ -2775,10 +2775,10 @@ static void arm_show_abi (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (target_gdbarch); if (arm_abi_global == ARM_ABI_AUTO - && gdbarch_bfd_arch_info (current_gdbarch)->arch == bfd_arch_arm) + && gdbarch_bfd_arch_info (target_gdbarch)->arch == bfd_arch_arm) fprintf_filtered (file, _("\ The current ARM ABI is \"auto\" (currently \"%s\").\n"), arm_abi_strings[tdep->arm_abi]); @@ -2791,7 +2791,7 @@ static void arm_show_fallback_mode (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (target_gdbarch); fprintf_filtered (file, _("\ The current execution mode assumed (when symbols are unavailable) is \"%s\".\n"), @@ -2802,7 +2802,7 @@ static void arm_show_force_mode (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (target_gdbarch); fprintf_filtered (file, _("\ The current execution mode assumed (even when symbols are available) is \"%s\".\n"), diff -urNp gdb-orig/gdb/cris-tdep.c gdb-head/gdb/cris-tdep.c --- gdb-orig/gdb/cris-tdep.c 2008-08-26 00:05:35.000000000 +0200 +++ gdb-head/gdb/cris-tdep.c 2008-08-26 00:44:45.000000000 +0200 @@ -498,7 +498,7 @@ crisv32_single_step_through_delay (struc int cris_can_use_hardware_watchpoint (int type, int count, int other) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (target_gdbarch); /* No bookkeeping is done here; it is handled by the remote debug agent. */ diff -urNp gdb-orig/gdb/gdbarch.c gdb-head/gdb/gdbarch.c --- gdb-orig/gdb/gdbarch.c 2008-08-25 22:55:59.000000000 +0200 +++ gdb-head/gdb/gdbarch.c 2008-08-26 00:41:54.000000000 +0200 @@ -377,6 +377,7 @@ struct gdbarch startup_gdbarch = }; struct gdbarch *current_gdbarch = &startup_gdbarch; +struct gdbarch *target_gdbarch = &startup_gdbarch; /* Create a new ``struct gdbarch'' based on information provided by ``struct gdbarch_info''. */ @@ -3666,6 +3667,7 @@ deprecated_current_gdbarch_select_hack ( gdb_assert (current_gdbarch != NULL); gdb_assert (new_gdbarch->initialized_p); current_gdbarch = new_gdbarch; + target_gdbarch = new_gdbarch; observer_notify_architecture_changed (new_gdbarch); registers_changed (); } diff -urNp gdb-orig/gdb/gdbarch.h gdb-head/gdb/gdbarch.h --- gdb-orig/gdb/gdbarch.h 2008-08-22 03:25:27.000000000 +0200 +++ gdb-head/gdb/gdbarch.h 2008-08-26 00:41:54.000000000 +0200 @@ -54,6 +54,7 @@ struct displaced_step_closure; struct core_regset_section; extern struct gdbarch *current_gdbarch; +extern struct gdbarch *target_gdbarch; /* The following are pre-initialized by GDBARCH. */ diff -urNp gdb-orig/gdb/gdbarch.sh gdb-head/gdb/gdbarch.sh --- gdb-orig/gdb/gdbarch.sh 2008-08-25 22:55:59.000000000 +0200 +++ gdb-head/gdb/gdbarch.sh 2008-08-26 00:41:54.000000000 +0200 @@ -822,6 +822,7 @@ struct displaced_step_closure; struct core_regset_section; extern struct gdbarch *current_gdbarch; +extern struct gdbarch *target_gdbarch; EOF # function typedef's @@ -1281,6 +1282,7 @@ cat <initialized_p); current_gdbarch = new_gdbarch; + target_gdbarch = new_gdbarch; observer_notify_architecture_changed (new_gdbarch); registers_changed (); } diff -urNp gdb-orig/gdb/mep-tdep.c gdb-head/gdb/mep-tdep.c --- gdb-orig/gdb/mep-tdep.c 2008-08-26 00:05:35.000000000 +0200 +++ gdb-head/gdb/mep-tdep.c 2008-08-26 00:44:45.000000000 +0200 @@ -264,7 +264,7 @@ me_module_register_set (CONFIG_ATTR me_m mask contains any of the me_module's coprocessor ISAs, specifically excluding the generic coprocessor register sets. */ - CGEN_CPU_DESC desc = gdbarch_tdep (current_gdbarch)->cpu_desc; + CGEN_CPU_DESC desc = gdbarch_tdep (target_gdbarch)->cpu_desc; const CGEN_HW_ENTRY *hw; if (me_module == CONFIG_NONE) @@ -855,7 +855,7 @@ current_me_module () return regval; } else - return gdbarch_tdep (current_gdbarch)->me_module; + return gdbarch_tdep (target_gdbarch)->me_module; } diff -urNp gdb-orig/gdb/mips-linux-tdep.c gdb-head/gdb/mips-linux-tdep.c --- gdb-orig/gdb/mips-linux-tdep.c 2008-08-26 00:04:20.000000000 +0200 +++ gdb-head/gdb/mips-linux-tdep.c 2008-08-26 00:44:45.000000000 +0200 @@ -603,7 +603,7 @@ mips_linux_in_dynsym_stub (CORE_ADDR pc, { unsigned char buf[28], *p; ULONGEST insn, insn1; - int n64 = (mips_abi (current_gdbarch) == MIPS_ABI_N64); + int n64 = (mips_abi (target_gdbarch) == MIPS_ABI_N64); read_memory (pc - 12, buf, 28); diff -urNp gdb-orig/gdb/mips-tdep.c gdb-head/gdb/mips-tdep.c --- gdb-orig/gdb/mips-tdep.c 2008-08-26 00:05:35.000000000 +0200 +++ gdb-head/gdb/mips-tdep.c 2008-08-26 00:44:45.000000000 +0200 @@ -778,7 +778,7 @@ static void show_mask_address (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { - struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + struct gdbarch_tdep *tdep = gdbarch_tdep (target_gdbarch); deprecated_show_value_hack (file, from_tty, c, value); switch (mask_address_var) @@ -4788,7 +4788,7 @@ show_mipsfpu_command (char *args, int fr { char *fpu; - if (gdbarch_bfd_arch_info (current_gdbarch)->arch != bfd_arch_mips) + if (gdbarch_bfd_arch_info (target_gdbarch)->arch != bfd_arch_mips) { printf_unfiltered ("The MIPS floating-point coprocessor is unknown " @@ -4796,7 +4796,7 @@ show_mipsfpu_command (char *args, int fr return; } - switch (MIPS_FPU_TYPE (current_gdbarch)) + switch (MIPS_FPU_TYPE (target_gdbarch)) { case MIPS_FPU_SINGLE: fpu = "single-precision"; @@ -5958,7 +5958,7 @@ show_mips_abi (struct ui_file *file, struct cmd_list_element *ignored_cmd, const char *ignored_value) { - if (gdbarch_bfd_arch_info (current_gdbarch)->arch != bfd_arch_mips) + if (gdbarch_bfd_arch_info (target_gdbarch)->arch != bfd_arch_mips) fprintf_filtered (file, "The MIPS ABI is unknown because the current architecture " @@ -5966,7 +5966,7 @@ show_mips_abi (struct ui_file *file, else { enum mips_abi global_abi = global_mips_abi (); - enum mips_abi actual_abi = mips_abi (current_gdbarch); + enum mips_abi actual_abi = mips_abi (target_gdbarch); const char *actual_abi_str = mips_abi_strings[actual_abi]; if (global_abi == MIPS_ABI_UNKNOWN) diff -urNp gdb-orig/gdb/nto-tdep.c gdb-head/gdb/nto-tdep.c --- gdb-orig/gdb/nto-tdep.c 2008-08-26 00:04:20.000000000 +0200 +++ gdb-head/gdb/nto-tdep.c 2008-08-26 00:44:45.000000000 +0200 @@ -107,14 +107,14 @@ nto_find_and_open_solib (char *solib, un #define PATH_FMT "%s/lib:%s/usr/lib:%s/usr/photon/lib:%s/usr/photon/dll:%s/lib/dll" nto_root = nto_target (); - if (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, "i386") == 0) + if (strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name, "i386") == 0) { arch = "x86"; endian = ""; } - else if (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, + else if (strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name, "rs6000") == 0 - || strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, + || strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name, "powerpc") == 0) { arch = "ppc"; @@ -122,8 +122,8 @@ nto_find_and_open_solib (char *solib, un } else { - arch = gdbarch_bfd_arch_info (current_gdbarch)->arch_name; - endian = gdbarch_byte_order (current_gdbarch) + arch = gdbarch_bfd_arch_info (target_gdbarch)->arch_name; + endian = gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG ? "be" : "le"; } @@ -169,14 +169,14 @@ nto_init_solib_absolute_prefix (void) const char *arch; nto_root = nto_target (); - if (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, "i386") == 0) + if (strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name, "i386") == 0) { arch = "x86"; endian = ""; } - else if (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, + else if (strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name, "rs6000") == 0 - || strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, + || strcmp (gdbarch_bfd_arch_info (target_gdbarch)->arch_name, "powerpc") == 0) { arch = "ppc"; @@ -184,8 +184,8 @@ nto_init_solib_absolute_prefix (void) } else { - arch = gdbarch_bfd_arch_info (current_gdbarch)->arch_name; - endian = gdbarch_byte_order (current_gdbarch) + arch = gdbarch_bfd_arch_info (target_gdbarch)->arch_name; + endian = gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG ? "be" : "le"; } @@ -291,12 +291,12 @@ LM_ADDR (struct so_list *so) static CORE_ADDR nto_truncate_ptr (CORE_ADDR addr) { - if (gdbarch_ptr_bit (current_gdbarch) == sizeof (CORE_ADDR) * 8) + if (gdbarch_ptr_bit (target_gdbarch) == sizeof (CORE_ADDR) * 8) /* We don't need to truncate anything, and the bit twiddling below will fail due to overflow problems. */ return addr; else - return addr & (((CORE_ADDR) 1 << gdbarch_ptr_bit (current_gdbarch)) - 1); + return addr & (((CORE_ADDR) 1 << gdbarch_ptr_bit (target_gdbarch)) - 1); } Elf_Internal_Phdr * diff -urNp gdb-orig/gdb/remote.c gdb-head/gdb/remote.c --- gdb-orig/gdb/remote.c 2008-08-22 03:25:28.000000000 +0200 +++ gdb-head/gdb/remote.c 2008-08-26 00:41:54.000000000 +0200 @@ -274,9 +274,9 @@ struct packet_reg long regnum; /* GDB's internal register number. */ LONGEST pnum; /* Remote protocol register number. */ int in_g_packet; /* Always part of G packet. */ - /* long size in bytes; == register_size (current_gdbarch, regnum); + /* long size in bytes; == register_size (target_gdbarch, regnum); at present. */ - /* char *name; == gdbarch_register_name (current_gdbarch, regnum); + /* char *name; == gdbarch_register_name (target_gdbarch, regnum); at present. */ }; @@ -309,7 +309,7 @@ static struct gdbarch_data *remote_gdbar static struct remote_arch_state * get_remote_arch_state (void) { - return gdbarch_data (current_gdbarch, remote_gdbarch_data_handle); + return gdbarch_data (target_gdbarch, remote_gdbarch_data_handle); } /* Fetch the global remote target state. */ @@ -445,7 +445,7 @@ get_remote_packet_size (void) static struct packet_reg * packet_reg_from_regnum (struct remote_arch_state *rsa, long regnum) { - if (regnum < 0 && regnum >= gdbarch_num_regs (current_gdbarch)) + if (regnum < 0 && regnum >= gdbarch_num_regs (target_gdbarch)) return NULL; else { @@ -459,7 +459,7 @@ static struct packet_reg * packet_reg_from_pnum (struct remote_arch_state *rsa, LONGEST pnum) { int i; - for (i = 0; i < gdbarch_num_regs (current_gdbarch); i++) + for (i = 0; i < gdbarch_num_regs (target_gdbarch); i++) { struct packet_reg *r = &rsa->regs[i]; if (r->pnum == pnum) @@ -2400,7 +2400,7 @@ remote_check_symbols (struct objfile *ob /* If this is a function address, return the start of code instead of any data function descriptor. */ - sym_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch, + sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch, sym_addr, ¤t_target); @@ -3588,10 +3588,10 @@ Packet: '%s'\n"), phex_nz (pnum, 0), p, buf); fieldsize = hex2bin (p, regs, - register_size (current_gdbarch, + register_size (target_gdbarch, reg->regnum)); p += 2 * fieldsize; - if (fieldsize < register_size (current_gdbarch, + if (fieldsize < register_size (target_gdbarch, reg->regnum)) warning (_("Remote reply is too short: %s"), buf); regcache_raw_supply (get_current_regcache (), @@ -4105,7 +4105,7 @@ remote_address_masked (CORE_ADDR addr) int address_size = remote_address_size; /* If "remoteaddresssize" was not set, default to target address size. */ if (!address_size) - address_size = gdbarch_addr_bit (current_gdbarch); + address_size = gdbarch_addr_bit (target_gdbarch); if (address_size > 0 && address_size < (sizeof (ULONGEST) * 8)) @@ -5373,8 +5373,7 @@ remote_insert_breakpoint (struct bp_targ char *p; int bpsize; - gdbarch_breakpoint_from_pc - (current_gdbarch, &addr, &bpsize); + gdbarch_breakpoint_from_pc (target_gdbarch, &addr, &bpsize); rs = get_remote_state (); p = rs->buf; @@ -5576,7 +5575,7 @@ remote_insert_hw_breakpoint (struct bp_t instruction, even though we aren't inserting one ourselves. */ gdbarch_breakpoint_from_pc - (current_gdbarch, &bp_tgt->placed_address, &bp_tgt->placed_size); + (target_gdbarch, &bp_tgt->placed_address, &bp_tgt->placed_size); if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE) return -1; @@ -6505,7 +6504,7 @@ static const struct target_desc * remote_read_description (struct target_ops *target) { struct remote_g_packet_data *data - = gdbarch_data (current_gdbarch, remote_g_packet_data_handle); + = gdbarch_data (target_gdbarch, remote_g_packet_data_handle); if (!VEC_empty (remote_g_packet_guess_s, data->guesses)) { diff -urNp gdb-orig/gdb/remote-m32r-sdi.c gdb-head/gdb/remote-m32r-sdi.c --- gdb-orig/gdb/remote-m32r-sdi.c 2008-08-22 03:25:28.000000000 +0200 +++ gdb-head/gdb/remote-m32r-sdi.c 2008-08-26 00:43:10.000000000 +0200 @@ -481,7 +481,7 @@ m32r_resume (ptid_t ptid, int step, enum else { buf[0] = SDI_WRITE_MEMORY; - if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) + if (gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG) store_long_parameter (buf + 1, pc_addr); else store_long_parameter (buf + 1, pc_addr - 1); @@ -521,7 +521,7 @@ m32r_resume (ptid_t ptid, int step, enum continue; /* Set PBP. */ - if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) + if (gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG) send_three_arg_cmd (SDI_WRITE_MEMORY, 0xffff8000 + 4 * i, 4, 0x00000006); else @@ -548,7 +548,7 @@ m32r_resume (ptid_t ptid, int step, enum store_long_parameter (buf + 5, 4); if ((bp_addr & 2) == 0 && bp_addr != (pc_addr & 0xfffffffc)) { - if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) + if (gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG) { buf[9] = dbt_bp_entry[0]; buf[10] = dbt_bp_entry[1]; @@ -565,7 +565,7 @@ m32r_resume (ptid_t ptid, int step, enum } else { - if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) + if (gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG) { if ((bp_addr & 2) == 0) { @@ -612,7 +612,7 @@ m32r_resume (ptid_t ptid, int step, enum continue; /* DBC register */ - if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) + if (gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG) { switch (ab_type[i]) { @@ -754,7 +754,7 @@ m32r_wait (ptid_t ptid, struct target_wa if (last_pc_addr != 0xffffffff) { buf[0] = SDI_WRITE_MEMORY; - if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) + if (gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG) store_long_parameter (buf + 1, last_pc_addr); else store_long_parameter (buf + 1, last_pc_addr - 1); @@ -783,7 +783,7 @@ m32r_wait (ptid_t ptid, struct target_wa address, we have to take care of it later. */ if ((pc_addr & 0x2) != 0) { - if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) + if (gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG) { if ((bp_data[i][2] & 0x80) != 0) { @@ -845,7 +845,7 @@ m32r_wait (ptid_t ptid, struct target_wa c = serial_readchar (sdi_desc, SDI_TIMEOUT); if (c != '-' && recv_data (buf, 4) != -1) { - if (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) + if (gdbarch_byte_order (target_gdbarch) == BFD_ENDIAN_BIG) { if ((buf[3] & 0x1) == 0x1) hit_watchpoint_addr = ab_address[i]; diff -urNp gdb-orig/gdb/remote-mips.c gdb-head/gdb/remote-mips.c --- gdb-orig/gdb/remote-mips.c 2008-07-19 17:23:19.000000000 +0200 +++ gdb-head/gdb/remote-mips.c 2008-08-26 00:42:36.000000000 +0200 @@ -1593,10 +1593,10 @@ static void mips_open (char *name, int from_tty) { const char *monitor_prompt = NULL; - if (gdbarch_bfd_arch_info (current_gdbarch) != NULL - && gdbarch_bfd_arch_info (current_gdbarch)->arch == bfd_arch_mips) + if (gdbarch_bfd_arch_info (target_gdbarch) != NULL + && gdbarch_bfd_arch_info (target_gdbarch)->arch == bfd_arch_mips) { - switch (gdbarch_bfd_arch_info (current_gdbarch)->mach) + switch (gdbarch_bfd_arch_info (target_gdbarch)->mach) { case bfd_mach_mips4100: case bfd_mach_mips4300: @@ -2417,7 +2417,7 @@ mips_common_breakpoint (int set, CORE_AD int rpid, rerrflg, rresponse, rlen; int nfields; - addr = gdbarch_addr_bits_remove (current_gdbarch, addr); + addr = gdbarch_addr_bits_remove (target_gdbarch, addr); if (mips_monitor == MON_LSI) { diff -urNp gdb-orig/gdb/solib.c gdb-head/gdb/solib.c --- gdb-orig/gdb/solib.c 2008-07-19 17:23:19.000000000 +0200 +++ gdb-head/gdb/solib.c 2008-08-26 00:41:54.000000000 +0200 @@ -142,7 +142,7 @@ The search path for loading non-absolute int solib_open (char *in_pathname, char **found_pathname) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); int found_file = -1; char *temp_pathname = NULL; char *p = in_pathname; @@ -321,7 +321,7 @@ solib_map_sections (void *arg) for (p = so->sections; p < so->sections_end; p++) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); /* Relocate the section binding addresses as recorded in the shared object's file by the base address to which the object was actually @@ -369,7 +369,7 @@ solib_map_sections (void *arg) void free_so (struct so_list *so) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); char *bfd_filename = 0; if (so->sections) @@ -490,7 +490,7 @@ solib_read_symbols (struct so_list *so, static void update_solib_list (int from_tty, struct target_ops *target) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); struct so_list *inferior = ops->current_sos(); struct so_list *gdb, **gdb_link; @@ -705,7 +705,7 @@ solib_add (char *pattern, int from_tty, if (loaded_any_symbols) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); /* Getting new symbols may change our opinion about what is frameless. */ @@ -741,7 +741,7 @@ info_sharedlibrary_command (char *ignore int addr_width; /* "0x", a little whitespace, and two hex digits per byte of pointers. */ - addr_width = 4 + (gdbarch_ptr_bit (current_gdbarch) / 4); + addr_width = 4 + (gdbarch_ptr_bit (target_gdbarch) / 4); update_solib_list (from_tty, 0); @@ -824,7 +824,7 @@ solib_address (CORE_ADDR address) void clear_solib (void) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); /* This function is expected to handle ELF shared libraries. It is also used on Solaris, which can run either ELF or a.out binaries @@ -880,7 +880,7 @@ clear_solib (void) void solib_create_inferior_hook (void) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); ops->solib_create_inferior_hook(); } @@ -903,7 +903,7 @@ solib_create_inferior_hook (void) int in_solib_dynsym_resolve_code (CORE_ADDR pc) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); return ops->in_dynsym_resolve_code (pc); } @@ -973,7 +973,7 @@ solib_global_lookup (const struct objfil const char *linkage_name, const domain_enum domain) { - struct target_so_ops *ops = solib_ops (current_gdbarch); + struct target_so_ops *ops = solib_ops (target_gdbarch); if (ops->lookup_lib_global_symbol != NULL) return ops->lookup_lib_global_symbol (objfile, name, linkage_name, domain); diff -urNp gdb-orig/gdb/solib-frv.c gdb-head/gdb/solib-frv.c --- gdb-orig/gdb/solib-frv.c 2008-08-22 03:25:29.000000000 +0200 +++ gdb-head/gdb/solib-frv.c 2008-08-26 00:41:54.000000000 +0200 @@ -687,7 +687,7 @@ enable_break2 (void) return 0; } - status = frv_fdpic_loadmap_addresses (current_gdbarch, + status = frv_fdpic_loadmap_addresses (target_gdbarch, &interp_loadmap_addr, 0); if (status < 0) { @@ -876,7 +876,7 @@ frv_relocate_main_executable (void) int changed; struct obj_section *osect; - status = frv_fdpic_loadmap_addresses (current_gdbarch, 0, &exec_addr); + status = frv_fdpic_loadmap_addresses (target_gdbarch, 0, &exec_addr); if (status < 0) { diff -urNp gdb-orig/gdb/solib-irix.c gdb-head/gdb/solib-irix.c --- gdb-orig/gdb/solib-irix.c 2008-05-25 18:19:40.000000000 +0200 +++ gdb-head/gdb/solib-irix.c 2008-08-26 00:41:54.000000000 +0200 @@ -505,9 +505,9 @@ irix_current_sos (void) read_memory (debug_base, addr_buf, - gdbarch_addr_bit (current_gdbarch) / TARGET_CHAR_BIT); + gdbarch_addr_bit (target_gdbarch) / TARGET_CHAR_BIT); lma = extract_mips_address (addr_buf, - gdbarch_addr_bit (current_gdbarch) + gdbarch_addr_bit (target_gdbarch) / TARGET_CHAR_BIT); while (lma) @@ -611,9 +611,9 @@ irix_open_symbol_file_object (void *from /* First link map member should be the executable. */ read_memory (debug_base, addr_buf, - gdbarch_addr_bit (current_gdbarch) / TARGET_CHAR_BIT); + gdbarch_addr_bit (target_gdbarch) / TARGET_CHAR_BIT); lma = extract_mips_address (addr_buf, - gdbarch_addr_bit (current_gdbarch) + gdbarch_addr_bit (target_gdbarch) / TARGET_CHAR_BIT); if (lma == 0) return 0; /* failed somehow... */ diff -urNp gdb-orig/gdb/solib-sunos.c gdb-head/gdb/solib-sunos.c --- gdb-orig/gdb/solib-sunos.c 2008-08-22 03:25:29.000000000 +0200 +++ gdb-head/gdb/solib-sunos.c 2008-08-26 00:44:10.000000000 +0200 @@ -780,9 +780,9 @@ sunos_solib_create_inferior_hook (void) the GDB software break point list. Thus we have to adjust the PC here. */ - if (gdbarch_decr_pc_after_break (current_gdbarch)) + if (gdbarch_decr_pc_after_break (target_gdbarch)) { - stop_pc -= gdbarch_decr_pc_after_break (current_gdbarch); + stop_pc -= gdbarch_decr_pc_after_break (target_gdbarch); write_pc (stop_pc); } diff -urNp gdb-orig/gdb/solib-svr4.c gdb-head/gdb/solib-svr4.c --- gdb-orig/gdb/solib-svr4.c 2008-08-22 03:25:29.000000000 +0200 +++ gdb-head/gdb/solib-svr4.c 2008-08-26 00:41:54.000000000 +0200 @@ -909,7 +909,7 @@ exec_entry_point (struct bfd *abfd, stru gdbarch_convert_from_func_ptr_addr(). The method gdbarch_convert_from_func_ptr_addr() is the merely the identify function for targets which don't use function descriptors. */ - return gdbarch_convert_from_func_ptr_addr (current_gdbarch, + return gdbarch_convert_from_func_ptr_addr (target_gdbarch, bfd_get_start_address (abfd), targ); } @@ -987,7 +987,7 @@ enable_break (void) struct obj_section *os; sym_addr = gdbarch_addr_bits_remove - (current_gdbarch, gdbarch_convert_from_func_ptr_addr (current_gdbarch, + (target_gdbarch, gdbarch_convert_from_func_ptr_addr (target_gdbarch, sym_addr, ¤t_target)); @@ -1149,7 +1149,7 @@ enable_break (void) /* Convert 'sym_addr' from a function pointer to an address. Because we pass tmp_bfd_target instead of the current target, this will always produce an unrelocated value. */ - sym_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch, + sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch, sym_addr, tmp_bfd_target); @@ -1455,12 +1455,12 @@ svr4_free_so (struct so_list *so) static CORE_ADDR svr4_truncate_ptr (CORE_ADDR addr) { - if (gdbarch_ptr_bit (current_gdbarch) == sizeof (CORE_ADDR) * 8) + if (gdbarch_ptr_bit (target_gdbarch) == sizeof (CORE_ADDR) * 8) /* We don't need to truncate anything, and the bit twiddling below will fail due to overflow problems. */ return addr; else - return addr & (((CORE_ADDR) 1 << gdbarch_ptr_bit (current_gdbarch)) - 1); + return addr & (((CORE_ADDR) 1 << gdbarch_ptr_bit (target_gdbarch)) - 1); } @@ -1518,7 +1518,7 @@ set_solib_svr4_fetch_link_map_offsets (s static struct link_map_offsets * svr4_fetch_link_map_offsets (void) { - struct solib_svr4_ops *ops = gdbarch_data (current_gdbarch, solib_svr4_data); + struct solib_svr4_ops *ops = gdbarch_data (target_gdbarch, solib_svr4_data); gdb_assert (ops->fetch_link_map_offsets); return ops->fetch_link_map_offsets (); @@ -1529,7 +1529,7 @@ svr4_fetch_link_map_offsets (void) static int svr4_have_link_map_offsets (void) { - struct solib_svr4_ops *ops = gdbarch_data (current_gdbarch, solib_svr4_data); + struct solib_svr4_ops *ops = gdbarch_data (target_gdbarch, solib_svr4_data); return (ops->fetch_link_map_offsets != NULL); } diff -urNp gdb-orig/gdb/target.c gdb-head/gdb/target.c --- gdb-orig/gdb/target.c 2008-08-22 03:25:29.000000000 +0200 +++ gdb-head/gdb/target.c 2008-08-26 00:41:54.000000000 +0200 @@ -826,7 +826,7 @@ target_translate_tls_address (struct obj volatile CORE_ADDR addr = 0; if (target_get_thread_local_address_p () - && gdbarch_fetch_tls_load_module_address_p (current_gdbarch)) + && gdbarch_fetch_tls_load_module_address_p (target_gdbarch)) { ptid_t ptid = inferior_ptid; volatile struct gdb_exception ex; @@ -836,7 +836,7 @@ target_translate_tls_address (struct obj CORE_ADDR lm_addr; /* Fetch the load module address for this objfile. */ - lm_addr = gdbarch_fetch_tls_load_module_address (current_gdbarch, + lm_addr = gdbarch_fetch_tls_load_module_address (target_gdbarch, objfile); /* If it's 0, throw the appropriate exception. */ if (lm_addr == 0) diff -urNp gdb-orig/gdb/target-descriptions.c gdb-head/gdb/target-descriptions.c --- gdb-orig/gdb/target-descriptions.c 2008-08-25 22:55:59.000000000 +0200 +++ gdb-head/gdb/target-descriptions.c 2008-08-26 00:41:54.000000000 +0200 @@ -183,7 +183,7 @@ target_find_description (void) /* The current architecture should not have any target description specified. It should have been cleared, e.g. when we disconnected from the previous target. */ - gdb_assert (gdbarch_target_desc (current_gdbarch) == NULL); + gdb_assert (gdbarch_target_desc (target_gdbarch) == NULL); /* First try to fetch an XML description from the user-specified file. */ @@ -216,7 +216,7 @@ target_find_description (void) { struct tdesc_arch_data *data; - data = gdbarch_data (current_gdbarch, tdesc_data); + data = gdbarch_data (target_gdbarch, tdesc_data); if (tdesc_has_registers (current_target_desc) && data->registers == NULL) warning (_("Target-supplied registers are not supported " -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE Ulrich.Weigand@de.ibm.com