aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/amd64-linux-tdep.c2
-rw-r--r--gdb/i386-linux-tdep.c3
3 files changed, 11 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a2cc9a5..822d0d4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
2015-02-04 Andreas Arnez <arnez@linux.vnet.ibm.com>
+ * amd64-linux-tdep.c (amd64_linux_iterate_over_regset_sections):
+ For ".reg-xstate", explicitly specify the requested section size
+ via X86_XSTATE_SIZE instead of just 0 on input and
+ X86_XSTATE_MAX_SIZE on output.
+ * i386-linux-tdep.c (i386_linux_iterate_over_regset_sections):
+ Likewise.
+
+2015-02-04 Andreas Arnez <arnez@linux.vnet.ibm.com>
+
PR corefiles/17808:
* gdbarch.sh (iterate_over_regset_sections_cb): Document this
function type, particularly its SIZE parameter.
diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
index 42d884e..5db04c0 100644
--- a/gdb/amd64-linux-tdep.c
+++ b/gdb/amd64-linux-tdep.c
@@ -1639,7 +1639,7 @@ amd64_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
cb (".reg", 27 * 8, &i386_gregset, NULL, cb_data);
cb (".reg2", 512, &amd64_fpregset, NULL, cb_data);
- cb (".reg-xstate", regcache ? X86_XSTATE_MAX_SIZE : 0,
+ cb (".reg-xstate", X86_XSTATE_SIZE (tdep->xcr0),
&amd64_linux_xstateregset, "XSAVE extended state", cb_data);
}
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index 8a5209a..4a0ce60 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -690,8 +690,7 @@ i386_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
cb (".reg", 68, &i386_gregset, NULL, cb_data);
if (tdep->xcr0 & X86_XSTATE_AVX)
- /* Use max size for writing, accept any size when reading. */
- cb (".reg-xstate", regcache ? X86_XSTATE_MAX_SIZE : 0,
+ cb (".reg-xstate", X86_XSTATE_SIZE (tdep->xcr0),
&i386_linux_xstateregset, "XSAVE extended state", cb_data);
else if (tdep->xcr0 & X86_XSTATE_SSE)
cb (".reg-xfp", 512, &i386_fpregset, "extended floating-point",