1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
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
---
diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c
index 2c60562..c48a35a 100644
--- a/gdb/s390-linux-nat.c
+++ b/gdb/s390-linux-nat.c
@@ -153,7 +153,7 @@ static s390_linux_nat_target the_s390_linux_nat_target;
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 = regcache->arch ();
@@ -164,7 +164,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
@@ -179,7 +179,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
@@ -187,14 +187,14 @@ 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)
@@ -231,26 +231,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. */
@@ -270,7 +271,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);
@@ -279,7 +280,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
@@ -287,7 +288,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);
@@ -307,7 +308,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);
@@ -316,7 +317,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
@@ -324,7 +325,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);
|