fix socket and ipc calls on sparc (DaveM)
This commit is contained in:
parent
424a4b38bf
commit
c0240b24a0
192
strace-4.5.16-sparc-socketipc.patch
Normal file
192
strace-4.5.16-sparc-socketipc.patch
Normal file
@ -0,0 +1,192 @@
|
||||
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
|
@ -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 @@ The `strace' program in the `strace' package is for 32-bit processes.
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
|
||||
%build
|
||||
%configure
|
||||
@ -76,6 +78,9 @@ rm -rf %{buildroot}
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu May 15 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 4.5.16-6
|
||||
- fix socket and ipc calls on sparc (DaveM)
|
||||
|
||||
* Wed Mar 26 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 4.5.16-5
|
||||
- fix obviously wrong syscall chunks for sparc
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user