diff options
author | Mark Kettenis <kettenis@gnu.org> | 2004-05-30 18:29:10 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2004-05-30 18:29:10 +0000 |
commit | 448724fb1671f34227233dc5a0bb22c2e62e9c3b (patch) | |
tree | 12cc1bac9576230b7ba1a32f076450343f77b5e7 /gdb/fbsd-proc.c | |
parent | 5ca8ca7c883865ddfb50a05bd35fd99221ef87c0 (diff) | |
download | gdb-448724fb1671f34227233dc5a0bb22c2e62e9c3b.zip gdb-448724fb1671f34227233dc5a0bb22c2e62e9c3b.tar.gz gdb-448724fb1671f34227233dc5a0bb22c2e62e9c3b.tar.bz2 |
* fbsd-proc.c: Include "regcache.h", "regset.h" and
"gdb_assert.h". Con't include "gregset.h".
(fbsd_make_corefile_notes): Use regset-based core file support
instead off fill_gregset and fill_fpregset.
* Makefile.in (fbsd-proc.o): Update dependencies.
Diffstat (limited to 'gdb/fbsd-proc.c')
-rw-r--r-- | gdb/fbsd-proc.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/gdb/fbsd-proc.c b/gdb/fbsd-proc.c index 16813a9..8eed4cc 100644 --- a/gdb/fbsd-proc.c +++ b/gdb/fbsd-proc.c @@ -22,15 +22,16 @@ #include "defs.h" #include "gdbcore.h" #include "inferior.h" -#include "gdb_string.h" +#include "regcache.h" +#include "regset.h" +#include "gdb_assert.h" +#include "gdb_string.h" #include <sys/procfs.h> #include <sys/types.h> #include "elf-bfd.h" -#include "gregset.h" - char * child_pid_to_exec_file (int pid) { @@ -120,21 +121,35 @@ fbsd_find_memory_regions (int (*func) (CORE_ADDR, unsigned long, static char * fbsd_make_corefile_notes (bfd *obfd, int *note_size) { + struct gdbarch *gdbarch = current_gdbarch; + const struct regcache *regcache = current_regcache; gregset_t gregs; fpregset_t fpregs; char *note_data = NULL; Elf_Internal_Ehdr *i_ehdrp; + const struct regset *regset; + size_t size; /* Put a "FreeBSD" label in the ELF header. */ i_ehdrp = elf_elfheader (obfd); i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD; - fill_gregset (&gregs, -1); + gdb_assert (gdbarch_regset_from_core_section_p (gdbarch)); + + size = sizeof gregs; + regset = gdbarch_regset_from_core_section (gdbarch, ".reg", size); + gdb_assert (regset && regset->collect_regset); + regset->collect_regset (regset, regcache, -1, &gregs, size); + note_data = elfcore_write_prstatus (obfd, note_data, note_size, ptid_get_pid (inferior_ptid), stop_signal, &gregs); - fill_fpregset (&fpregs, -1); + size = sizeof fpregs; + regset = gdbarch_regset_from_core_section (gdbarch, ".reg2", size); + gdb_assert (regset && regset->collect_regset); + regset->collect_regset (regset, regcache, -1, &fpregs, size); + note_data = elfcore_write_prfpreg (obfd, note_data, note_size, &fpregs, sizeof (fpregs)); |