X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdbserver%2Flinux-x86-low.cc;h=be68e005f00f368811751b11272fbe40d5f4f982;hb=fd000fb3dfd9c93e332246bf89b700ab9aac7339;hp=d33833daa6c466d0c291010603a49ecb214b80fe;hpb=b35db73327cf54445a20533305fcf705e88a520b;p=deliverable%2Fbinutils-gdb.git diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc index d33833daa6..be68e005f0 100644 --- a/gdbserver/linux-x86-low.cc +++ b/gdbserver/linux-x86-low.cc @@ -141,6 +141,20 @@ protected: /* collect_ptrace_register/supply_ptrace_register are not needed in the native i386 case (no registers smaller than an xfer unit), and are not used in the biarch case (HAVE_LINUX_USRREGS is not defined). */ + + /* Need to fix up i386 siginfo if host is amd64. */ + bool low_siginfo_fixup (siginfo_t *native, gdb_byte *inf, + int direction) override; + + arch_process_info *low_new_process () override; + + void low_delete_process (arch_process_info *info) override; + + void low_new_thread (lwp_info *) override; + + void low_delete_thread (arch_lwp_info *) override; + + void low_new_fork (process_info *parent, process_info *child) override; }; /* The singleton target ops object. */ @@ -689,8 +703,8 @@ x86_target::low_stopped_data_address () /* Called when a new process is created. */ -static struct arch_process_info * -x86_linux_new_process (void) +arch_process_info * +x86_target::low_new_process () { struct arch_process_info *info = XCNEW (struct arch_process_info); @@ -701,16 +715,30 @@ x86_linux_new_process (void) /* Called when a process is being deleted. */ -static void -x86_linux_delete_process (struct arch_process_info *info) +void +x86_target::low_delete_process (arch_process_info *info) { xfree (info); } -/* Target routine for linux_new_fork. */ +void +x86_target::low_new_thread (lwp_info *lwp) +{ + /* This comes from nat/. */ + x86_linux_new_thread (lwp); +} + +void +x86_target::low_delete_thread (arch_lwp_info *alwp) +{ + /* This comes from nat/. */ + x86_linux_delete_thread (alwp); +} + +/* Target routine for new_fork. */ -static void -x86_linux_new_fork (struct process_info *parent, struct process_info *child) +void +x86_target::low_new_fork (process_info *parent, process_info *child) { /* These are allocated by linux_add_process. */ gdb_assert (parent->priv != NULL @@ -757,8 +785,8 @@ x86_debug_reg_state (pid_t pid) from INF to PTRACE. If DIRECTION is 0, copy from PTRACE to INF. */ -static int -x86_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction) +bool +x86_target::low_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction) { #ifdef __x86_64__ unsigned int machine; @@ -775,7 +803,7 @@ x86_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction) FIXUP_X32); #endif - return 0; + return false; } static int use_xml; @@ -2926,13 +2954,6 @@ x86_get_ipa_tdesc_idx (void) struct linux_target_ops the_low_target = { - /* need to fix up i386 siginfo if host is amd64 */ - x86_siginfo_fixup, - x86_linux_new_process, - x86_linux_delete_process, - x86_linux_new_thread, - x86_linux_delete_thread, - x86_linux_new_fork, x86_linux_prepare_to_resume, x86_linux_process_qsupported, x86_supports_tracepoints,