SPARC has a different PTRACE_DETACH value correctly defined in sys/ptrace.h, but linux/ptrace.h clobbers it with the standard one. PTRACE_SUNDETACH is also defined to the correct value by sys/ptrace.h, so use that instead.
* pthread.h [SPARC || SPARC64]: Define PTRACE_DETACH as PTRACE_SUNDETACH. * strace.c (detach) [SPARC]: Remove PTRACE_DETACH definition and use the one from pthread.h. --- ptrace.h | 8 ++++++++ strace.c | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ptrace.h b/ptrace.h index 0f3b022..e5c0fec 100644 --- a/ptrace.h +++ b/ptrace.h @@ -67,6 +67,14 @@ extern long ptrace(int, int, char *, long); # undef ptrace_peeksiginfo_args #endif +#if defined(SPARC) || defined(SPARC64) +/* SPARC has a different PTRACE_DETACH value correctly defined in sys/ptrace.h, + * but linux/ptrace.h clobbers it with the standard one. PTRACE_SUNDETACH is + * also defined to the correct value by sys/ptrace.h, so use that instead. */ +# undef PTRACE_DETACH +# define PTRACE_DETACH PTRACE_SUNDETACH +#endif + #ifndef PTRACE_EVENT_FORK # define PTRACE_EVENT_FORK 1 #endif diff --git a/strace.c b/strace.c index 0ee43cf..a4b999e 100644 --- a/strace.c +++ b/strace.c @@ -836,10 +836,6 @@ detach(struct tcb *tcp) * before detaching. Arghh. We go through hoops * to make a clean break of things. */ -#if defined(SPARC) -# undef PTRACE_DETACH -# define PTRACE_DETACH PTRACE_SUNDETACH -#endif if (!(tcp->flags & TCB_ATTACHED)) goto drop; -- 2.9.3 ------------------------------------------------------------------------------ _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel