rpms/strace/F-9 strace-4.5.16-sparc-socketipc.patch, NONE, 1.1 strace.spec, 1.49, 1.50

Tom Callaway (spot) fedora-extras-commits at redhat.com
Fri May 16 00:02:48 UTC 2008


Author: spot

Update of /cvs/pkgs/rpms/strace/F-9
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv3693/F-9

Modified Files:
	strace.spec 
Added Files:
	strace-4.5.16-sparc-socketipc.patch 
Log Message:
fix socket and ipc calls on sparc (DaveM)

strace-4.5.16-sparc-socketipc.patch:

--- NEW FILE strace-4.5.16-sparc-socketipc.patch ---
diff -up strace-4.5.16/linux/sparc/syscallent.h.BAD strace-4.5.16/linux/sparc/syscallent.h
--- strace-4.5.16/linux/sparc/syscallent.h.BAD	2008-05-15 16:06:36.000000000 -0500
+++ strace-4.5.16/linux/sparc/syscallent.h	2008-05-15 18:21:01.000000000 -0500
@@ -351,3 +351,57 @@
 	{ 5,	0,	printargs,	"SYS_350" },		/* 350 */
 	{ 5,	0,	printargs,	"SYS_351" },		/* 351 */
 	{ 5,	0,	printargs,	"SYS_352" },		/* 352 */
+#if SYS_socket_subcall != 353
+ #error fix me
+#endif
+	{ 8,	0,	printargs,		"socket_subcall" }, /* 353 */
+	{ 3,	TN,	sys_socket,		"socket" },	/* 354 */
+	{ 3,	TN,	sys_bind,		"bind" },	/* 355 */
+	{ 3,	TN,	sys_connect,		"connect" },	/* 356 */
+	{ 2,	TN,	sys_listen,		"listen" },	/* 357 */
+	{ 3,	TN,	sys_accept,		"accept" },	/* 358 */
+	{ 3,	TN,	sys_getsockname,	"getsockname" }, /* 359 */
+	{ 3,	TN,	sys_getpeername,	"getpeername" }, /* 360 */
+	{ 4,	TN,	sys_socketpair,		"socketpair" }, /* 361 */
+	{ 4,	TN,	sys_send,		"send" },	/* 362 */
+	{ 4,	TN,	sys_recv,		"recv" },	/* 363 */
+	{ 6,	TN,	sys_sendto,		"sendto" },	/* 364 */
+	{ 6,	TN,	sys_recvfrom,		"recvfrom" },	/* 365 */
+	{ 2,	TN,	sys_shutdown,		"shutdown" },	/* 366 */
+	{ 5,	TN,	sys_setsockopt,		"setsockopt" }, /* 367 */
+	{ 5,	TN,	sys_getsockopt,		"getsockopt" }, /* 368 */
+	{ 5,	TN,	sys_sendmsg,		"sendmsg" },	/* 369 */
+	{ 5,	TN,	sys_recvmsg,		"recvmsg" },	/* 370 */
+#if SYS_ipc_subcall != 371
+ #error fix me
+#endif
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 371 */
+	{ 4,	TI,	printargs,		"semop" },	/* 372 */
+	{ 4,	TI,	sys_semget,		"semget" },	/* 373 */
+	{ 4,	TI,	sys_semctl,		"semctl" },	/* 374 */
+	{ 5,	TI,	sys_semtimedop,		"semtimedop" },	/* 375 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 376 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 377 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 378 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 379 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 380 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 381 */
+	{ 4,	TI,	sys_msgsnd,		"msgsnd" },	/* 382 */
+	{ 4,	TI,	sys_msgrcv,		"msgrcv" },	/* 383 */
+	{ 4,	TI,	sys_msgget,		"msgget" },	/* 384 */
+	{ 4,	TI,	sys_msgctl,		"msgctl" },	/* 385 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 386 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 387 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 388 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 389 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 390 */
+	{ 4,	0,	printargs,		"ipc_subcall" }, /* 391 */
+	{ 4,	TI,	sys_shmat,		"shmat" },	/* 392 */
+	{ 4,	TI,	sys_shmdt,		"shmdt" },	/* 393 */
+	{ 4,	TI,	sys_shmget,		"shmget" },	/* 394 */
+	{ 4,	TI,	sys_shmctl,		"shmctl" }, 	/* 395 */
+	{ 5,	0,	printargs,		"SYS_343" },	/* 396 */
+	{ 5,	0,	printargs,		"SYS_344" },	/* 397 */
+	{ 5,	0,	printargs,		"SYS_345" },	/* 398 */
+	{ 5,	0,	printargs,		"SYS_346" },	/* 399 */
+	{ 5,	0,	printargs,		"SYS_347" },	/* 400 */
diff -up strace-4.5.16/linux/sparc/syscall.h.BAD strace-4.5.16/linux/sparc/syscall.h
--- strace-4.5.16/linux/sparc/syscall.h.BAD	2008-05-15 16:02:07.000000000 -0500
+++ strace-4.5.16/linux/sparc/syscall.h	2008-05-15 16:06:03.000000000 -0500
@@ -103,6 +103,7 @@ int	sys_symlinkat(), sys_readlinkat(), s
 int	sys_pselect6(), sys_ppoll(), sys_unshare(), sys_mbind();
 int	sys_get_mempolicy(), sys_set_mempolicy(), sys_move_pages(), sys_getcpu();
 int	sys_epoll_pwait(), sys_utimensat(), sys_signalfd(), sys_timerfd(), sys_eventfd();
+int	sys_semtimedop();
 
 /* 2.3 communications */
 int	sys_socket(),sys_bind(),sys_listen(),sys_accept(),sys_connect();
@@ -213,4 +214,41 @@ int	sys_fstatfs64(), sys_clock_settime()
 int	sys_clock_getres(), sys_clock_nanosleep();
 int	sys_timer_create(), sys_timer_settime(), sys_timer_gettime();
 
+#  define SYS_socket_subcall	353
+#define SYS_sub_socket		(SYS_socket_subcall + 1)
+#define SYS_sub_bind		(SYS_socket_subcall + 2)
+#define SYS_sub_connect		(SYS_socket_subcall + 3)
+#define SYS_sub_listen		(SYS_socket_subcall + 4)
+#define SYS_sub_accept		(SYS_socket_subcall + 5)
+#define SYS_sub_getsockname	(SYS_socket_subcall + 6)
+#define SYS_sub_getpeername	(SYS_socket_subcall + 7)
+#define SYS_sub_socketpair	(SYS_socket_subcall + 8)
+#define SYS_sub_send		(SYS_socket_subcall + 9)
+#define SYS_sub_recv		(SYS_socket_subcall + 10)
+#define SYS_sub_sendto		(SYS_socket_subcall + 11)
+#define SYS_sub_recvfrom	(SYS_socket_subcall + 12)
+#define SYS_sub_shutdown	(SYS_socket_subcall + 13)
+#define SYS_sub_setsockopt	(SYS_socket_subcall + 14)
+#define SYS_sub_getsockopt	(SYS_socket_subcall + 15)
+#define SYS_sub_sendmsg		(SYS_socket_subcall + 16)
+#define SYS_sub_recvmsg		(SYS_socket_subcall + 17)
+
+#define SYS_socket_nsubcalls	18
+
+#define SYS_ipc_subcall		((SYS_socket_subcall)+(SYS_socket_nsubcalls))
+#define SYS_sub_semop		(SYS_ipc_subcall + 1)
+#define SYS_sub_semget		(SYS_ipc_subcall + 2)
+#define SYS_sub_semctl		(SYS_ipc_subcall + 3)
+#define SYS_sub_semtimedop	(SYS_ipc_subcall + 4)
+#define SYS_sub_msgsnd		(SYS_ipc_subcall + 11)
+#define SYS_sub_msgrcv		(SYS_ipc_subcall + 12)
+#define SYS_sub_msgget		(SYS_ipc_subcall + 13)
+#define SYS_sub_msgctl		(SYS_ipc_subcall + 14)
+#define SYS_sub_shmat		(SYS_ipc_subcall + 21)
+#define SYS_sub_shmdt		(SYS_ipc_subcall + 22)
+#define SYS_sub_shmget		(SYS_ipc_subcall + 23)
+#define SYS_sub_shmctl		(SYS_ipc_subcall + 24)
+
+#define SYS_ipc_nsubcalls	25
+
 #include "syscall1.h"
diff -up strace-4.5.16/syscall.c.BAD strace-4.5.16/syscall.c
--- strace-4.5.16/syscall.c.BAD	2008-05-15 16:01:49.000000000 -0500
+++ strace-4.5.16/syscall.c	2008-05-15 16:01:53.000000000 -0500
@@ -579,51 +579,6 @@ static const struct subcall subcalls_tab
 #endif /* FREEBSD */
 
 #if !(defined(LINUX) && ( defined(ALPHA) || defined(MIPS) ))
-
-static const int socket_map [] = {
-	       /* SYS_SOCKET      */ 97,
-	       /* SYS_BIND        */ 104,
-	       /* SYS_CONNECT     */ 98,
-	       /* SYS_LISTEN      */ 106,
-	       /* SYS_ACCEPT      */ 99,
-	       /* SYS_GETSOCKNAME */ 150,
-	       /* SYS_GETPEERNAME */ 141,
-	       /* SYS_SOCKETPAIR  */ 135,
-	       /* SYS_SEND        */ 101,
-	       /* SYS_RECV        */ 102,
-	       /* SYS_SENDTO      */ 133,
-	       /* SYS_RECVFROM    */ 125,
-	       /* SYS_SHUTDOWN    */ 134,
-	       /* SYS_SETSOCKOPT  */ 105,
-	       /* SYS_GETSOCKOPT  */ 118,
-	       /* SYS_SENDMSG     */ 114,
-	       /* SYS_RECVMSG     */ 113
-};
-
-#if defined (SPARC) || defined (SPARC64)
-static void
-sparc_socket_decode (tcp)
-struct tcb *tcp;
-{
-	volatile long addr;
-	volatile int i, n;
-
-	if (tcp->u_arg [0] < 1 || tcp->u_arg [0] > sizeof(socket_map)/sizeof(int)+1){
-		return;
-	}
-	tcp->scno = socket_map [tcp->u_arg [0]-1];
-	n = tcp->u_nargs = sysent [tcp->scno].nargs;
-	addr = tcp->u_arg [1];
-	for (i = 0; i < n; i++){
-	        int arg;
-		if (umoven (tcp, addr, sizeof (arg), (void *) &arg) < 0)
-			arg = 0;
-		tcp->u_arg [i] = arg;
-		addr += sizeof (arg);
-	}
-}
-#endif
-
 static void
 decode_subcall(tcp, subcall, nsubcalls, style)
 struct tcb *tcp;
@@ -2382,7 +2337,7 @@ trace_syscall(struct tcb *tcp)
 
 	switch (known_scno(tcp)) {
 #ifdef LINUX
-#if !defined (ALPHA) && !defined(SPARC) && !defined(SPARC64) && !defined(MIPS) && !defined(HPPA)
+#if !defined (ALPHA) && !defined(MIPS) && !defined(HPPA)
 	case SYS_socketcall:
 		decode_subcall(tcp, SYS_socket_subcall,
 			SYS_socket_nsubcalls, deref_style);
@@ -2391,12 +2346,7 @@ trace_syscall(struct tcb *tcp)
 		decode_subcall(tcp, SYS_ipc_subcall,
 			SYS_ipc_nsubcalls, shift_style);
 		break;
-#endif /* !ALPHA && !MIPS && !SPARC && !SPARC64 && !HPPA */
-#if defined (SPARC) || defined (SPARC64)
-	case SYS_socketcall:
-		sparc_socket_decode (tcp);
-		break;
-#endif
+#endif /* !(ALPHA || MIPS || HPPA) */
 #endif /* LINUX */
 #ifdef SVR4
 #ifdef SYS_pgrpsys_subcall


Index: strace.spec
===================================================================
RCS file: /cvs/pkgs/rpms/strace/F-9/strace.spec,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- strace.spec	26 Mar 2008 17:37:11 -0000	1.49
+++ strace.spec	16 May 2008 00:02:02 -0000	1.50
@@ -1,12 +1,13 @@
 Summary: Tracks and displays system calls associated with a running process
 Name: strace
 Version: 4.5.16
-Release: 5%{?dist}
+Release: 6%{?dist}
 License: BSD
 Group: Development/Debuggers
 URL: http://sourceforge.net/projects/strace/
 Source0: http://dl.sourceforge.net/strace/%{name}-%{version}.tar.bz2
 Patch0: strace-4.5.16-sparc-fix.patch
+Patch1: strace-4.5.16-sparc-socketipc.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 %define strace64_arches ppc64 sparc64
@@ -43,6 +44,7 @@
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 
 %build
 %configure
@@ -76,6 +78,9 @@
 
 
 %changelog
+* Thu May 15 2008 Tom "spot" Callaway <tcallawa at redhat.com> - 4.5.16-6
+- fix socket and ipc calls on sparc (DaveM)
+
 * Wed Mar 26 2008 Tom "spot" Callaway <tcallawa at redhat.com> - 4.5.16-5
 - fix obviously wrong syscall chunks for sparc
 




More information about the scm-commits mailing list