]> granicus.if.org Git - strace/commitdiff
Implement finit_module decoding
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 5 Feb 2014 16:17:02 +0000 (16:17 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 5 Feb 2014 16:17:02 +0000 (16:17 +0000)
* bjm.c (module_init_flags): New xlat structure.
(sys_finit_module): New function.
* linux/dummy.h (sys_finit_module): Remove.
* linux/syscall.h (sys_finit_module): New prototype.

bjm.c
linux/dummy.h
linux/syscall.h

diff --git a/bjm.c b/bjm.c
index 6f1ee57a4fdf56444a9a5a090292bb66e5a36ea3..d7acff0dee0cc5686d1b0ad959b29603896fffc5 100644 (file)
--- a/bjm.c
+++ b/bjm.c
@@ -200,3 +200,30 @@ sys_init_module(struct tcb *tcp)
        }
        return 0;
 }
+
+#define MODULE_INIT_IGNORE_MODVERSIONS  1
+#define MODULE_INIT_IGNORE_VERMAGIC     2
+
+static const struct xlat module_init_flags[] = {
+       XLAT(MODULE_INIT_IGNORE_MODVERSIONS),
+       XLAT(MODULE_INIT_IGNORE_VERMAGIC),
+       XLAT_END
+};
+
+int
+sys_finit_module(struct tcb *tcp)
+{
+       if (exiting(tcp))
+               return 0;
+
+       /* file descriptor */
+       printfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       /* param_values */
+       printstr(tcp, tcp->u_arg[1], -1);
+       tprints(", ");
+       /* flags */
+       printflags(module_init_flags, tcp->u_arg[2], "MODULE_INIT_???");
+
+       return 0;
+}
index 78d264f688a56ff78dc538594a51fd0dbc97734b..b9cd91b32bc588dcef0b1271633b7def2d8dc1bc 100644 (file)
@@ -33,7 +33,6 @@
 
 /* still unfinished */
 #define        sys_add_key             printargs
-#define        sys_finit_module        printargs
 #define        sys_ioperm              printargs
 #define        sys_iopl                printargs
 #define        sys_ioprio_get          printargs
index d8ce91fe0ea818bbc8ef4920150f4002a6efa2ad..17b9431d2ad7f094e6dcfaa2db0116d9f475ef6d 100644 (file)
@@ -74,6 +74,7 @@ int sys_fchown();
 int sys_fchownat();
 int sys_fcntl();
 int sys_fgetxattr();
+int sys_finit_module();
 int sys_flistxattr();
 int sys_flock();
 int sys_fork();