Messages in this thread | | | Date | Tue, 11 Jan 2005 12:10:15 +0100 | From | Andries Brouwer <> | Subject | Re: The purpose of PT_TRACESYSGOOD |
| |
>> /* >> * A child stopped at a syscall has status as if it received SIGTRAP. >> * In order to distinguish between SIGTRAP and syscall, some kernel >> * versions have the PTRACE_O_TRACESYSGOOD option, that sets an extra >> * bit 0x80 in the syscall case. >> */
> Then I think the tracing thread should call the ptrace_request to set > PTRACE_O_TRACESYSGOOD flag of the traced thread first before > ptrace(PTRACE_SYSCALL...) ,right?
Yes.
From a baby ptrace demo:
#define SIGSYSTRAP (SIGTRAP | sysgood_bit)
int sysgood_bit = 0;
void set_sysgood(pid_t p) { #ifdef PTRACE_O_TRACESYSGOOD int i = ptrace(PTRACE_SETOPTIONS, p, 0, (void*) PTRACE_O_TRACESYSGOOD); if (i == 0) sysgood_bit = 0x80; else perror("PTRACE_O_TRACESYSGOOD"); #endif }
and now the signal SIGSYSTRAP signifies a system call when the sysgood bit was implemented, anything different from SIGSYSTRAP is guaranteed to be a signal.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |