The s390 versions of fill_gregset / supply_gregset and fill_fpregset /
supply_fpregset declare the data structure to be filled or supplied from
as gregset_t and fpregset_t, respectively, instead of gdb_gregset_t and
gdb_fpregset_t. This is incompatible with the declaration of these
functions in gregset.h.
gdb/ChangeLog:
* s390-linux-nat.c (supply_gregset, fill_gregset, fetch_regs)
(store_regs): Replace gregset_t by gdb_gregset_t.
(supply_fpregset, fill_fpregset, fetch_fpregs, store_fpregs):
Replace fpregset_t by gdb_fpregset_t.
Credit to Andreas Arnez at IBM
---
gdb/s390-linux-nat.c | 34 ++++++++++++++++++----------------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c
index 55a3899..84c304f 100644
--- a/gdb/s390-linux-nat.c
+++ b/gdb/s390-linux-nat.c
@@ -100,7 +100,7 @@ static const struct regset s390_64_gregset =
make them look like 32-bit registers. */
void
-supply_gregset (struct regcache *regcache, const gregset_t *regp)
+supply_gregset (struct regcache *regcache, const gdb_gregset_t *regp)
{
#ifdef __s390x__
struct gdbarch *gdbarch = get_regcache_arch (regcache);
@@ -111,7 +111,7 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp)
gdb_byte buf[4];
regcache_supply_regset (&s390_64_gregset, regcache, -1,
- regp, sizeof (gregset_t));
+ regp, sizeof (gdb_gregset_t));
pswm = extract_unsigned_integer ((const gdb_byte *) regp
+ S390_PSWM_OFFSET, 8, byte_order);
pswa = extract_unsigned_integer ((const gdb_byte *) regp
@@ -126,7 +126,7 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp)
#endif
regcache_supply_regset (&s390_gregset, regcache, -1, regp,
- sizeof (gregset_t));
+ sizeof (gdb_gregset_t));
}
/* Fill register REGNO (if it is a general-purpose register) in
@@ -134,14 +134,15 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp)
do this for all registers. */
void
-fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno)
+fill_gregset (const struct regcache *regcache, gdb_gregset_t *regp,
+ int regno)
{
#ifdef __s390x__
struct gdbarch *gdbarch = regcache->arch ();
if (gdbarch_ptr_bit (gdbarch) == 32)
{
regcache_collect_regset (&s390_64_gregset, regcache, regno,
- regp, sizeof (gregset_t));
+ regp, sizeof (gdb_gregset_t));
if (regno == -1
|| regno == S390_PSWM_REGNUM || regno == S390_PSWA_REGNUM)
@@ -178,26 +179,27 @@ fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno)
#endif
regcache_collect_regset (&s390_gregset, regcache, regno, regp,
- sizeof (gregset_t));
+ sizeof (gdb_gregset_t));
}
/* Fill GDB's register array with the floating-point register values
in *REGP. */
void
-supply_fpregset (struct regcache *regcache, const fpregset_t *regp)
+supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *regp)
{
regcache_supply_regset (&s390_fpregset, regcache, -1, regp,
- sizeof (fpregset_t));
+ sizeof (gdb_fpregset_t));
}
/* Fill register REGNO (if it is a general-purpose register) in
*REGP with the value in GDB's register array. If REGNO is -1,
do this for all registers. */
void
-fill_fpregset (const struct regcache *regcache, fpregset_t *regp, int regno)
+fill_fpregset (const struct regcache *regcache, gdb_fpregset_t *regp,
+ int regno)
{
regcache_collect_regset (&s390_fpregset, regcache, regno, regp,
- sizeof (fpregset_t));
+ sizeof (gdb_fpregset_t));
}
/* Find the TID for the current inferior thread to use with ptrace. */
@@ -217,7 +219,7 @@ s390_inferior_tid (void)
static void
fetch_regs (struct regcache *regcache, int tid)
{
- gregset_t regs;
+ gdb_gregset_t regs;
ptrace_area parea;
parea.len = sizeof (regs);
@@ -226,7 +228,7 @@ fetch_regs (struct regcache *regcache, int tid)
if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea, 0) < 0)
perror_with_name (_("Couldn't get registers"));
- supply_gregset (regcache, (const gregset_t *) ®s);
+ supply_gregset (regcache, (const gdb_gregset_t *) ®s);
}
/* Store all valid general-purpose registers in GDB's register cache
@@ -234,7 +236,7 @@ fetch_regs (struct regcache *regcache, int tid)
static void
store_regs (const struct regcache *regcache, int tid, int regnum)
{
- gregset_t regs;
+ gdb_gregset_t regs;
ptrace_area parea;
parea.len = sizeof (regs);
@@ -254,7 +256,7 @@ store_regs (const struct regcache *regcache, int tid, int regnum)
static void
fetch_fpregs (struct regcache *regcache, int tid)
{
- fpregset_t fpregs;
+ gdb_fpregset_t fpregs;
ptrace_area parea;
parea.len = sizeof (fpregs);
@@ -263,7 +265,7 @@ fetch_fpregs (struct regcache *regcache, int tid)
if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea, 0) < 0)
perror_with_name (_("Couldn't get floating point status"));
- supply_fpregset (regcache, (const fpregset_t *) &fpregs);
+ supply_fpregset (regcache, (const gdb_fpregset_t *) &fpregs);
}
/* Store all valid floating-point registers in GDB's register cache
@@ -271,7 +273,7 @@ fetch_fpregs (struct regcache *regcache, int tid)
static void
store_fpregs (const struct regcache *regcache, int tid, int regnum)
{
- fpregset_t fpregs;
+ gdb_fpregset_t fpregs;
ptrace_area parea;
parea.len = sizeof (fpregs);
--
1.8.5.6