In Linux 2.6.11 (and perhaps earlier), the sys_init_module system call takes 3 arguments.
strace 4.5.11 expects the init_module system call to take 2 arguments.

I've created a patch below to correct the problem. I assume that all the linux syscallent.h
files will need to be modified, but I only modified the linux/syscallent.h file.

Please let me know if you have any questions,

James Lentini
jlentini@gmail.google.com

--- strace-4.5.11/bjm.c~        2004-09-03 23:39:20.000000000 -0400
+++ strace-4.5.11/bjm.c         2005-05-09 21:48:41.801195000 -0400
@@ -198,8 +198,9 @@
 struct tcb *tcp;
 {
        if (entering(tcp)) {
-               printpath(tcp, tcp->u_arg[0]);
-               tprintf(", %#lx", tcp->u_arg[1]);
+               tprintf("%#lx, ", tcp->u_arg[0]);
+               tprintf("%lu, ", tcp->u_arg[1]);
+               printstr(tcp, tcp->u_arg[2], -1);
        }
        return 0;
 }

--- strace-4.5.11/linux/syscallent.h~   2005-02-01 23:17:00.000000000 -0500
+++ strace-4.5.11/linux/syscallent.h    2005-05-09 20:58:26.993838000 -0400
@@ -164,7 +164,7 @@
        { 3,    0,      sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
-       { 2,    0,      sys_init_module,        "init_module"   }, /* 128 */
+       { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_delete_module,      "delete_module" }, /* 129 */
        { 1,    0,      sys_get_kernel_syms,    "get_kernel_syms"}, /* 130 */
        { 4,    0,      sys_quotactl,           "quotactl"      }, /* 131 */