diff options
author | Gary Benson <gbenson@redhat.com> | 2015-03-24 14:05:44 +0000 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2015-03-24 14:05:44 +0000 |
commit | 4b134ca10812e550d8d012cd6096f5229d59f7c6 (patch) | |
tree | bb8a594f30a8d3053e61854c64b99df715b12ee6 /gdb/x86-linux-nat.c | |
parent | 34c703da6cb01d8b41e1bfb790c3c2c625088b69 (diff) | |
download | binutils-gdb-4b134ca10812e550d8d012cd6096f5229d59f7c6.tar.gz |
Make lwp_info.arch_private handling shared
This commit moves the code to handle lwp_info.arch_private for
Linux x86 into a new shared file, nat/x86-linux.c.
gdb/ChangeLog:
* nat/x86-linux.h: New file.
* nat/x86-linux.c: Likewise.
* Makefile.in (HFILES_NO_SRCDIR): Add nat/x86-linux.h.
(x86-linux.o): New rule.
* config/i386/linux.mh (NATDEPFILES): Add x86-linux.o.
* config/i386/linux64.mh (NATDEPFILES): Likewise.
* nat/linux-nat.h (struct arch_lwp_info): New forward declaration.
(lwp_set_arch_private_info): New declaration.
(lwp_arch_private_info): Likewise.
* linux-nat.c (lwp_set_arch_private_info): New function.
(lwp_arch_private_info): Likewise.
* x86-linux-nat.c: Include nat/x86-linux.h.
(arch_lwp_info): Removed structure.
(update_debug_registers_callback):
Use lwp_set_debug_registers_changed.
(x86_linux_prepare_to_resume): Use lwp_debug_registers_changed
and lwp_set_debug_registers_changed.
(x86_linux_new_thread): Use lwp_set_debug_registers_changed.
gdb/gdbserver/ChangeLog:
* Makefile.in (x86-linux.o): New rule.
* configure.srv: Add x86-linux.o to relevant targets.
* linux-low.c (lwp_set_arch_private_info): New function.
(lwp_arch_private_info): Likewise.
* linux-x86-low.c: Include nat/x86-linux.h.
(arch_lwp_info): Removed structure.
(update_debug_registers_callback):
Use lwp_set_debug_registers_changed.
(x86_linux_prepare_to_resume): Use lwp_debug_registers_changed
and lwp_set_debug_registers_changed.
(x86_linux_new_thread): Use lwp_set_debug_registers_changed.
Diffstat (limited to 'gdb/x86-linux-nat.c')
-rw-r--r-- | gdb/x86-linux-nat.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/gdb/x86-linux-nat.c b/gdb/x86-linux-nat.c index 74b48e378ee..10ccbd67968 100644 --- a/gdb/x86-linux-nat.c +++ b/gdb/x86-linux-nat.c @@ -39,6 +39,7 @@ #include "x86-xstate.h" #include "nat/linux-btrace.h" #include "nat/linux-nat.h" +#include "nat/x86-linux.h" /* Per-thread arch-specific data we want to keep. */ @@ -133,12 +134,9 @@ x86_linux_dr_get_status (void) static int update_debug_registers_callback (struct lwp_info *lwp, void *arg) { - if (lwp->arch_private == NULL) - lwp->arch_private = XCNEW (struct arch_lwp_info); - /* The actual update is done later just before resuming the lwp, we just mark that the registers need updating. */ - lwp->arch_private->debug_registers_changed = 1; + lwp_set_debug_registers_changed (lwp, 1); /* If the lwp isn't stopped, force it to momentarily pause, so we can update its debug registers. */ @@ -181,13 +179,7 @@ x86_linux_prepare_to_resume (struct lwp_info *lwp) ptid_t ptid = ptid_of_lwp (lwp); int clear_status = 0; - /* NULL means this is the main thread still going through the shell, - or, no watchpoint has been set yet. In that case, there's - nothing to do. */ - if (lwp->arch_private == NULL) - return; - - if (lwp->arch_private->debug_registers_changed) + if (lwp_debug_registers_changed (lwp)) { struct x86_debug_reg_state *state = x86_debug_reg_state (ptid_get_pid (ptid)); @@ -222,7 +214,7 @@ x86_linux_prepare_to_resume (struct lwp_info *lwp) if (state->dr_control_mirror != 0) x86_linux_dr_set (ptid, DR_CONTROL, state->dr_control_mirror); - lwp->arch_private->debug_registers_changed = 0; + lwp_set_debug_registers_changed (lwp, 0); } if (clear_status @@ -233,11 +225,7 @@ x86_linux_prepare_to_resume (struct lwp_info *lwp) static void x86_linux_new_thread (struct lwp_info *lp) { - struct arch_lwp_info *info = XCNEW (struct arch_lwp_info); - - info->debug_registers_changed = 1; - - lp->arch_private = info; + lwp_set_debug_registers_changed (lp, 1); } |