summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/packages/strace/strace-4.5.14/arm-eabi.patch65
-rw-r--r--meta/packages/strace/strace-4.5.14/drop-ctl-proc.patch12
-rw-r--r--meta/packages/strace/strace-4.5.14/glibc-2.5.patch11
-rw-r--r--meta/packages/strace/strace-4.5.14/sh-arch-update.patch21
-rw-r--r--meta/packages/strace/strace-4.5.14/sh-syscall-update.patch268
-rw-r--r--meta/packages/strace/strace/arm-compilation.patch10
-rw-r--r--meta/packages/strace/strace/arm-syscall.patch16
-rw-r--r--meta/packages/strace/strace/strace-fix-arm-bad-syscall.patch18
-rw-r--r--meta/packages/strace/strace_4.5.14.bb16
9 files changed, 437 insertions, 0 deletions
diff --git a/meta/packages/strace/strace-4.5.14/arm-eabi.patch b/meta/packages/strace/strace-4.5.14/arm-eabi.patch
new file mode 100644
index 0000000000..53e27f8ce8
--- /dev/null
+++ b/meta/packages/strace/strace-4.5.14/arm-eabi.patch
@@ -0,0 +1,65 @@
12006-03-30 Daniel Jacobowitz <dan@codesourcery.com>
2
3 * process.c (change_syscall): Add ARM support.
4 * syscall.c (get_scno): Handle ARM EABI.
5
6Index: strace/process.c
7===================================================================
8--- strace.orig/process.c 2006-03-30 17:36:14.000000000 -0500
9+++ strace/process.c 2006-03-30 17:44:16.000000000 -0500
10@@ -694,6 +694,16 @@ int new;
11 0x100000 | new) < 0)
12 return -1;
13 return 0;
14+#elif defined(ARM)
15+ /* Some kernels support this, some (pre-2.6.16 or so) don't. */
16+# ifndef PTRACE_SET_SYSCALL
17+# define PTRACE_SET_SYSCALL 23
18+# endif
19+
20+ if (ptrace (PTRACE_SET_SYSCALL, tcp->pid, 0, new) != 0)
21+ return -1;
22+
23+ return 0;
24 #else
25 #warning Do not know how to handle change_syscall for this architecture
26 #endif /* architecture */
27Index: strace/syscall.c
28===================================================================
29--- strace.orig/syscall.c 2006-03-30 17:36:14.000000000 -0500
30+++ strace/syscall.c 2006-03-30 17:44:16.000000000 -0500
31@@ -1108,16 +1108,25 @@ struct tcb *tcp;
32 return 0;
33 }
34
35- if ((scno & 0x0ff00000) != 0x0f900000) {
36- fprintf(stderr, "syscall: unknown syscall trap 0x%08lx\n",
37- scno);
38- return -1;
39- }
40+ /* Handle the EABI syscall convention. We do not
41+ bother converting structures between the two
42+ ABIs, but basic functionality should work even
43+ if strace and the traced program have different
44+ ABIs. */
45+ if (scno == 0xef000000) {
46+ scno = regs.ARM_r7;
47+ } else {
48+ if ((scno & 0x0ff00000) != 0x0f900000) {
49+ fprintf(stderr, "syscall: unknown syscall trap 0x%08lx\n",
50+ scno);
51+ return -1;
52+ }
53
54- /*
55- * Fixup the syscall number
56- */
57- scno &= 0x000fffff;
58+ /*
59+ * Fixup the syscall number
60+ */
61+ scno &= 0x000fffff;
62+ }
63 }
64
65 if (tcp->flags & TCB_INSYSCALL) {
diff --git a/meta/packages/strace/strace-4.5.14/drop-ctl-proc.patch b/meta/packages/strace/strace-4.5.14/drop-ctl-proc.patch
new file mode 100644
index 0000000000..468913774a
--- /dev/null
+++ b/meta/packages/strace/strace-4.5.14/drop-ctl-proc.patch
@@ -0,0 +1,12 @@
1Index: strace-4.5.14/system.c
2===================================================================
3--- strace-4.5.14.orig/system.c 2006-10-01 13:02:08.000000000 +0200
4+++ strace-4.5.14/system.c 2006-10-01 13:02:27.000000000 +0200
5@@ -1578,7 +1578,6 @@
6 { CTL_KERN, "CTL_KERN" },
7 { CTL_VM, "CTL_VM" },
8 { CTL_NET, "CTL_NET" },
9- { CTL_PROC, "CTL_PROC" },
10 { CTL_FS, "CTL_FS" },
11 { CTL_DEBUG, "CTL_DEBUG" },
12 { CTL_DEV, "CTL_DEV" },
diff --git a/meta/packages/strace/strace-4.5.14/glibc-2.5.patch b/meta/packages/strace/strace-4.5.14/glibc-2.5.patch
new file mode 100644
index 0000000000..3ee6b3de75
--- /dev/null
+++ b/meta/packages/strace/strace-4.5.14/glibc-2.5.patch
@@ -0,0 +1,11 @@
1--- strace-4.5.14/strace.c~ 2006-10-14 14:54:54.000000000 +1000
2+++ strace-4.5.14/strace.c 2006-10-14 14:54:54.000000000 +1000
3@@ -2251,7 +2251,7 @@
4 if (!cflag
5 && (qual_flags[WSTOPSIG(status)] & QUAL_SIGNAL)) {
6 unsigned long addr = 0, pc = 0;
7-#ifdef PT_GETSIGINFO
8+#if defined(PT_GETSIGINFO) && defined(IA64)
9 # define PSR_RI 41
10 struct siginfo si;
11 unsigned long psr;
diff --git a/meta/packages/strace/strace-4.5.14/sh-arch-update.patch b/meta/packages/strace/strace-4.5.14/sh-arch-update.patch
new file mode 100644
index 0000000000..e40673a616
--- /dev/null
+++ b/meta/packages/strace/strace-4.5.14/sh-arch-update.patch
@@ -0,0 +1,21 @@
1Strace doesn't know that sh3 and sh4 should be treated as sh and sh5 as
2sh64. Originally this was solved by ac_cv_host in the site files, however
3doing it in the site file breaks the glibc build, so teach strace about them
4instead.
5
6--- strace-4.5.14/configure.ac 2006/05/11 07:12:05 1.1
7+++ strace-4.5.14/configure.ac 2006/05/11 07:15:42
8@@ -91,11 +91,11 @@
9 arch=hppa
10 AC_DEFINE([HPPA], 1, [Define for the HPPA architecture.])
11 ;;
12-sh)
13+sh|sh3*|sh4*)
14 arch=sh
15 AC_DEFINE([SH], 1, [Define for the SH architecture.])
16 ;;
17-sh64)
18+sh64|sh5*)
19 arch=sh64
20 AC_DEFINE([SH64], 1, [Define for the SH64 architecture.])
21 ;;
diff --git a/meta/packages/strace/strace-4.5.14/sh-syscall-update.patch b/meta/packages/strace/strace-4.5.14/sh-syscall-update.patch
new file mode 100644
index 0000000000..15102934e7
--- /dev/null
+++ b/meta/packages/strace/strace-4.5.14/sh-syscall-update.patch
@@ -0,0 +1,268 @@
1--- strace/linux/sh/syscallent.h 2006/07/03 04:32:27 1.1
2+++ strace/linux/sh/syscallent.h 2006/07/03 05:29:55
3@@ -46,7 +46,7 @@
4 { 1, 0, sys_time, "time" }, /* 13 */
5 { 3, TF, sys_mknod, "mknod" }, /* 14 */
6 { 2, TF, sys_chmod, "chmod" }, /* 15 */
7- { 3, TF, sys_chown, "lchown" }, /* 16 */
8+ { 3, TF, sys_chown, "lchown" }, /* 16 */
9 { 0, 0, sys_break, "break" }, /* 17 */
10 { 2, TF, sys_oldstat, "oldstat" }, /* 18 */
11 { 3, TD, sys_lseek, "lseek" }, /* 19 */
12@@ -229,109 +229,157 @@
13 { 2, TF, sys_stat64, "stat64" }, /* 195 */
14 { 2, TF, sys_lstat64, "lstat64" }, /* 196 */
15 { 2, TD, sys_fstat64, "fstat64" }, /* 197 */
16-/*TODO*/{ 3, TF, printargs, "lchown32" }, /* 198 */
17-/*TODO*/{ 0, 0, printargs, "getuid32" }, /* 199 */
18+ { 3, TF, sys_chown, "lchown32" }, /* 198 */
19+ { 0, 0, sys_getuid, "getuid32" }, /* 199 */
20
21- { 0, 0, printargs, "getgid32" }, /* 200 */
22- { 0, 0, printargs, "geteuid32" }, /* 201 */
23- { 0, 0, printargs, "getegid32" }, /* 202 */
24- { 2, 0, printargs, "setreuid32" }, /* 203 */
25- { 2, 0, printargs, "setregid32" }, /* 204 */
26- { 2, 0, sys_getgroups32, "getgroups32" }, /* 205 */
27- { 2, 0, sys_setgroups32, "setgroups32" }, /* 206 */
28- { 3, 0, printargs, "fchown32" }, /* 207 */
29- { 3, 0, printargs, "setresuid32" }, /* 208 */
30- { 3, 0, printargs, "getresuid32" }, /* 209 */
31- { 3, 0, printargs, "setresgid32" }, /* 210 */
32- { 3, 0, printargs, "getsetgid32" }, /* 211 */
33- { 3, TF, printargs, "chown32" }, /* 212 */
34- { 1, 0, printargs, "setuid32" }, /* 213 */
35- { 1, 0, printargs, "setgid32" }, /* 214 */
36- { 1, 0, printargs, "setfsuid32" }, /* 215 */
37- { 1, 0, printargs, "setfsgid32" }, /* 216 */
38+ { 0, 0, sys_getgid, "getgid32" }, /* 200 */
39+ { 0, 0, sys_geteuid, "geteuid32" }, /* 201 */
40+ { 0, 0, sys_getegid, "getegid32" }, /* 202 */
41+ { 2, 0, sys_setreuid, "setreuid32" }, /* 203 */
42+ { 2, 0, sys_setregid, "setregid32" }, /* 204 */
43+ { 2, 0, sys_getgroups, "getgroups32" }, /* 205 */
44+ { 2, 0, sys_setgroups, "setgroups32" }, /* 206 */
45+ { 3, 0, sys_fchown, "fchown32" }, /* 207 */
46+ { 3, 0, sys_setresuid, "setresuid32" }, /* 208 */
47+ { 3, 0, sys_getresuid, "getresuid32" }, /* 209 */
48+ { 3, 0, sys_setresgid, "setresgid32" }, /* 210 */
49+ { 3, 0, sys_getresgid, "getsetgid32" }, /* 211 */
50+ { 3, TF, sys_chown, "chown32" }, /* 212 */
51+ { 1, 0, sys_setuid, "setuid32" }, /* 213 */
52+ { 1, 0, sys_setgid, "setgid32" }, /* 214 */
53+ { 1, 0, sys_setfsuid, "setfsuid32" }, /* 215 */
54+ { 1, 0, sys_setfsgid, "setfsgid32" }, /* 216 */
55 { 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */
56- { 3, 0, printargs, "mincore" }, /* 218 */
57+ { 3, 0, sys_mincore, "mincore" }, /* 218 */
58 { 3, 0, sys_madvise, "madvise" }, /* 219 */
59- { 4, 0, printargs, "getdents64" }, /* 220 */
60+ { 4, 0, sys_getdents64, "getdents64" }, /* 220 */
61 { 3, TD, sys_fcntl, "fcntl64" }, /* 221 */
62 { 4, 0, printargs, "SYS_222" }, /* 222 */
63- { 4, 0, printargs, "SYS_223" }, /* 223 */
64- { 4, 0, printargs, "SYS_224" }, /* 224 */
65- { 5, 0, printargs, "SYS_225" }, /* 225 */
66- { 5, 0, printargs, "SYS_226" }, /* 226 */
67- { 5, 0, printargs, "SYS_227" }, /* 227 */
68- { 5, 0, printargs, "SYS_228" }, /* 228 */
69- { 5, 0, printargs, "SYS_229" }, /* 229 */
70-
71- { 8, 0, printargs, "socket_subcall"}, /* 230 */
72- { 3, TN, sys_socket, "socket" }, /* 231 */
73- { 3, TN, sys_bind, "bind" }, /* 232 */
74- { 3, TN, sys_connect, "connect" }, /* 233 */
75- { 2, TN, sys_listen, "listen" }, /* 234 */
76- { 3, TN, sys_accept, "accept" }, /* 235 */
77- { 3, TN, sys_getsockname, "getsockname" }, /* 236 */
78- { 3, TN, sys_getpeername, "getpeername" }, /* 237 */
79- { 4, TN, sys_socketpair, "socketpair" }, /* 238 */
80- { 4, TN, sys_send, "send" }, /* 239 */
81- { 4, TN, sys_recv, "recv" }, /* 240 */
82- { 6, TN, sys_sendto, "sendto" }, /* 241 */
83- { 6, TN, sys_recvfrom, "recvfrom" }, /* 242 */
84- { 2, TN, sys_shutdown, "shutdown" }, /* 243 */
85- { 5, TN, sys_setsockopt, "setsockopt" }, /* 244 */
86- { 5, TN, sys_getsockopt, "getsockopt" }, /* 245 */
87- { 5, TN, sys_sendmsg, "sendmsg" }, /* 246 */
88- { 5, TN, sys_recvmsg, "recvmsg" }, /* 247 */
89- { 5, 0, printargs, "SYS_248" }, /* 248 */
90- { 5, 0, printargs, "SYS_249" }, /* 249 */
91-
92- { 4, 0, printargs, "ipc_subcall" }, /* 250 */
93- { 4, TI, sys_semop, "semop" }, /* 251 */
94- { 4, TI, sys_semget, "semget" }, /* 252 */
95- { 4, TI, sys_semctl, "semctl" }, /* 253 */
96- { 4, 0, printargs, "ipc_subcall" }, /* 254 */
97- { 4, 0, printargs, "ipc_subcall" }, /* 255 */
98- { 4, 0, printargs, "ipc_subcall" }, /* 256 */
99- { 4, 0, printargs, "ipc_subcall" }, /* 257 */
100- { 4, 0, printargs, "ipc_subcall" }, /* 258 */
101- { 4, 0, printargs, "ipc_subcall" }, /* 259 */
102- { 4, 0, printargs, "ipc_subcall" }, /* 260 */
103- { 4, TI, sys_msgsnd, "msgsnd" }, /* 261 */
104- { 4, TI, sys_msgrcv, "msgrcv" }, /* 262 */
105- { 4, TI, sys_msgget, "msgget" }, /* 263 */
106- { 4, TI, sys_msgctl, "msgctl" }, /* 264 */
107- { 4, 0, printargs, "ipc_subcall" }, /* 265 */
108- { 4, 0, printargs, "ipc_subcall" }, /* 266 */
109- { 4, 0, printargs, "ipc_subcall" }, /* 267 */
110- { 4, 0, printargs, "ipc_subcall" }, /* 268 */
111- { 4, 0, printargs, "ipc_subcall" }, /* 269 */
112- { 4, 0, printargs, "ipc_subcall" }, /* 270 */
113- { 4, TI, sys_shmat, "shmat" }, /* 271 */
114- { 4, TI, sys_shmdt, "shmdt" }, /* 272 */
115- { 4, TI, sys_shmget, "shmget" }, /* 273 */
116- { 4, TI, sys_shmctl, "shmctl" }, /* 274 */
117- { 5, 0, printargs, "SYS_275" }, /* 275 */
118- { 5, 0, printargs, "SYS_276" }, /* 276 */
119- { 5, 0, printargs, "SYS_277" }, /* 277 */
120- { 5, 0, printargs, "SYS_278" }, /* 278 */
121- { 5, 0, printargs, "SYS_279" }, /* 279 */
122-
123- { 8, 0, printargs, "socket_subcall"}, /* 280 */
124- { 3, TN, sys_socket, "socket" }, /* 281 */
125- { 3, TN, sys_bind, "bind" }, /* 282 */
126- { 3, TN, sys_connect, "connect" }, /* 283 */
127- { 2, TN, sys_listen, "listen" }, /* 284 */
128- { 3, TN, sys_accept, "accept" }, /* 285 */
129- { 3, TN, sys_getsockname, "getsockname" }, /* 286 */
130- { 3, TN, sys_getpeername, "getpeername" }, /* 287 */
131- { 4, TN, sys_socketpair, "socketpair" }, /* 288 */
132- { 4, TN, sys_send, "send" }, /* 289 */
133- { 4, TN, sys_recv, "recv" }, /* 290 */
134- { 6, TN, sys_sendto, "sendto" }, /* 291 */
135- { 6, TN, sys_recvfrom, "recvfrom" }, /* 292 */
136- { 2, TN, sys_shutdown, "shutdown" }, /* 293 */
137- { 5, TN, sys_setsockopt, "setsockopt" }, /* 294 */
138- { 5, TN, sys_getsockopt, "getsockopt" }, /* 295 */
139- { 5, TN, sys_sendmsg, "sendmsg" }, /* 296 */
140- { 5, TN, sys_recvmsg, "recvmsg" }, /* 297 */
141+ { 5, 0, printargs, "SYS_223" }, /* 223 */
142+ { 0, 0, printargs, "gettid" }, /* 224 */
143+ { 4, TD, sys_readahead, "readahead" }, /* 225 */
144+ { 5, TF, sys_setxattr, "setxattr" }, /* 226 */
145+ { 5, TF, sys_setxattr, "lsetxattr" }, /* 227 */
146+ { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 228 */
147+ { 4, TF, sys_getxattr, "getxattr" }, /* 229 */
148+ { 4, TF, sys_getxattr, "lgetxattr" }, /* 230 */
149+ { 4, 0, sys_fgetxattr, "fgetxattr" }, /* 231 */
150+ { 3, TF, sys_listxattr, "listxattr" }, /* 232 */
151+ { 3, TF, sys_listxattr, "llistxattr" }, /* 233 */
152+ { 3, 0, sys_flistxattr, "flistxattr" }, /* 234 */
153+ { 2, TF, sys_removexattr, "removexattr" }, /* 235 */
154+ { 2, TF, sys_removexattr, "lremovexattr" }, /* 236 */
155+ { 2, 0, sys_fremovexattr, "fremovexattr" }, /* 237 */
156+ { 2, TS, sys_kill, "tkill" }, /* 238 */
157+ { 4, TF, sys_sendfile64, "sendfile64" }, /* 239 */
158+ { 5, 0, sys_futex, "futex" }, /* 240 */
159+ { 3, 0, sys_sched_setaffinity, "sched_setaffinity" },/* 241 */
160+ { 3, 0, sys_sched_getaffinity, "sched_getaffinity" },/* 242 */
161+ { 1, 0, printargs, "set_thread_area" }, /* 243 */
162+ { 1, 0, printargs, "get_thread_area" }, /* 244 */
163+ { 2, 0, sys_io_setup, "io_setup" }, /* 245 */
164+ { 1, 0, sys_io_destroy, "io_destroy" }, /* 246 */
165+ { 5, 0, sys_io_getevents, "io_getevents" }, /* 247 */
166+ { 3, 0, sys_io_submit, "io_submit" }, /* 248 */
167+ { 3, 0, sys_io_cancel, "io_cancel" }, /* 249 */
168+ { 5, 0, sys_fadvise64, "fadvise64" }, /* 250 */
169+ { 5, 0, printargs, "SYS_251" }, /* 251 */
170+ { 1, TP, sys_exit, "exit_group" }, /* 252 */
171+ { 4, 0, printargs, "lookup_dcookie"}, /* 253 */
172+ { 1, 0, sys_epoll_create, "epoll_create" }, /* 254 */
173+ { 4, 0, sys_epoll_ctl, "epoll_ctl" }, /* 255 */
174+ { 4, 0, sys_epoll_wait, "epoll_wait" }, /* 256 */
175+ { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 257 */
176+ { 1, 0, printargs, "set_tid_address"}, /* 258 */
177+ { 3, 0, sys_timer_create, "timer_create" }, /* 259 */
178+ { 4, 0, sys_timer_settime, "timer_settime" }, /* 260 */
179+ { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 261 */
180+ { 1, 0, sys_timer_getoverrun, "timer_getoverrun"}, /* 262 */
181+ { 1, 0, sys_timer_delete, "timer_delete" }, /* 263 */
182+ { 2, 0, sys_clock_settime, "clock_settime" }, /* 264 */
183+ { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 265 */
184+ { 2, 0, sys_clock_getres, "clock_getres" }, /* 266 */
185+ { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 267 */
186+ { 3, TF, sys_statfs64, "statfs64" }, /* 268 */
187+ { 3, 0, sys_fstatfs64, "fstatfs64" }, /* 269 */
188+ { 3, TS, sys_tgkill, "tgkill" }, /* 270 */
189+ { 2, TF, sys_utimes, "utimes" }, /* 271 */
190+ { 6, 0, sys_fadvise64_64, "fadvise64_64" }, /* 272 */
191+ { 5, 0, printargs, "vserver" }, /* 273 */
192+ { 5, 0, printargs, "mbind" }, /* 274 */
193+ { 5, 0, printargs, "get_mempolicy" }, /* 275 */
194+ { 5, 0, printargs, "set_mempolicy" }, /* 276 */
195+ { 4, 0, sys_mq_open, "mq_open" }, /* 277 */
196+ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 278 */
197+ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 279 */
198+ { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 280 */
199+ { 2, 0, sys_mq_notify, "mq_notify" }, /* 281 */
200+ { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 282 */
201+ { 5, 0, printargs, "sys_kexec_load"}, /* 283 */
202+ { 5, TP, sys_waitid, "waitid" }, /* 284 */
203+ { 5, 0, printargs, "add_key" }, /* 285 */
204+ { 5, 0, printargs, "request_key" }, /* 286 */
205+ { 5, 0, printargs, "keyctl" }, /* 287 */
206+ { 5, 0, printargs, "ioprio_set" }, /* 288 */
207+ { 5, 0, printargs, "ioprio_get" }, /* 289 */
208+ { 5, 0, printargs, "inotify_init" }, /* 290 */
209+ { 5, 0, printargs, "inotify_add_watch" }, /* 291 */
210+ { 5, 0, printargs, "inotify_rm_watch" }, /* 292 */
211+ { 5, 0, printargs, "SYS_293" }, /* 293 */
212+ { 5, 0, printargs, "SYS_294" }, /* 294 */
213+ { 5, 0, printargs, "SYS_295" }, /* 295 */
214+ { 5, 0, printargs, "SYS_296" }, /* 296 */
215+ { 5, 0, printargs, "SYS_297" }, /* 297 */
216 { 5, 0, printargs, "SYS_298" }, /* 298 */
217 { 5, 0, printargs, "SYS_299" }, /* 299 */
218+
219+#if SYS_socket_subcall != 300
220+ #error fix me
221+#endif
222+ { 8, 0, printargs, "socket_subcall"}, /* 300 */
223+ { 3, TN, sys_socket, "socket" }, /* 301 */
224+ { 3, TN, sys_bind, "bind" }, /* 302 */
225+ { 3, TN, sys_connect, "connect" }, /* 303 */
226+ { 2, TN, sys_listen, "listen" }, /* 304 */
227+ { 3, TN, sys_accept, "accept" }, /* 305 */
228+ { 3, TN, sys_getsockname, "getsockname" }, /* 306 */
229+ { 3, TN, sys_getpeername, "getpeername" }, /* 307 */
230+ { 4, TN, sys_socketpair, "socketpair" }, /* 308 */
231+ { 4, TN, sys_send, "send" }, /* 309 */
232+ { 4, TN, sys_recv, "recv" }, /* 310 */
233+ { 6, TN, sys_sendto, "sendto" }, /* 311 */
234+ { 6, TN, sys_recvfrom, "recvfrom" }, /* 312 */
235+ { 2, TN, sys_shutdown, "shutdown" }, /* 313 */
236+ { 5, TN, sys_setsockopt, "setsockopt" }, /* 314 */
237+ { 5, TN, sys_getsockopt, "getsockopt" }, /* 315 */
238+ { 5, TN, sys_sendmsg, "sendmsg" }, /* 316 */
239+ { 5, TN, sys_recvmsg, "recvmsg" }, /* 317 */
240+
241+#if SYS_ipc_subcall != 318
242+ #error fix me
243+#endif
244+ { 4, 0, printargs, "ipc_subcall" }, /* 318 */
245+ { 4, TI, sys_semop, "semop" }, /* 319 */
246+ { 4, TI, sys_semget, "semget" }, /* 320 */
247+ { 4, TI, sys_semctl, "semctl" }, /* 321 */
248+ { 5, TI, sys_semtimedop, "semtimedop" }, /* 322 */
249+ { 4, 0, printargs, "ipc_subcall" }, /* 323 */
250+ { 4, 0, printargs, "ipc_subcall" }, /* 324 */
251+ { 4, 0, printargs, "ipc_subcall" }, /* 325 */
252+ { 4, 0, printargs, "ipc_subcall" }, /* 326 */
253+ { 4, 0, printargs, "ipc_subcall" }, /* 327 */
254+ { 4, 0, printargs, "ipc_subcall" }, /* 328 */
255+ { 4, TI, sys_msgsnd, "msgsnd" }, /* 329 */
256+ { 4, TI, sys_msgrcv, "msgrcv" }, /* 330 */
257+ { 4, TI, sys_msgget, "msgget" }, /* 331 */
258+ { 4, TI, sys_msgctl, "msgctl" }, /* 332 */
259+ { 4, 0, printargs, "ipc_subcall" }, /* 333 */
260+ { 4, 0, printargs, "ipc_subcall" }, /* 334 */
261+ { 4, 0, printargs, "ipc_subcall" }, /* 335 */
262+ { 4, 0, printargs, "ipc_subcall" }, /* 336 */
263+ { 4, 0, printargs, "ipc_subcall" }, /* 337 */
264+ { 4, 0, printargs, "ipc_subcall" }, /* 338 */
265+ { 4, TI, sys_shmat, "shmat" }, /* 339 */
266+ { 4, TI, sys_shmdt, "shmdt" }, /* 340 */
267+ { 4, TI, sys_shmget, "shmget" }, /* 341 */
268+ { 4, TI, sys_shmctl, "shmctl" }, /* 342 */
diff --git a/meta/packages/strace/strace/arm-compilation.patch b/meta/packages/strace/strace/arm-compilation.patch
new file mode 100644
index 0000000000..9dd7133ce1
--- /dev/null
+++ b/meta/packages/strace/strace/arm-compilation.patch
@@ -0,0 +1,10 @@
1--- strace-4.4.98/syscall.c~arm-compilation 2003-06-04 01:29:04.000000000 +0200
2+++ strace-4.4.98/syscall.c 2003-09-01 00:13:02.000000000 +0200
3@@ -696,6 +696,7 @@
4 static int d0;
5 #elif defined (ARM)
6 static struct pt_regs regs;
7+ static long r0;
8 #elif defined (ALPHA)
9 static long r0;
10 static long a3;
diff --git a/meta/packages/strace/strace/arm-syscall.patch b/meta/packages/strace/strace/arm-syscall.patch
new file mode 100644
index 0000000000..952d09bb24
--- /dev/null
+++ b/meta/packages/strace/strace/arm-syscall.patch
@@ -0,0 +1,16 @@
1
2#
3# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
4#
5
6--- /dev/null
7+++ strace-4.4.98/linux/arm/syscall.h
8@@ -0,0 +1,2 @@
9+#include "../syscall.h"
10+#include "dummy.h"
11--- /dev/null
12+++ strace-4.4.98/linux/arm/dummy.h
13@@ -0,0 +1,3 @@
14+#include "../dummy.h"
15+#undef SYS_waitpid
16+#define sys_waitpid printargs
diff --git a/meta/packages/strace/strace/strace-fix-arm-bad-syscall.patch b/meta/packages/strace/strace/strace-fix-arm-bad-syscall.patch
new file mode 100644
index 0000000000..d7d7426b74
--- /dev/null
+++ b/meta/packages/strace/strace/strace-fix-arm-bad-syscall.patch
@@ -0,0 +1,18 @@
1--- strace-4.5.12-orig/syscall.c 2005-06-08 21:45:28.000000000 +0100
2+++ strace-4.5.12/syscall.c 2005-10-25 19:26:39.000000000 +0100
3@@ -1013,6 +1013,15 @@ struct tcb *tcp;
4 /*
5 * Note: we only deal with only 32-bit CPUs here.
6 */
7+
8+ if (!(tcp->flags & TCB_INSYSCALL) &&
9+ (tcp->flags & TCB_WAITEXECVE)) {
10+ /* caught a fake syscall from the execve's exit */
11+ tcp->flags &= ~TCB_WAITEXECVE;
12+ return 0;
13+ }
14+
15+
16 if (regs.ARM_cpsr & 0x20) {
17 /*
18 * Get the Thumb-mode system call number
diff --git a/meta/packages/strace/strace_4.5.14.bb b/meta/packages/strace/strace_4.5.14.bb
new file mode 100644
index 0000000000..b301d0100b
--- /dev/null
+++ b/meta/packages/strace/strace_4.5.14.bb
@@ -0,0 +1,16 @@
1DESCRIPTION = "strace is a system call tracing tool."
2SECTION = "console/utils"
3LICENSE = "GPL"
4PR = "r4"
5
6SRC_URI = "${SOURCEFORGE_MIRROR}/strace/strace-${PV}.tar.bz2 \
7 file://glibc-2.5.patch;patch=1 \
8 file://arm-eabi.patch;patch=1 \
9 file://drop-ctl-proc.patch;patch=1 \
10 file://sh-arch-update.patch;patch=1 \
11 file://sh-syscall-update.patch;patch=1 \
12 file://strace-fix-arm-bad-syscall.patch;patch=1"
13
14inherit autotools
15
16export INCLUDES = "-I. -I./linux"