From 55e969c1595191100c7a0f88e33685eaa9d83c71 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Sat, 6 May 2006 23:55:36 +0000 Subject: [PATCH] * linux-nat.c (linux_nat_do_thread_registers): Check for NULL collect_regset method. --- gdb/ChangeLog | 5 +++ gdb/linux-nat.c | 84 +++++++++++++++++++------------------------------ 2 files changed, 38 insertions(+), 51 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9655109a36..bc9ff0a6ad 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2006-05-06 David S. Miller + + * linux-nat.c (linux_nat_do_thread_registers): Check for + NULL collect_regset method. + 2006-05-06 Ulrich Weigand * s390-tdep.c (s390_collect_regset): New function. diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 5a80311808..932119edfc 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -2549,70 +2549,52 @@ linux_nat_do_thread_registers (bfd *obfd, ptid_t ptid, unsigned long lwp = ptid_get_lwp (ptid); struct gdbarch *gdbarch = current_gdbarch; 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); - record_reg_p = 1; - if (core_regset_p) - { - regset = gdbarch_regset_from_core_section (gdbarch, ".reg", - sizeof (gregs)); - if (regset) - regset->collect_regset (regset, current_regcache, -1, - &gregs, sizeof (gregs)); - else - record_reg_p = 0; - } + if (core_regset_p + && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg", + sizeof (gregs))) != NULL + && regset->collect_regset != NULL) + regset->collect_regset (regset, current_regcache, -1, + &gregs, sizeof (gregs)); else fill_gregset (&gregs, -1); - if (record_reg_p) - note_data = (char *) elfcore_write_prstatus (obfd, - note_data, - note_size, - lwp, - stop_signal, &gregs); - - record_reg_p = 1; - if (core_regset_p) - { - regset = gdbarch_regset_from_core_section (gdbarch, ".reg2", - sizeof (fpregs)); - if (regset) - regset->collect_regset (regset, current_regcache, -1, - &fpregs, sizeof (fpregs)); - else - record_reg_p = 0; - } + note_data = (char *) elfcore_write_prstatus (obfd, + note_data, + note_size, + lwp, + stop_signal, &gregs); + + if (core_regset_p + && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg2", + sizeof (fpregs))) != NULL + && regset->collect_regset != NULL) + regset->collect_regset (regset, current_regcache, -1, + &fpregs, sizeof (fpregs)); else fill_fpregset (&fpregs, -1); - if (record_reg_p) - note_data = (char *) elfcore_write_prfpreg (obfd, - note_data, - note_size, - &fpregs, sizeof (fpregs)); + note_data = (char *) elfcore_write_prfpreg (obfd, + note_data, + note_size, + &fpregs, sizeof (fpregs)); #ifdef FILL_FPXREGSET - record_reg_p = 1; - if (core_regset_p) - { - regset = gdbarch_regset_from_core_section (gdbarch, ".reg-xfp", - sizeof (fpxregs)); - if (regset) - regset->collect_regset (regset, current_regcache, -1, - &fpxregs, sizeof (fpxregs)); - else - record_reg_p = 0; - } + if (core_regset_p + && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg-xfp", + sizeof (fpxregs))) != NULL + && regset->collect_regset != NULL) + regset->collect_regset (regset, current_regcache, -1, + &fpxregs, sizeof (fpxregs)); else fill_fpxregset (&fpxregs, -1); - if (record_reg_p) - note_data = (char *) elfcore_write_prxfpreg (obfd, - note_data, - note_size, - &fpxregs, sizeof (fpxregs)); + note_data = (char *) elfcore_write_prxfpreg (obfd, + note_data, + note_size, + &fpxregs, sizeof (fpxregs)); #endif return note_data; } -- 2.34.1