]> granicus.if.org Git - strace/commitdiff
Mpersify tprint_msgsnd and tprint_msgrcv
authorElvira Khabirova <lineprinter0@gmail.com>
Wed, 19 Aug 2015 02:33:34 +0000 (05:33 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Fri, 28 Aug 2015 08:46:23 +0000 (08:46 +0000)
Fix multiple personalities support in tprint_msgsnd and tprint_msgrcv
by converting tprint_msgbuf into a mpersified printer.

* print_msgbuf.c (msgbuf_t): New typedef.  Mpersify it.
(tprint_msgbuf): Use it instead of long.
Wrap function name into MPERS_PRINTER_DECL.
* ipc_msg.c (tprint_msgsnd, tprint_msgrcv): Use mpersified
tprint_msgbuf.

ipc_msg.c
print_msgbuf.c

index 5052eacea8b73c100d9abc5b40a76666079630eb..3ec04eb339789be939f99fda211da6ade2a3855c 100644 (file)
--- a/ipc_msg.c
+++ b/ipc_msg.c
@@ -38,8 +38,6 @@
 #include "xlat/ipc_msg_flags.h"
 #include "xlat/resource_flags.h"
 
-extern void tprint_msgbuf(struct tcb *tcp, const long addr, const unsigned long count);
-
 SYS_FUNC(msgget)
 {
        if (tcp->u_arg[0])
@@ -56,7 +54,7 @@ static void
 tprint_msgsnd(struct tcb *tcp, const long addr, const unsigned long count,
              const unsigned long flags)
 {
-       tprint_msgbuf(tcp, addr, count);
+       MPERS_PRINTER_NAME(tprint_msgbuf)(tcp, addr, count);
        printflags(ipc_msg_flags, flags, "MSG_???");
 }
 
@@ -77,7 +75,7 @@ static void
 tprint_msgrcv(struct tcb *tcp, const long addr, const unsigned long count,
              const long msgtyp)
 {
-       tprint_msgbuf(tcp, addr, count);
+       MPERS_PRINTER_NAME(tprint_msgbuf)(tcp, addr, count);
        tprintf("%ld, ", msgtyp);
 }
 
index ac3dab09a8088467845e393a1c4ce3e0b3c3ecef..c7e87e495f64578ab83653f971ef548aec597403 100644 (file)
 
 #include "defs.h"
 
-void
-tprint_msgbuf(struct tcb *tcp, const long addr, const unsigned long count)
+#include <sys/msg.h>
+
+#include DEF_MPERS_TYPE(msgbuf_t)
+typedef struct msgbuf msgbuf_t;
+#include MPERS_DEFS
+
+MPERS_PRINTER_DECL(void, tprint_msgbuf)(struct tcb *tcp, const long addr, const unsigned long count)
 {
-       long mtype;
+       msgbuf_t msg;
 
-       if (!umove_or_printaddr(tcp, addr, &mtype)) {
-               tprintf("{%lu, ", mtype);
-               printstr(tcp, addr + sizeof(mtype), count);
+       if (!umove_or_printaddr(tcp, addr, &msg)) {
+               tprintf("{%lu, ", (long) msg.mtype);
+               printstr(tcp, addr + sizeof(msg.mtype), count);
                tprints("}");
        }
        tprintf(", %lu, ", count);