* linux-low.c (linux_enable_event_reporting): New.
(linux_wait_for_event_1, handle_extended_wait): Use it.
This commit is contained in:
parent
6f6dbfc4bc
commit
1e7fc18c9c
2 changed files with 17 additions and 3 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2010-05-01 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
|
* linux-low.c (linux_enable_event_reporting): New.
|
||||||
|
(linux_wait_for_event_1, handle_extended_wait): Use it.
|
||||||
|
|
||||||
2010-04-30 Pedro Alves <pedro@codesourcery.com>
|
2010-04-30 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
* linux-low.c (linux_kill_one_lwp, linux_kill)
|
* linux-low.c (linux_kill_one_lwp, linux_kill)
|
||||||
|
|
|
@ -150,6 +150,7 @@ static void unstop_all_lwps (struct lwp_info *except);
|
||||||
static int finish_step_over (struct lwp_info *lwp);
|
static int finish_step_over (struct lwp_info *lwp);
|
||||||
static CORE_ADDR get_stop_pc (struct lwp_info *lwp);
|
static CORE_ADDR get_stop_pc (struct lwp_info *lwp);
|
||||||
static int kill_lwp (unsigned long lwpid, int signo);
|
static int kill_lwp (unsigned long lwpid, int signo);
|
||||||
|
static void linux_enable_event_reporting (int pid);
|
||||||
|
|
||||||
/* True if the low target can hardware single-step. Such targets
|
/* True if the low target can hardware single-step. Such targets
|
||||||
don't need a BREAKPOINT_REINSERT_ADDR callback. */
|
don't need a BREAKPOINT_REINSERT_ADDR callback. */
|
||||||
|
@ -396,7 +397,7 @@ handle_extended_wait (struct lwp_info *event_child, int wstat)
|
||||||
warning ("wait returned unexpected status 0x%x", status);
|
warning ("wait returned unexpected status 0x%x", status);
|
||||||
}
|
}
|
||||||
|
|
||||||
ptrace (PTRACE_SETOPTIONS, new_pid, 0, (PTRACE_ARG4_TYPE) PTRACE_O_TRACECLONE);
|
linux_enable_event_reporting (new_pid);
|
||||||
|
|
||||||
ptid = ptid_build (pid_of (event_child), new_pid, 0);
|
ptid = ptid_build (pid_of (event_child), new_pid, 0);
|
||||||
new_lwp = (struct lwp_info *) add_lwp (ptid);
|
new_lwp = (struct lwp_info *) add_lwp (ptid);
|
||||||
|
@ -1318,8 +1319,7 @@ linux_wait_for_event_1 (ptid_t ptid, int *wstat, int options)
|
||||||
|
|
||||||
if (event_child->must_set_ptrace_flags)
|
if (event_child->must_set_ptrace_flags)
|
||||||
{
|
{
|
||||||
ptrace (PTRACE_SETOPTIONS, lwpid_of (event_child),
|
linux_enable_event_reporting (lwpid_of (event_child));
|
||||||
0, (PTRACE_ARG4_TYPE) PTRACE_O_TRACECLONE);
|
|
||||||
event_child->must_set_ptrace_flags = 0;
|
event_child->must_set_ptrace_flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3415,6 +3415,15 @@ linux_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
|
||||||
/* Non-zero if the kernel supports PTRACE_O_TRACEFORK. */
|
/* Non-zero if the kernel supports PTRACE_O_TRACEFORK. */
|
||||||
static int linux_supports_tracefork_flag;
|
static int linux_supports_tracefork_flag;
|
||||||
|
|
||||||
|
static void
|
||||||
|
linux_enable_event_reporting (int pid)
|
||||||
|
{
|
||||||
|
if (!linux_supports_tracefork_flag)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ptrace (PTRACE_SETOPTIONS, pid, 0, (PTRACE_ARG4_TYPE) PTRACE_O_TRACECLONE);
|
||||||
|
}
|
||||||
|
|
||||||
/* Helper functions for linux_test_for_tracefork, called via clone (). */
|
/* Helper functions for linux_test_for_tracefork, called via clone (). */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue