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 | |
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')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/Makefile.in | 3 | ||||
-rw-r--r-- | gdb/fbsd-proc.c | 25 |
3 files changed, 28 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2a7600e..b6fce9f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2004-05-30 Mark Kettenis <kettenis@gnu.org> + * 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. + * m88k-tdep.c (m88k_analyze_prologue): Fix handling of branch instructions. (m88k_frame_prev_register): Simplify code a bit. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index b32499b..681e9bd 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1760,7 +1760,8 @@ expprint.o: expprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \ $(value_h) $(language_h) $(parser_defs_h) $(user_regs_h) $(target_h) \ $(gdb_string_h) $(block_h) fbsd-proc.o: fbsd-proc.c $(defs_h) $(gdbcore_h) $(inferior_h) \ - $(gdb_string_h) $(elf_bfd_h) $(gregset_h) + $(regcache_h) $(regset_h) $(gdb_assert_h) $(gdb_string_h) \ + $(elf_bfd_h) f-exp.o: f-exp.c $(defs_h) $(gdb_string_h) $(expression_h) $(value_h) \ $(parser_defs_h) $(language_h) $(f_lang_h) $(bfd_h) $(symfile_h) \ $(objfiles_h) $(block_h) 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)); |