* linux-nat.c (linux_nat_do_thread_registers): Check for

NULL collect_regset method.
This commit is contained in:
David S. Miller 2006-05-06 23:55:36 +00:00
parent 540b8a309d
commit 55e969c159
2 changed files with 37 additions and 50 deletions

View File

@ -1,3 +1,8 @@
2006-05-06 David S. Miller <davem@sunset.davemloft.net>
* linux-nat.c (linux_nat_do_thread_registers): Check for
NULL collect_regset method.
2006-05-06 Ulrich Weigand <uweigand@de.ibm.com> 2006-05-06 Ulrich Weigand <uweigand@de.ibm.com>
* s390-tdep.c (s390_collect_regset): New function. * s390-tdep.c (s390_collect_regset): New function.

View File

@ -2549,70 +2549,52 @@ linux_nat_do_thread_registers (bfd *obfd, ptid_t ptid,
unsigned long lwp = ptid_get_lwp (ptid); unsigned long lwp = ptid_get_lwp (ptid);
struct gdbarch *gdbarch = current_gdbarch; struct gdbarch *gdbarch = current_gdbarch;
const struct regset *regset; const struct regset *regset;
int core_regset_p, record_reg_p; int core_regset_p;
core_regset_p = gdbarch_regset_from_core_section_p (gdbarch); core_regset_p = gdbarch_regset_from_core_section_p (gdbarch);
record_reg_p = 1; if (core_regset_p
if (core_regset_p) && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg",
{ sizeof (gregs))) != NULL
regset = gdbarch_regset_from_core_section (gdbarch, ".reg", && regset->collect_regset != NULL)
sizeof (gregs)); regset->collect_regset (regset, current_regcache, -1,
if (regset) &gregs, sizeof (gregs));
regset->collect_regset (regset, current_regcache, -1,
&gregs, sizeof (gregs));
else
record_reg_p = 0;
}
else else
fill_gregset (&gregs, -1); fill_gregset (&gregs, -1);
if (record_reg_p) note_data = (char *) elfcore_write_prstatus (obfd,
note_data = (char *) elfcore_write_prstatus (obfd, note_data,
note_data, note_size,
note_size, lwp,
lwp, stop_signal, &gregs);
stop_signal, &gregs);
record_reg_p = 1; if (core_regset_p
if (core_regset_p) && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg2",
{ sizeof (fpregs))) != NULL
regset = gdbarch_regset_from_core_section (gdbarch, ".reg2", && regset->collect_regset != NULL)
sizeof (fpregs)); regset->collect_regset (regset, current_regcache, -1,
if (regset) &fpregs, sizeof (fpregs));
regset->collect_regset (regset, current_regcache, -1,
&fpregs, sizeof (fpregs));
else
record_reg_p = 0;
}
else else
fill_fpregset (&fpregs, -1); fill_fpregset (&fpregs, -1);
if (record_reg_p) note_data = (char *) elfcore_write_prfpreg (obfd,
note_data = (char *) elfcore_write_prfpreg (obfd, note_data,
note_data, note_size,
note_size, &fpregs, sizeof (fpregs));
&fpregs, sizeof (fpregs));
#ifdef FILL_FPXREGSET #ifdef FILL_FPXREGSET
record_reg_p = 1; if (core_regset_p
if (core_regset_p) && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg-xfp",
{ sizeof (fpxregs))) != NULL
regset = gdbarch_regset_from_core_section (gdbarch, ".reg-xfp", && regset->collect_regset != NULL)
sizeof (fpxregs)); regset->collect_regset (regset, current_regcache, -1,
if (regset) &fpxregs, sizeof (fpxregs));
regset->collect_regset (regset, current_regcache, -1,
&fpxregs, sizeof (fpxregs));
else
record_reg_p = 0;
}
else else
fill_fpxregset (&fpxregs, -1); fill_fpxregset (&fpxregs, -1);
if (record_reg_p) note_data = (char *) elfcore_write_prxfpreg (obfd,
note_data = (char *) elfcore_write_prxfpreg (obfd, note_data,
note_data, note_size,
note_size, &fpxregs, sizeof (fpxregs));
&fpxregs, sizeof (fpxregs));
#endif #endif
return note_data; return note_data;
} }