summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Deuling <deuling@de.ibm.com>2008-02-18 11:00:02 +0000
committerMarkus Deuling <deuling@de.ibm.com>2008-02-18 11:00:02 +0000
commit847a77a4de8124a280a1403bf556ff52f88ed581 (patch)
treea59d3aa8edcf463f2164544a8a784095e1ad9c36
parent0609a9c769e869c44b2dd495fd769302fdb66368 (diff)
downloadgdb-847a77a4de8124a280a1403bf556ff52f88ed581.tar.gz
* rs6000-nat.c (exec_one_dummy_insn, regmap): Add gdbarch as parameter
and replace current_gdbarch by gdbarch. (store_register): Update call for exec_one_dummy_insn. (fetch_register, store_register): Update call of regmap. * ppcnbsd-nat.c (getregs_supplies, getfpregs_supplies): Add gdbarch as parameter and replace current_gdbarch by gdbarch. (ppcnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture. Update call for getregs_supplies and getfpregs_supplies. (ppcnbsd_fetch_inferior_registers): Likewise. * ppcobsd-nat.c (getfpregs_supplies): Add gdbarch as parameter and replace current_gdbarch by gdbarch. (ppcobsd_fetch_registers, ppcobsd_store_registers): Use get_regcache_arch to get at the current architecture. Update call for getfpregs_supplies.
-rw-r--r--gdb/ChangeLog22
-rw-r--r--gdb/ppcnbsd-nat.c24
-rw-r--r--gdb/ppcobsd-nat.c12
-rw-r--r--gdb/rs6000-nat.c18
4 files changed, 52 insertions, 24 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ba94183b159..7a4182f637b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,27 @@
2008-02-18 Markus Deuling <deuling@de.ibm.com>
+ * rs6000-nat.c (exec_one_dummy_insn, regmap): Add gdbarch as parameter
+ and replace current_gdbarch by gdbarch.
+
+ (store_register): Update call for exec_one_dummy_insn.
+ (fetch_register, store_register): Update call of regmap.
+
+ * ppcnbsd-nat.c (getregs_supplies, getfpregs_supplies): Add gdbarch as
+ parameter and replace current_gdbarch by gdbarch.
+
+ (ppcnbsd_store_inferior_registers): Use get_regcache_arch to get at
+ the current architecture. Update call for getregs_supplies and
+ getfpregs_supplies.
+ (ppcnbsd_fetch_inferior_registers): Likewise.
+
+ * ppcobsd-nat.c (getfpregs_supplies): Add gdbarch as parameter and
+ replace current_gdbarch by gdbarch.
+ (ppcobsd_fetch_registers, ppcobsd_store_registers): Use
+ get_regcache_arch to get at the current architecture. Update call for
+ getfpregs_supplies.
+
+2008-02-18 Markus Deuling <deuling@de.ibm.com>
+
* arch-utils.c (gdbarch_from_bfd): Remove unnecessary {old,new}_gdbarch
variables.
diff --git a/gdb/ppcnbsd-nat.c b/gdb/ppcnbsd-nat.c
index c14d8eddb50..9c851810a1c 100644
--- a/gdb/ppcnbsd-nat.c
+++ b/gdb/ppcnbsd-nat.c
@@ -41,9 +41,9 @@
/* Returns true if PT_GETREGS fetches this register. */
static int
-getregs_supplies (int regnum)
+getregs_supplies (struct gdbarch *gdbarch, int regnum)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
return ((regnum >= tdep->ppc_gp0_regnum
&& regnum < tdep->ppc_gp0_regnum + ppc_num_gprs)
@@ -51,15 +51,15 @@ getregs_supplies (int regnum)
|| regnum == tdep->ppc_cr_regnum
|| regnum == tdep->ppc_xer_regnum
|| regnum == tdep->ppc_ctr_regnum
- || regnum == gdbarch_pc_regnum (current_gdbarch));
+ || regnum == gdbarch_pc_regnum (gdbarch));
}
/* Like above, but for PT_GETFPREGS. */
static int
-getfpregs_supplies (int regnum)
+getfpregs_supplies (struct gdbarch *gdbarch, int regnum)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* FIXME: jimb/2004-05-05: Some PPC variants don't have floating
point registers. Traditionally, GDB's register set has still
@@ -71,7 +71,7 @@ getfpregs_supplies (int regnum)
It's not clear to me how best to update this code, so this assert
will alert the first person to encounter the NetBSD/E500
combination to the problem. */
- gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
+ gdb_assert (ppc_floating_point_unit_p (gdbarch));
return ((regnum >= tdep->ppc_fp0_regnum
&& regnum < tdep->ppc_fp0_regnum + ppc_num_fprs)
@@ -81,7 +81,9 @@ getfpregs_supplies (int regnum)
static void
ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
{
- if (regnum == -1 || getregs_supplies (regnum))
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
+
+ if (regnum == -1 || getregs_supplies (gdbarch, regnum))
{
struct reg regs;
@@ -93,7 +95,7 @@ ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
regnum, &regs, sizeof regs);
}
- if (regnum == -1 || getfpregs_supplies (regnum))
+ if (regnum == -1 || getfpregs_supplies (gdbarch, regnum))
{
struct fpreg fpregs;
@@ -109,7 +111,9 @@ ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
static void
ppcnbsd_store_inferior_registers (struct regcache *regcache, int regnum)
{
- if (regnum == -1 || getregs_supplies (regnum))
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
+
+ if (regnum == -1 || getregs_supplies (gdbarch, regnum))
{
struct reg regs;
@@ -125,7 +129,7 @@ ppcnbsd_store_inferior_registers (struct regcache *regcache, int regnum)
perror_with_name (_("Couldn't write registers"));
}
- if (regnum == -1 || getfpregs_supplies (regnum))
+ if (regnum == -1 || getfpregs_supplies (gdbarch, regnum))
{
struct fpreg fpregs;
diff --git a/gdb/ppcobsd-nat.c b/gdb/ppcobsd-nat.c
index ae0deb4202b..6203b50e991 100644
--- a/gdb/ppcobsd-nat.c
+++ b/gdb/ppcobsd-nat.c
@@ -45,9 +45,9 @@
/* Returns true if PT_GETFPREGS fetches this register. */
static int
-getfpregs_supplies (int regnum)
+getfpregs_supplies (struct gdbarch *gdbarch, int regnum)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* FIXME: jimb/2004-05-05: Some PPC variants don't have floating
point registers. Traditionally, GDB's register set has still
@@ -59,7 +59,7 @@ getfpregs_supplies (int regnum)
It's not clear to me how best to update this code, so this assert
will alert the first person to encounter the NetBSD/E500
combination to the problem. */
- gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
+ gdb_assert (ppc_floating_point_unit_p (gdbarch));
return ((regnum >= tdep->ppc_fp0_regnum
&& regnum < tdep->ppc_fp0_regnum + ppc_num_fprs)
@@ -88,7 +88,8 @@ ppcobsd_fetch_registers (struct regcache *regcache, int regnum)
#endif
#ifdef PT_GETFPREGS
- if (regnum == -1 || getfpregs_supplies (regnum))
+ if (regnum == -1
+ || getfpregs_supplies (get_regcache_arch (regcache), regnum))
{
struct fpreg fpregs;
@@ -126,7 +127,8 @@ ppcobsd_store_registers (struct regcache *regcache, int regnum)
perror_with_name (_("Couldn't write registers"));
#ifdef PT_GETFPREGS
- if (regnum == -1 || getfpregs_supplies (regnum))
+ if (regnum == -1
+ || getfpregs_supplies (get_regcache_arch (regcache), regnum))
{
struct fpreg fpregs;
diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c
index 02a7946a241..2a180be0186 100644
--- a/gdb/rs6000-nat.c
+++ b/gdb/rs6000-nat.c
@@ -130,7 +130,7 @@ static int objfile_symbol_add (void *);
static void vmap_symtab (struct vmap *);
-static void exec_one_dummy_insn (void);
+static void exec_one_dummy_insn (struct gdbarch *);
extern void fixup_breakpoints (CORE_ADDR low, CORE_ADDR high, CORE_ADDR delta);
@@ -140,9 +140,9 @@ extern void fixup_breakpoints (CORE_ADDR low, CORE_ADDR high, CORE_ADDR delta);
ISFLOAT to indicate whether REGNO is a floating point register. */
static int
-regmap (int regno, int *isfloat)
+regmap (struct gdbarch *gdbarch, int regno, int *isfloat)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
*isfloat = 0;
if (tdep->ppc_gp0_regnum <= regno
@@ -155,7 +155,7 @@ regmap (int regno, int *isfloat)
*isfloat = 1;
return regno - tdep->ppc_fp0_regnum + FPR0;
}
- else if (regno == gdbarch_pc_regnum (current_gdbarch))
+ else if (regno == gdbarch_pc_regnum (gdbarch))
return IAR;
else if (regno == tdep->ppc_ps_regnum)
return MSR;
@@ -218,7 +218,7 @@ fetch_register (struct regcache *regcache, int regno)
/* Retrieved values may be -1, so infer errors from errno. */
errno = 0;
- nr = regmap (regno, &isfloat);
+ nr = regmap (gdbarch, regno, &isfloat);
/* Floating-point registers. */
if (isfloat)
@@ -279,7 +279,7 @@ store_register (const struct regcache *regcache, int regno)
/* -1 can be a successful return value, so infer errors from errno. */
errno = 0;
- nr = regmap (regno, &isfloat);
+ nr = regmap (gdbarch, regno, &isfloat);
/* Floating-point registers. */
if (isfloat)
@@ -303,7 +303,7 @@ store_register (const struct regcache *regcache, int regno)
Otherwise the following ptrace(2) calls will mess up user stack
since kernel will get confused about the bottom of the stack
(%sp). */
- exec_one_dummy_insn ();
+ exec_one_dummy_insn (gdbarch);
/* The PT_WRITE_GPR operation is rather odd. For 32-bit inferiors,
the register's value is passed by value, but for 64-bit inferiors,
@@ -576,9 +576,9 @@ rs6000_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
including u_area. */
static void
-exec_one_dummy_insn (void)
+exec_one_dummy_insn (struct gdbarch *gdbarch)
{
-#define DUMMY_INSN_ADDR gdbarch_tdep (current_gdbarch)->text_segment_base+0x200
+#define DUMMY_INSN_ADDR gdbarch_tdep (gdbarch)->text_segment_base+0x200
int ret, status, pid;
CORE_ADDR prev_pc;