diff options
author | David S. Miller <davem@redhat.com> | 2006-05-06 23:55:36 +0000 |
---|---|---|
committer | David S. Miller <davem@redhat.com> | 2006-05-06 23:55:36 +0000 |
commit | 8eb0c45528321c30416991214bc2b3b414bbf386 (patch) | |
tree | 80f682178ecc525d6850990aea9b1520a76ca07c /gdb/linux-nat.c | |
parent | 78e9c2a2f28e91a1889de7004f32215c01208fd3 (diff) | |
download | gdb-8eb0c45528321c30416991214bc2b3b414bbf386.tar.gz |
* linux-nat.c (linux_nat_do_thread_registers): Check for
NULL collect_regset method.
Diffstat (limited to 'gdb/linux-nat.c')
-rw-r--r-- | gdb/linux-nat.c | 84 |
1 files changed, 33 insertions, 51 deletions
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 5a80311808d..932119edfc5 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; } |