This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[rfc] [03/12] Get rid of current_gdbarch in alpha-{linux-nat,nat,tdep}.c
- From: Markus Deuling <deuling at de dot ibm dot com>
- To: GDB Patches <gdb-patches at sourceware dot org>, Ulrich Weigand <uweigand at de dot ibm dot com>
- Date: Fri, 03 Aug 2007 14:10:06 +0200
- Subject: [rfc] [03/12] Get rid of current_gdbarch in alpha-{linux-nat,nat,tdep}.c
Hi,
this patch gets rid of some of the current_gdbarch's in alpha-{linux-nat,nat,tdep}.c
Is this ok to commit?
ChangeLog:
* alpha-tdep.c (alpha_register_reggroup_p): Replace current_gdbarch by
gdbarch.
* alpha-linux-nat.c (alpha_linux_register_u_offset): Likewise.
(alpha_sigtramp_frame_unwind_cache, alpha_sigtramp_frame_this_id)
(alpha_sigtramp_frame_sniffer, alpha_next_pc): Use FRAME or REGCACHE to
recognize current architecture.
* alpha-nat.c (fetch_osf_core_registers): Likewise.
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
diff -urpN src/gdb/alpha-linux-nat.c dev/gdb/alpha-linux-nat.c
--- src/gdb/alpha-linux-nat.c 2007-06-19 05:22:04.000000000 +0200
+++ dev/gdb/alpha-linux-nat.c 2007-08-03 08:40:35.000000000 +0200
@@ -86,14 +86,14 @@ fill_fpregset (const struct regcache *re
static CORE_ADDR
alpha_linux_register_u_offset (struct gdbarch *gdbarch, int regno, int store_p)
{
- if (regno == gdbarch_pc_regnum (current_gdbarch))
+ if (regno == gdbarch_pc_regnum (gdbarch))
return PC;
if (regno == ALPHA_UNIQUE_REGNUM)
return ALPHA_UNIQUE_PTRACE_ADDR;
- if (regno < gdbarch_fp0_regnum (current_gdbarch))
+ if (regno < gdbarch_fp0_regnum (gdbarch))
return GPR_BASE + regno;
else
- return FPR_BASE + regno - gdbarch_fp0_regnum (current_gdbarch);
+ return FPR_BASE + regno - gdbarch_fp0_regnum (gdbarch);
}
void _initialialize_alpha_linux_nat (void);
diff -urpN src/gdb/alpha-nat.c dev/gdb/alpha-nat.c
--- src/gdb/alpha-nat.c 2007-06-11 11:31:56.000000000 +0200
+++ dev/gdb/alpha-nat.c 2007-08-03 08:39:00.000000000 +0200
@@ -51,6 +51,7 @@ fetch_osf_core_registers (struct regcach
char *core_reg_sect, unsigned core_reg_size,
int which, CORE_ADDR reg_addr)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
int regno;
int addr;
int bad_reg = -1;
@@ -89,7 +90,7 @@ fetch_osf_core_registers (struct regcach
for (regno = 0; regno < ALPHA_NUM_REGS; regno++)
{
- if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
+ if (gdbarch_cannot_fetch_register (gdbarch, regno))
{
regcache_raw_supply (regcache, regno, NULL);
continue;
@@ -114,7 +115,7 @@ fetch_osf_core_registers (struct regcach
if (bad_reg >= 0)
{
error (_("Register %s not found in core file."),
- gdbarch_register_name (current_gdbarch, bad_reg));
+ gdbarch_register_name (gdbarch, bad_reg));
}
}
diff -urpN src/gdb/alpha-tdep.c dev/gdb/alpha-tdep.c
--- src/gdb/alpha-tdep.c 2007-06-19 05:22:04.000000000 +0200
+++ dev/gdb/alpha-tdep.c 2007-08-03 08:35:53.000000000 +0200
@@ -116,8 +116,8 @@ alpha_register_reggroup_p (struct gdbarc
{
/* Filter out any registers eliminated, but whose regnum is
reserved for backward compatibility, e.g. the vfp. */
- if (gdbarch_register_name (current_gdbarch, regnum) == NULL
- || *gdbarch_register_name (current_gdbarch, regnum) == '\0')
+ if (gdbarch_register_name (gdbarch, regnum) == NULL
+ || *gdbarch_register_name (gdbarch, regnum) == '\0')
return 0;
if (group == all_reggroup)
@@ -765,7 +765,7 @@ alpha_sigtramp_frame_unwind_cache (struc
info = FRAME_OBSTACK_ZALLOC (struct alpha_sigtramp_unwind_cache);
*this_prologue_cache = info;
- tdep = gdbarch_tdep (current_gdbarch);
+ tdep = gdbarch_tdep (get_frame_arch (next_frame));
info->sigcontext_addr = tdep->sigcontext_addr (next_frame);
return info;
@@ -809,7 +809,7 @@ alpha_sigtramp_frame_this_id (struct fra
/* If we have dynamic signal trampolines, find their start.
If we do not, then we must assume there is a symbol record
that can provide the start address. */
- tdep = gdbarch_tdep (current_gdbarch);
+ tdep = gdbarch_tdep (get_frame_arch (next_frame));
if (tdep->dynamic_sigtramp_offset)
{
int offset;
@@ -882,6 +882,7 @@ static const struct frame_unwind alpha_s
static const struct frame_unwind *
alpha_sigtramp_frame_sniffer (struct frame_info *next_frame)
{
+ struct gdbarch *gdbarch = get_frame_arch (next_frame);
CORE_ADDR pc = frame_pc_unwind (next_frame);
char *name;
@@ -891,14 +892,14 @@ alpha_sigtramp_frame_sniffer (struct fra
/* We shouldn't even bother to try if the OSABI didn't register a
sigcontext_addr handler or pc_in_sigtramp hander. */
- if (gdbarch_tdep (current_gdbarch)->sigcontext_addr == NULL)
+ if (gdbarch_tdep (gdbarch)->sigcontext_addr == NULL)
return NULL;
- if (gdbarch_tdep (current_gdbarch)->pc_in_sigtramp == NULL)
+ if (gdbarch_tdep (gdbarch)->pc_in_sigtramp == NULL)
return NULL;
/* Otherwise we should be in a signal frame. */
find_pc_partial_function (pc, &name, NULL, NULL);
- if (gdbarch_tdep (current_gdbarch)->pc_in_sigtramp (pc, name))
+ if (gdbarch_tdep (gdbarch)->pc_in_sigtramp (pc, name))
return &alpha_sigtramp_frame_unwind;
return NULL;
@@ -1443,7 +1444,7 @@ alpha_next_pc (struct frame_info *frame,
case 0x33: /* FBLE */
case 0x32: /* FBLT */
case 0x35: /* FBNE */
- regno += gdbarch_fp0_regnum (current_gdbarch);
+ regno += gdbarch_fp0_regnum (get_frame_arch (frame));
}
rav = get_frame_register_signed (frame, regno);