Hi! I did the checks myself now, thanks to debian porters machines.
armel build fixes confirmed. hppa issues fixed and tested, patch attached. I hope the format is ok, this is my first official git commit ;) Best regards Frederik Schüler On Monday 05 October 2009 17:45:28 Dmitry V. Levin wrote: > Hi, > > On Tue, Sep 29, 2009 at 04:10:48AM +0400, Dmitry V. Levin wrote: > > On Tue, Sep 22, 2009 at 01:04:45AM +0200, Frederik Schüler wrote: > > [...] > > > I attached my current diff, you might want to crosscheck, waiting for debian > > > hppa porters to confirm the issues are fixed. > > > > Is there any feedback from hppa porters? > > Well, I see no feedback from hppa porters so far. > What we are going to do with hppa changes and 4.5.19 release? > > > -- > ldv > -- ENOSIG
commit 15e2b7ef1ebb1c619c602c1855e65ac75cef6fa8 Author: Frederik Schüler <[email protected]> Date: Mon Oct 5 22:50:07 2009 +0200 Fix HPPA issues and prepare Debian release. This patch is based on the work of Carlos O'Donell <[email protected]> and Helge Deller <[email protected]>, found in the Debian Bugs #546619 and #437928. * ipc.c: HPPA does not use an IPC multiplexer. * linux/hppa/syscallent.h: add missing syscalls. * signal.c: architectures using function pointers, like hppa, may need to manipulate the function pointer to compute the result of a comparison. However, the SA_HANDLER function pointer exists only in the address space of the traced process, and can't be manipulated by strace. In order to prevent the compiler from generating code to manipulate SA_HANDLER we cast the function pointers to long. * syscall.c: more than maximum number of syscall arguments accessed causing upeek failures. * debian/rules: don't ship ChangeLog anymore, deprecated. * debian/control: update to Debian standards version 3.8.1, and remove Roland from the Maintainers list. This closes Debian #521458 * debian/changelog: document changes and prepare for release. diff --git a/debian/changelog b/debian/changelog index c351178..3785d8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ strace (4.5.19-1) unstable; urgency=low + [ Dmitry V. Levin ] * New upstream release. + Fixed FTBFS on armel, closes: #520084, #535564 + Marked sendfile(2) as a network syscall, closes: #509499 @@ -7,7 +8,14 @@ strace (4.5.19-1) unstable; urgency=low + Changed strace to exit/kill with traced process exitcode/signal, closes: #37665 - -- Dmitry V. Levin <[email protected]> Mon, 14 Sep 2009 12:34:56 +0000 + [ Frederik Schüler ] + * Move myself from uploaders to maintainers, and drop Roland from the list, + closes: #521458 + * Apply hppa fixes, thanks to Carlos O'Donell <[email protected]> + and Helge Deller <[email protected]> for the fixes, closes: #546619, #437928 + * Update standards-version to 3.8.1. + + -- Frederik Schüler <[email protected]> Mon, 05 Oct 2009 22:39:54 +0200 strace (4.5.18-1) unstable; urgency=low diff --git a/debian/control b/debian/control index 6ad7cb9..da46c25 100644 --- a/debian/control +++ b/debian/control @@ -1,10 +1,9 @@ Source: strace -Maintainer: Roland McGrath <[email protected]> -Uploaders: Frederik Schüler <[email protected]> +Maintainer: Frederik Schüler <[email protected]> Section: utils Priority: standard Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [i386 powerpc s390 sparc], debhelper (>= 7.0.0) -Standards-Version: 3.8.0 +Standards-Version: 3.8.1.0 Homepage: http://sourceforge.net/projects/strace/ Package: strace diff --git a/debian/rules b/debian/rules index 791f5ef..8f9f316 100755 --- a/debian/rules +++ b/debian/rules @@ -57,7 +57,7 @@ binary-arch: build checkroot dh_installdocs -s dh_installman -s dh_installexamples -s - dh_installchangelogs -s ChangeLog + dh_installchangelogs -s dh_install -s dh_link -s dh_strip -s diff --git a/ipc.c b/ipc.c index ab29412..bc40805 100644 --- a/ipc.c +++ b/ipc.c @@ -387,7 +387,8 @@ struct tcb *tcp; } if (syserror(tcp)) return 0; -#ifdef LINUX +/* HPPA does not use an IPC multiplexer. */ +#ifdef LINUX && !defined(HPPA) if (umove(tcp, tcp->u_arg[2], &raddr) < 0) return RVAL_NONE; tcp->u_rval = raddr; diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h index c8ff52e..0906b58 100644 --- a/linux/hppa/syscallent.h +++ b/linux/hppa/syscallent.h @@ -197,10 +197,10 @@ { 4, TI, sys_msgrcv, "msgrcv" }, /* 189 */ { 4, TI, sys_msgget, "msgget" }, /* 190 */ { 4, TI, sys_msgctl, "msgctl" }, /* 191 */ - { 4, TI, sys_shmat, "shmat" }, /* 192 */ - { 4, TI, sys_shmdt, "shmdt" }, /* 193 */ - { 4, TI, sys_shmget, "shmget" }, /* 194 */ - { 4, TI, sys_shmctl, "shmctl" }, /* 195 */ + { 3, TI, sys_shmat, "shmat" }, /* 192 */ + { 1, TI, sys_shmdt, "shmdt" }, /* 193 */ + { 3, TI, sys_shmget, "shmget" }, /* 194 */ + { 3, TI, sys_shmctl, "shmctl" }, /* 195 */ { 5, 0, sys_getpmsg, "getpmsg" }, /* 196 */ { 5, 0, sys_putpmsg, "putpmsg" }, /* 197 */ { 2, TF, sys_lstat64, "lstat64" }, /* 198 */ @@ -302,4 +302,25 @@ { 4, TD, printargs, "vmsplice" }, /* 294 */ { 6, 0, sys_move_pages, "move_pages" }, /* 295 */ { 3, 0, sys_getcpu, "getcpu" }, /* 296 */ - { 5, TD, sys_epoll_pwait, "epoll_pwait" }, /* 297 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 297 */ + { 3, TF, sys_statfs64, "statfs64" }, /* 298 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 299 */ + { 4, 0, printargs, "kexec_load" }, /* 300 */ + { 4, TD|TF, sys_utimensat, "utimensat" }, /* 301 */ + { 3, TD, printargs, "signalfd" }, /* 302 */ + { 4, TD, printargs, "timerfd" }, /* 303 */ + { 1, TD, sys_eventfd, "eventfd" }, /* 304 */ + { 6, TF, sys_fallocate, "fallocate" }, /* 305 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 306 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 307 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 308 */ + { 4, TD|TS, printargs, "signalfd4" }, /* 309 */ + { 2, TD, printargs, "eventfd2" }, /* 310 */ + { 1, 0, printargs, "epoll_create1" }, /* 311 */ + { 3, TD, printargs, "dup3" }, /* 312 */ + { 2, TD, printargs, "pipe2" }, /* 313 */ + { 1, TD, printargs, "inotify_init1" }, /* 314 */ + { 5, TD, printargs, "preadv" }, /* 315 */ + { 5, TD, printargs, "pwritev" }, /* 316 */ + { 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 317 */ + { 5, 0, printargs, "perf_counter_open" }, /* 318 */ diff --git a/signal.c b/signal.c index 76504f6..b1b20e0 100644 --- a/signal.c +++ b/signal.c @@ -1121,11 +1121,19 @@ struct tcb *tcp; else if (umove(tcp, addr, &sa) < 0) tprintf("{...}"); else { - if (sa.SA_HANDLER == SIG_ERR) + /* Architectures using function pointers, like + * hppa, may need to manipulate the function pointer + * to compute the result of a comparison. However, + * the SA_HANDLER function pointer exists only in + * the address space of the traced process, and can't + * be manipulated by strace. In order to prevent the + * compiler from generating code to manipulate + * SA_HANDLER we cast the function pointers to long. */ +if ((long)sa.SA_HANDLER == (long)SIG_ERR) tprintf("{SIG_ERR, "); - else if (sa.SA_HANDLER == SIG_DFL) + else if ((long)sa.SA_HANDLER == (long)SIG_DFL) tprintf("{SIG_DFL, "); - else if (sa.SA_HANDLER == SIG_IGN) { + else if ((long)sa.SA_HANDLER == (long)SIG_DFL) { #ifndef USE_PROCFS if (tcp->u_arg[0] == SIGTRAP) { tcp->flags |= TCB_SIGTRAPPED; @@ -1932,11 +1940,11 @@ sys_rt_sigaction(struct tcb *tcp) goto after_sa; } - if (sa.__sa_handler == SIG_ERR) + if ((long)sa.__sa_handler == (long)SIG_ERR) tprintf("{SIG_ERR, "); - else if (sa.__sa_handler == SIG_DFL) + else if ((long)sa.__sa_handler == (long)SIG_DFL) tprintf("{SIG_DFL, "); - else if (sa.__sa_handler == SIG_IGN) + else if ((long)sa.__sa_handler == (long)SIG_IGN) tprintf("{SIG_IGN, "); else tprintf("{%#lx, ", (long) sa.__sa_handler); diff --git a/syscall.c b/syscall.c index 26b1a9d..a8e4366 100644 --- a/syscall.c +++ b/syscall.c @@ -2119,12 +2119,19 @@ syscall_enter(struct tcb *tcp) { int i; + long args[] = { PT_GR26-4*0, PT_GR26-4*1, + PT_GR26-4*2, PT_GR26-4*3, + PT_GR26-4*4, PT_GR26-4*5 }; + + /* How many arguments does this syscall have? */ if (tcp->scno >= 0 && tcp->scno < nsyscalls && sysent[tcp->scno].nargs != -1) + /* Syscall is known, and number of arguments is known. */ tcp->u_nargs = sysent[tcp->scno].nargs; else - tcp->u_nargs = MAX_ARGS; + /* Unknown syscall, assume maximum number of arguments. */ + tcp->u_nargs = sizeof(args)/sizeof(args[0]); for (i = 0; i < tcp->u_nargs; i++) { - if (upeek(tcp, PT_GR26-4*i, &tcp->u_arg[i]) < 0) + if (upeek(tcp, args[i], &tcp->u_arg[i]) < 0) return -1; } }
signature.asc
Description: This is a digitally signed message part.
------------------------------------------------------------------------------ Come build with us! The BlackBerry® Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9-12, 2009. Register now! http://p.sf.net/sfu/devconf
_______________________________________________ Strace-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
