* linux-nat.c (linux_nat_do_thread_registers): Use the
regset_from_core_section infrastructure if the target supports it. * Makefile.in: Update dependencies.
This commit is contained in:
parent
411cb3f932
commit
4f844a660e
|
@ -1,3 +1,10 @@
|
||||||
|
2006-05-05 David S. Miller <davem@sunset.davemloft.net>
|
||||||
|
|
||||||
|
* linux-nat.c (linux_nat_do_thread_registers): Use the
|
||||||
|
regset_from_core_section infrastructure if the target
|
||||||
|
supports it.
|
||||||
|
* Makefile.in: Update dependencies.
|
||||||
|
|
||||||
2006-05-05: Paul Gilliam <pgilliam@us.ibm.com>
|
2006-05-05: Paul Gilliam <pgilliam@us.ibm.com>
|
||||||
|
|
||||||
* ppc-linux-nat.c: Clean up types for ptrace.
|
* ppc-linux-nat.c: Clean up types for ptrace.
|
||||||
|
|
|
@ -2198,8 +2198,8 @@ linux-fork.o: linux-fork.c $(defs_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) \
|
||||||
$(linux_nat_h)
|
$(linux_nat_h)
|
||||||
linux-nat.o: linux-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdb_string_h) \
|
linux-nat.o: linux-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdb_string_h) \
|
||||||
$(gdb_wait_h) $(gdb_assert_h) $(linux_nat_h) $(gdbthread_h) \
|
$(gdb_wait_h) $(gdb_assert_h) $(linux_nat_h) $(gdbthread_h) \
|
||||||
$(gdbcmd_h) $(regcache_h) $(inf_ptrace_h) $(auxv_h) $(elf_bfd_h) \
|
$(gdbcmd_h) $(regcache_h) $(regset_h) $(inf_ptrace_h) $(auxv_h) \
|
||||||
$(gregset_h) $(gdbcore_h) $(gdbthread_h) $(gdb_stat_h) \
|
$(elf_bfd_h) $(gregset_h) $(gdbcore_h) $(gdbthread_h) $(gdb_stat_h) \
|
||||||
$(linux_fork_h)
|
$(linux_fork_h)
|
||||||
linux-thread-db.o: linux-thread-db.c $(defs_h) $(gdb_assert_h) \
|
linux-thread-db.o: linux-thread-db.c $(defs_h) $(gdb_assert_h) \
|
||||||
$(gdb_proc_service_h) $(gdb_thread_db_h) $(bfd_h) $(exceptions_h) \
|
$(gdb_proc_service_h) $(gdb_thread_db_h) $(bfd_h) $(exceptions_h) \
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "gdbthread.h"
|
#include "gdbthread.h"
|
||||||
#include "gdbcmd.h"
|
#include "gdbcmd.h"
|
||||||
#include "regcache.h"
|
#include "regcache.h"
|
||||||
|
#include "regset.h"
|
||||||
#include "inf-ptrace.h"
|
#include "inf-ptrace.h"
|
||||||
#include "auxv.h"
|
#include "auxv.h"
|
||||||
#include <sys/param.h> /* for MAXPATHLEN */
|
#include <sys/param.h> /* for MAXPATHLEN */
|
||||||
|
@ -2535,25 +2536,72 @@ linux_nat_do_thread_registers (bfd *obfd, ptid_t ptid,
|
||||||
gdb_fpxregset_t fpxregs;
|
gdb_fpxregset_t fpxregs;
|
||||||
#endif
|
#endif
|
||||||
unsigned long lwp = ptid_get_lwp (ptid);
|
unsigned long lwp = ptid_get_lwp (ptid);
|
||||||
|
struct gdbarch *gdbarch = current_gdbarch;
|
||||||
|
const struct regset *regset;
|
||||||
|
int core_regset_p, record_reg_p;
|
||||||
|
|
||||||
fill_gregset (&gregs, -1);
|
core_regset_p = gdbarch_regset_from_core_section_p (gdbarch);
|
||||||
note_data = (char *) elfcore_write_prstatus (obfd,
|
record_reg_p = 1;
|
||||||
note_data,
|
if (core_regset_p)
|
||||||
note_size,
|
{
|
||||||
lwp,
|
regset = gdbarch_regset_from_core_section (gdbarch, ".reg",
|
||||||
stop_signal, &gregs);
|
sizeof (gregs));
|
||||||
|
if (regset)
|
||||||
|
regset->collect_regset (regset, current_regcache, -1,
|
||||||
|
&gregs, sizeof (gregs));
|
||||||
|
else
|
||||||
|
record_reg_p = 0;
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fill_fpregset (&fpregs, -1);
|
||||||
|
|
||||||
|
if (record_reg_p)
|
||||||
|
note_data = (char *) elfcore_write_prfpreg (obfd,
|
||||||
|
note_data,
|
||||||
|
note_size,
|
||||||
|
&fpregs, sizeof (fpregs));
|
||||||
|
|
||||||
fill_fpregset (&fpregs, -1);
|
|
||||||
note_data = (char *) elfcore_write_prfpreg (obfd,
|
|
||||||
note_data,
|
|
||||||
note_size,
|
|
||||||
&fpregs, sizeof (fpregs));
|
|
||||||
#ifdef FILL_FPXREGSET
|
#ifdef FILL_FPXREGSET
|
||||||
fill_fpxregset (&fpxregs, -1);
|
record_reg_p = 1;
|
||||||
note_data = (char *) elfcore_write_prxfpreg (obfd,
|
if (core_regset_p)
|
||||||
note_data,
|
{
|
||||||
note_size,
|
regset = gdbarch_regset_from_core_section (gdbarch, ".reg-xfp",
|
||||||
&fpxregs, sizeof (fpxregs));
|
sizeof (fpxregs));
|
||||||
|
if (regset)
|
||||||
|
regset->collect_regset (regset, current_regcache, -1,
|
||||||
|
&fpxregs, sizeof (fpxregs));
|
||||||
|
else
|
||||||
|
record_reg_p = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fill_fpxregset (&fpxregs, -1);
|
||||||
|
|
||||||
|
if (record_reg_p)
|
||||||
|
note_data = (char *) elfcore_write_prxfpreg (obfd,
|
||||||
|
note_data,
|
||||||
|
note_size,
|
||||||
|
&fpxregs, sizeof (fpxregs));
|
||||||
#endif
|
#endif
|
||||||
return note_data;
|
return note_data;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue