Browse Source

fix strace with musl libc

Waldemar Brodkorb 11 years ago
parent
commit
8c716c528b

+ 3 - 0
package/strace/Makefile

@@ -20,6 +20,9 @@ $(eval $(call PKG_template,STRACE,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PK
 ifeq ($(ADK_STATIC),y)
 TARGET_CFLAGS+=		-static
 endif
+ifeq ($(ADK_TARGET_LIB_MUSL),y)
+TARGET_CPPFLAGS+=	-DMSG_EXCEPT=020000 -D_LARGEFILE64_SOURCE=1
+endif
 
 INSTALL_STYLE:=		manual
 

+ 23 - 0
package/strace/patches/patch-defs_h

@@ -0,0 +1,23 @@
+--- strace-4.8.orig/defs.h	2013-05-14 16:10:42.000000000 +0200
++++ strace-4.8/defs.h	2013-08-14 08:51:03.000000000 +0200
+@@ -162,7 +162,7 @@ extern char *stpcpy(char *dst, const cha
+ # define ptrace xptrace
+ # include <sys/ptrace.h>
+ # undef ptrace
+-# ifdef POWERPC
++# if defined(POWERPC) || defined(ARM)
+ #  define __KERNEL__
+ #  include <asm/ptrace.h>
+ #  undef __KERNEL__
+@@ -222,11 +222,6 @@ extern long ptrace(int, int, char *, lon
+ # define PTRACE_EVENT_EXIT	6
+ #endif
+ 
+-#if !defined(__GLIBC__)
+-# define PTRACE_PEEKUSER PTRACE_PEEKUSR
+-# define PTRACE_POKEUSER PTRACE_POKEUSR
+-#endif
+-
+ #if USE_SEIZE
+ # undef PTRACE_SEIZE
+ # define PTRACE_SEIZE		0x4206

+ 14 - 0
package/strace/patches/patch-defs_h.orig

@@ -0,0 +1,14 @@
+--- strace-4.8.orig/defs.h	2013-05-14 16:10:42.000000000 +0200
++++ strace-4.8/defs.h	2013-08-14 08:01:46.000000000 +0200
+@@ -222,11 +222,6 @@ extern long ptrace(int, int, char *, lon
+ # define PTRACE_EVENT_EXIT	6
+ #endif
+ 
+-#if !defined(__GLIBC__)
+-# define PTRACE_PEEKUSER PTRACE_PEEKUSR
+-# define PTRACE_POKEUSER PTRACE_POKEUSR
+-#endif
+-
+ #if USE_SEIZE
+ # undef PTRACE_SEIZE
+ # define PTRACE_SEIZE		0x4206

+ 11 - 0
package/strace/patches/patch-desc_c

@@ -0,0 +1,11 @@
+--- strace-4.8.orig/desc.c	2013-05-02 00:39:10.000000000 +0200
++++ strace-4.8/desc.c	2013-08-14 08:55:36.000000000 +0200
+@@ -223,7 +223,7 @@ static const struct xlat perf_event_open
+ 	{ 0,				NULL			},
+ };
+ 
+-#if _LFS64_LARGEFILE
++#if defined(_LFS64_LARGEFILE) && defined(__GLIBC__) || defined(__UCLIBC__)
+ /* fcntl/lockf */
+ static void
+ printflock64(struct tcb *tcp, long addr, int getlk)

+ 19 - 0
package/strace/patches/patch-net_c

@@ -0,0 +1,19 @@
+--- strace-4.8.orig/net.c	2013-05-18 00:20:02.000000000 +0200
++++ strace-4.8/net.c	2013-08-14 08:46:21.000000000 +0200
+@@ -94,13 +94,15 @@
+ # define PF_UNSPEC AF_UNSPEC
+ #endif
+ 
+-/* Under Linux these are enums so we can't test for them with ifdef. */
++/* Under Linux (glibc/uclibc) these are enums so we can't test for them with ifdef. */
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ #define IPPROTO_EGP IPPROTO_EGP
+ #define IPPROTO_PUP IPPROTO_PUP
+ #define IPPROTO_IDP IPPROTO_IDP
+ #define IPPROTO_IGMP IPPROTO_IGMP
+ #define IPPROTO_RAW IPPROTO_RAW
+ #define IPPROTO_MAX IPPROTO_MAX
++#endif
+ 
+ static const struct xlat domains[] = {
+ #ifdef PF_UNSPEC

+ 29 - 0
package/strace/patches/patch-process_c

@@ -0,0 +1,29 @@
+--- strace-4.8.orig/process.c	2013-05-18 00:22:19.000000000 +0200
++++ strace-4.8/process.c	2013-08-14 08:47:15.000000000 +0200
+@@ -2857,7 +2857,7 @@ sys_sched_setscheduler(struct tcb *tcp)
+ 		if (umove(tcp, tcp->u_arg[2], &p) < 0)
+ 			tprintf(", %#lx", tcp->u_arg[2]);
+ 		else
+-			tprintf(", { %d }", p.__sched_priority);
++			tprintf(", { %d }", p.sched_priority);
+ 	}
+ 	return 0;
+ }
+@@ -2872,7 +2872,7 @@ sys_sched_getparam(struct tcb *tcp)
+ 		if (umove(tcp, tcp->u_arg[1], &p) < 0)
+ 			tprintf("%#lx", tcp->u_arg[1]);
+ 		else
+-			tprintf("{ %d }", p.__sched_priority);
++			tprintf("{ %d }", p.sched_priority);
+ 	}
+ 	return 0;
+ }
+@@ -2885,7 +2885,7 @@ sys_sched_setparam(struct tcb *tcp)
+ 		if (umove(tcp, tcp->u_arg[1], &p) < 0)
+ 			tprintf("%d, %#lx", (int) tcp->u_arg[0], tcp->u_arg[1]);
+ 		else
+-			tprintf("%d, { %d }", (int) tcp->u_arg[0], p.__sched_priority);
++			tprintf("%d, { %d }", (int) tcp->u_arg[0], p.sched_priority);
+ 	}
+ 	return 0;
+ }

+ 11 - 0
package/strace/patches/patch-signal_c

@@ -0,0 +1,11 @@
+--- strace-4.8.orig/signal.c	2013-05-23 15:41:23.000000000 +0200
++++ strace-4.8/signal.c	2013-08-14 08:50:16.000000000 +0200
+@@ -815,7 +815,7 @@ sys_sigreturn(struct tcb *tcp)
+ {
+ #if defined(ARM)
+ 	if (entering(tcp)) {
+-		struct sigcontext_struct sc;
++		struct sigcontext sc;
+ 		sigset_t sigm;
+ 		if (umove(tcp, arm_regs.ARM_sp, &sc) < 0)
+ 			return 0;

+ 14 - 0
package/strace/patches/patch-time_c

@@ -0,0 +1,14 @@
+--- strace-4.8.orig/time.c	2012-05-01 23:17:51.000000000 +0200
++++ strace-4.8/time.c	2013-08-14 08:52:00.000000000 +0200
+@@ -774,7 +774,11 @@ printsigevent(struct tcb *tcp, long arg)
+ 			/* _pad[0] is the _tid field which might not be
+ 			   present in the userlevel definition of the
+ 			   struct.  */
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ 			tprintf("{%d}", sev._sigev_un._pad[0]);
++#else
++			;
++#endif
+ 		else if (sev.sigev_notify == SIGEV_THREAD)
+ 			tprintf("{%p, %p}", sev.sigev_notify_function,
+ 				sev.sigev_notify_attributes);