|
@@ -127,57 +127,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|
|
ret = 0;
|
|
|
break;
|
|
|
|
|
|
- case PTRACE_SYSCALL:
|
|
|
- case PTRACE_CONT:
|
|
|
- ret = -EIO;
|
|
|
-
|
|
|
- if (!valid_signal(data))
|
|
|
- break;
|
|
|
-
|
|
|
- if (request == PTRACE_SYSCALL) {
|
|
|
- set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
|
|
|
- }
|
|
|
- else {
|
|
|
- clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
|
|
|
- }
|
|
|
-
|
|
|
- child->exit_code = data;
|
|
|
-
|
|
|
- /* TODO: make sure any pending breakpoint is killed */
|
|
|
- wake_up_process(child);
|
|
|
- ret = 0;
|
|
|
-
|
|
|
- break;
|
|
|
-
|
|
|
- /* Make the child exit by sending it a sigkill. */
|
|
|
- case PTRACE_KILL:
|
|
|
- ret = 0;
|
|
|
-
|
|
|
- if (child->exit_state == EXIT_ZOMBIE)
|
|
|
- break;
|
|
|
-
|
|
|
- child->exit_code = SIGKILL;
|
|
|
-
|
|
|
- /* TODO: make sure any pending breakpoint is killed */
|
|
|
- wake_up_process(child);
|
|
|
- break;
|
|
|
-
|
|
|
- /* Set the trap flag. */
|
|
|
- case PTRACE_SINGLESTEP:
|
|
|
- ret = -EIO;
|
|
|
-
|
|
|
- if (!valid_signal(data))
|
|
|
- break;
|
|
|
-
|
|
|
- clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
|
|
|
-
|
|
|
- /* TODO: set some clever breakpoint mechanism... */
|
|
|
-
|
|
|
- child->exit_code = data;
|
|
|
- wake_up_process(child);
|
|
|
- ret = 0;
|
|
|
- break;
|
|
|
-
|
|
|
/* Get all GP registers from the child. */
|
|
|
case PTRACE_GETREGS: {
|
|
|
int i;
|