]> granicus.if.org Git - strace/commitdiff
tests: add variants of IPC tests with different xlat verbosity levels
authorEugene Syromyatnikov <evgsyr@gmail.com>
Sat, 7 Apr 2018 00:30:43 +0000 (02:30 +0200)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 7 May 2018 10:52:16 +0000 (10:52 +0000)
* tests/.gitignore: Add ipc_msg-Xabbrev, ipc_msg-Xraw, ipc_msg-Xverbose,
ipc_msgbuf-Xabbrev, ipc_msgbuf-Xraw, ipc_msgbuf-Xverbose,
ipc_sem-Xabbrev, ipc_sem-Xraw, ipc_sem-Xverbose, ipc_shm-Xabbrev,
ipc_shm-Xraw, and ipc_shm-Xverbose.
* tests/pure_executables.list: Likewise.
* tests/gen_tests.in (ipc_msg-Xabbrev, ipc_msg-Xraw, ipc_msg-Xverbose,
ipc_msgbuf-Xabbrev, ipc_msgbuf-Xraw, ipc_msgbuf-Xverbose,
ipc_sem-Xabbrev, ipc_sem-Xraw, ipc_sem-Xverbose, ipc_shm-Xabbrev,
ipc_shm-Xraw, ipc_shm-Xverbose): New tests.
* tests/ipc_msg-Xabbrev.c: New file.
* tests/ipc_msg-Xraw.c: Likewise.
* tests/ipc_msg-Xverbose.c: Likewise.
* tests/ipc_msgbuf-Xabbrev.c: Likewise.
* tests/ipc_msgbuf-Xraw.c: Likewise.
* tests/ipc_msgbuf-Xverbose.c: Likewise.
* tests/ipc_sem-Xabbrev.c: Likewise.
* tests/ipc_sem-Xraw.c: Likewise.
* tests/ipc_sem-Xverbose.c: Likewise.
* tests/ipc_shm-Xabbrev.c: Likewise.
* tests/ipc_shm-Xraw.c: Likewise.
* tests/ipc_shm-Xverbose.c: Likewise.
* tests/ipc.sh: Add support for accepting test arguments.
* tests/ipc_msgbuf.test: Likewise.
* tests/ipc_msg.c: Add handling of XLAT_RAW and XLAT_VERBOSE flags.
* tests/ipc_msgbuf.c: Likewise.
* tests/ipc_sem.c: Likewise.
* tests/ipc_shm.c: Likewise.

21 files changed:
tests/.gitignore
tests/gen_tests.in
tests/ipc.sh
tests/ipc_msg-Xabbrev.c [new file with mode: 0644]
tests/ipc_msg-Xraw.c [new file with mode: 0644]
tests/ipc_msg-Xverbose.c [new file with mode: 0644]
tests/ipc_msg.c
tests/ipc_msgbuf-Xabbrev.c [new file with mode: 0644]
tests/ipc_msgbuf-Xraw.c [new file with mode: 0644]
tests/ipc_msgbuf-Xverbose.c [new file with mode: 0644]
tests/ipc_msgbuf.c
tests/ipc_msgbuf.test
tests/ipc_sem-Xabbrev.c [new file with mode: 0644]
tests/ipc_sem-Xraw.c [new file with mode: 0644]
tests/ipc_sem-Xverbose.c [new file with mode: 0644]
tests/ipc_sem.c
tests/ipc_shm-Xabbrev.c [new file with mode: 0644]
tests/ipc_shm-Xraw.c [new file with mode: 0644]
tests/ipc_shm-Xverbose.c [new file with mode: 0644]
tests/ipc_shm.c
tests/pure_executables.list

index 4201e5ba115e218bfbe4f3a219e848d19ff32869..082618dc6d3ed6df1b7a40b1aa91aaa49ea9b8f4 100644 (file)
@@ -154,9 +154,21 @@ ioprio
 ip_mreq
 ipc
 ipc_msg
+ipc_msg-Xabbrev
+ipc_msg-Xraw
+ipc_msg-Xverbose
 ipc_msgbuf
+ipc_msgbuf-Xabbrev
+ipc_msgbuf-Xraw
+ipc_msgbuf-Xverbose
 ipc_sem
+ipc_sem-Xabbrev
+ipc_sem-Xraw
+ipc_sem-Xverbose
 ipc_shm
+ipc_shm-Xabbrev
+ipc_shm-Xraw
+ipc_shm-Xverbose
 is_linux_mips_n64
 kcmp
 kcmp-y
index 0d4b2418aa04e2c3ae883ec568d522d53e2a1682..eac14379649ba049b923d5ffe8c461063d71398e 100644 (file)
@@ -151,8 +151,20 @@ ioprio     -a18 -e trace=ioprio_get,ioprio_set
 ip_mreq        -e trace=setsockopt
 ipc    -a19
 ipc_msg        +ipc.sh -a26
+ipc_msg-Xabbrev        +ipc.sh -Xabbrev -a26
+ipc_msg-Xraw   +ipc.sh -Xraw -a16
+ipc_msg-Xverbose       +ipc.sh -Xverbose -a34
+ipc_msgbuf-Xabbrev     +ipc_msgbuf.test -Xabbrev
+ipc_msgbuf-Xraw        +ipc_msgbuf.test -Xraw -a22
+ipc_msgbuf-Xverbose    +ipc_msgbuf.test -Xverbose
 ipc_sem        +ipc.sh -a29
+ipc_sem-Xabbrev        +ipc.sh -Xabbrev -a29
+ipc_sem-Xraw   +ipc.sh -Xraw -a19
+ipc_sem-Xverbose       +ipc.sh -Xverbose -a36
 ipc_shm        +ipc.sh -a29
+ipc_shm-Xabbrev        +ipc.sh -Xabbrev -a29
+ipc_shm-Xraw   +ipc.sh -Xraw -a19
+ipc_shm-Xverbose       +ipc.sh -Xverbose -a36
 kcmp   -a22
 kcmp-y -a22 -y -e trace=kcmp
 kern_features -a16
index 5943c1a7addd4812a1f47344a4e1c51402b4da66..ef55073277a794f3cc108a0310d24ca765a62e13 100644 (file)
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -eipc $args > "$EXP"
+run_strace -eipc "$@" $args > "$EXP"
 match_grep "$LOG" "$EXP"
 
 exit 0
diff --git a/tests/ipc_msg-Xabbrev.c b/tests/ipc_msg-Xabbrev.c
new file mode 100644 (file)
index 0000000..f4535e8
--- /dev/null
@@ -0,0 +1 @@
+#include "ipc_msg.c"
diff --git a/tests/ipc_msg-Xraw.c b/tests/ipc_msg-Xraw.c
new file mode 100644 (file)
index 0000000..9c016d3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ipc_msg.c"
diff --git a/tests/ipc_msg-Xverbose.c b/tests/ipc_msg-Xverbose.c
new file mode 100644 (file)
index 0000000..3f59f98
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ipc_msg.c"
index 701885902d676ebc5cf91424e630232b4cbcc58b..af090353119b4e6e89ac535f5346df15135c4c8c 100644 (file)
 # define TEST_MSGCTL_BOGUS_ADDR 1
 #endif
 
+#if XLAT_RAW
+# define str_ipc_excl_nowait "0xface1c00"
+# define str_ipc_private "0"
+# define str_ipc_rmid "0"
+# define str_ipc_set "0x1"
+# define str_ipc_stat "0x2"
+# define str_msg_stat "0xb"
+# define str_msg_info "0xc"
+# define str_ipc_64 "0x100"
+# define str_bogus_cmd "0xdeadbeef"
+#elif XLAT_VERBOSE
+# define str_ipc_excl_nowait \
+       "0xface1c00 /\\* IPC_EXCL\\|IPC_NOWAIT\\|0xface1000 \\*/"
+# define str_ipc_private "0 /\\* IPC_PRIVATE \\*/"
+# define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
+# define str_ipc_set "0x1 /\\* IPC_SET \\*/"
+# define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_msg_stat "0xb /\\* MSG_STAT \\*/"
+# define str_msg_info "0xc /\\* MSG_INFO \\*/"
+# define str_ipc_64 "0x100 /\\* IPC_64 \\*/"
+# define str_bogus_cmd "0xdeadbeef /\\* MSG_\\?\\?\\? \\*/"
+#else
+# define str_ipc_excl_nowait "IPC_EXCL\\|IPC_NOWAIT\\|0xface1000"
+# define str_ipc_private "IPC_PRIVATE"
+# define str_ipc_rmid "IPC_RMID"
+# define str_ipc_set "IPC_SET"
+# define str_ipc_stat "IPC_STAT"
+# define str_msg_stat "MSG_STAT"
+# define str_msg_info "MSG_INFO"
+# define str_ipc_64 "IPC_64"
+# define str_bogus_cmd "0xdeadbeef /\\* MSG_\\?\\?\\? \\*/"
+#endif
+
 static int id = -1;
 
 static void
 cleanup(void)
 {
        msgctl(id, IPC_RMID, NULL);
-       printf("msgctl\\(%d, (IPC_64\\|)?IPC_RMID, NULL\\) = 0\n", id);
+       printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) += 0\n",
+              id, str_ipc_64, str_ipc_rmid);
        id = -1;
 }
 
@@ -67,7 +101,7 @@ main(void)
 {
        static const key_t private_key =
                (key_t) (0xffffffff00000000ULL | IPC_PRIVATE);
-       static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL;
+       static const key_t bogus_key = (key_t) 0xeca86420fdb9f531ULL;
        static const int bogus_msgid = 0xfdb97531;
        static const int bogus_cmd = 0xdeadbeef;
 #if TEST_MSGCTL_BOGUS_ADDR
@@ -79,37 +113,36 @@ main(void)
        struct msqid_ds ds;
 
        rc = msgget(bogus_key, bogus_flags);
-       printf("msgget\\(%#llx, %s%s%s%#x\\|%#04o\\) = %s\n",
+       printf("msgget\\(%#llx, %s\\|%#04o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key),
-              IPC_CREAT & bogus_flags ? "IPC_CREAT\\|" : "",
-              IPC_EXCL & bogus_flags ? "IPC_EXCL\\|" : "",
-              IPC_NOWAIT & bogus_flags ? "IPC_NOWAIT\\|" : "",
-              bogus_flags & ~(0777 | IPC_CREAT | IPC_EXCL | IPC_NOWAIT),
+              str_ipc_excl_nowait,
               bogus_flags & 0777, sprintrc_grep(rc));
 
        id = msgget(private_key, 0600);
        if (id < 0)
                perror_msg_and_skip("msgget");
-       printf("msgget\\(IPC_PRIVATE, 0600\\) = %d\n", id);
+       printf("msgget\\(%s, 0600\\) = %d\n", str_ipc_private, id);
        atexit(cleanup);
 
        rc = msgctl(bogus_msgid, bogus_cmd, NULL);
-       printf("msgctl\\(%d, (IPC_64\\|)?%#x /\\* MSG_\\?\\?\\? \\*/, NULL\\)"
-              " = %s\n", bogus_msgid, bogus_cmd, sprintrc_grep(rc));
+       printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n",
+              bogus_msgid, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc));
 
 #if TEST_MSGCTL_BOGUS_ADDR
        rc = msgctl(bogus_msgid, IPC_SET, bogus_addr);
-       printf("msgctl\\(%d, (IPC_64\\|)?IPC_SET, %p\\) = %s\n",
-              bogus_msgid, bogus_addr, sprintrc_grep(rc));
+       printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+              bogus_msgid, str_ipc_64, str_ipc_set, bogus_addr,
+              sprintrc_grep(rc));
 #endif
 
        if (msgctl(id, IPC_STAT, &ds))
                perror_msg_and_skip("msgctl IPC_STAT");
-       printf("msgctl\\(%d, (IPC_64\\|)?IPC_STAT, \\{msg_perm=\\{uid=%u"
+       printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
               ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u"
               ", msg_rtime=%u, msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u"
               ", msg_lspid=%u, msg_lrpid=%u\\}\\) = 0\n",
-              id, (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
+              id, str_ipc_64, str_ipc_stat,
+              (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
               (unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key,
               (unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid,
               (unsigned) ds.msg_stime, (unsigned) ds.msg_rtime,
@@ -119,18 +152,18 @@ main(void)
 
        if (msgctl(id, IPC_SET, &ds))
                perror_msg_and_skip("msgctl IPC_SET");
-       printf("msgctl\\(%d, (IPC_64\\|)?IPC_SET, \\{msg_perm=\\{uid=%u"
+       printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
               ", gid=%u, mode=%#o\\}, ...\\}\\) = 0\n",
-              id, (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
-              (unsigned) ds.msg_perm.mode);
+              id, str_ipc_64, str_ipc_set, (unsigned) ds.msg_perm.uid,
+              (unsigned) ds.msg_perm.gid, (unsigned) ds.msg_perm.mode);
 
        rc = msgctl(0, MSG_INFO, &ds);
-       printf("msgctl\\(0, (IPC_64\\|)?MSG_INFO, %p\\) = %s\n",
-              &ds, sprintrc_grep(rc));
+       printf("msgctl\\(0, (%s\\|)?%s, %p\\) = %s\n",
+              str_ipc_64, str_msg_info, &ds, sprintrc_grep(rc));
 
        rc = msgctl(id, MSG_STAT, &ds);
-       printf("msgctl\\(%d, (IPC_64\\|)?MSG_STAT, %p\\) = %s\n",
-              id, &ds, sprintrc_grep(rc));
+       printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+              id, str_ipc_64, str_msg_stat, &ds, sprintrc_grep(rc));
 
        return 0;
 }
diff --git a/tests/ipc_msgbuf-Xabbrev.c b/tests/ipc_msgbuf-Xabbrev.c
new file mode 100644 (file)
index 0000000..e2f09eb
--- /dev/null
@@ -0,0 +1 @@
+#include "ipc_msgbuf.c"
diff --git a/tests/ipc_msgbuf-Xraw.c b/tests/ipc_msgbuf-Xraw.c
new file mode 100644 (file)
index 0000000..c6f8a31
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ipc_msgbuf.c"
diff --git a/tests/ipc_msgbuf-Xverbose.c b/tests/ipc_msgbuf-Xverbose.c
new file mode 100644 (file)
index 0000000..ae09a4a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ipc_msgbuf.c"
index 6789429f2b9d58716850d573c87b86d941dd2115..00ca6d3ac0fe625e3aa690fdaa8771902acc496d 100644 (file)
 
 static int msqid = -1;
 
+#if XLAT_RAW
+# define str_ipc_creat "0x200"
+# define str_ipc_private "0"
+# define str_ipc_rmid "0"
+# define str_ipc_64 "0x100"
+#elif XLAT_VERBOSE
+# define str_ipc_creat "0x200 /\\* IPC_CREAT \\*/"
+# define str_ipc_private "0 /\\* IPC_PRIVATE \\*/"
+# define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
+# define str_ipc_64 "0x100 /\\* IPC_64 \\*/"
+#else
+# define str_ipc_creat "IPC_CREAT"
+# define str_ipc_private "IPC_PRIVATE"
+# define str_ipc_rmid "IPC_RMID"
+# define str_ipc_64 "IPC_64"
+#endif
+
 static int
 cleanup(void)
 {
        if (msqid != -1) {
                int rc = msgctl(msqid, IPC_RMID, 0);
-               printf("msgctl\\(%d, (IPC_64\\|)?IPC_RMID, NULL\\) = 0\n",
-                      msqid);
+               printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) = 0\n",
+                      msqid, str_ipc_64, str_ipc_rmid);
                msqid = -1;
                if (rc == -1)
                        return 77;
@@ -82,7 +99,8 @@ main(void)
        msqid = msgget(IPC_PRIVATE, IPC_CREAT | S_IRWXU);
        if (msqid == -1)
                perror_msg_and_skip("msgget");
-       printf("msgget\\(IPC_PRIVATE, IPC_CREAT\\|0700\\) = %d\n", msqid);
+       printf("msgget\\(%s, %s\\|0700\\) = %d\n",
+              str_ipc_private, str_ipc_creat, msqid);
 
        typedef void (*atexit_func)(void);
        atexit((atexit_func) cleanup);
index cd6866ae285ac3f523bbadd7b71dc3e8621ee6ba..05f099b78bb79e25366cc6aeb63417d64e6ec376 100755 (executable)
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog
-run_strace -a31 -v -e msgget,msgsnd,msgrcv,msgctl $args > "$EXP"
+run_strace -a31 -v -e msgget,msgsnd,msgrcv,msgctl "$@" $args > "$EXP"
 match_grep "$LOG" "$EXP"
 
 exit 0
diff --git a/tests/ipc_sem-Xabbrev.c b/tests/ipc_sem-Xabbrev.c
new file mode 100644 (file)
index 0000000..727005a
--- /dev/null
@@ -0,0 +1 @@
+#include "ipc_sem.c"
diff --git a/tests/ipc_sem-Xraw.c b/tests/ipc_sem-Xraw.c
new file mode 100644 (file)
index 0000000..0a57c0a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ipc_sem.c"
diff --git a/tests/ipc_sem-Xverbose.c b/tests/ipc_sem-Xverbose.c
new file mode 100644 (file)
index 0000000..56e8380
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ipc_sem.c"
index b51b3ad402f2b22f2393e0159bbeae031770310f..361a7dfb13dd83c602be5a6134bd7cbafae3c4c9 100644 (file)
 #include "xlat.h"
 #include "xlat/resource_flags.h"
 
+#if XLAT_RAW
+# define str_ipc_flags "0xface1e00"
+# define str_ipc_private "0"
+# define str_ipc_rmid "0"
+# define str_ipc_stat "0x2"
+# define str_sem_stat "0x12"
+# define str_sem_info "0x13"
+# define str_ipc_64 "0x100"
+# define str_bogus_cmd "0xdeadbeef"
+#elif XLAT_VERBOSE
+# define str_ipc_flags \
+       "0xface1e00 /\\* IPC_CREAT\\|IPC_EXCL\\|IPC_NOWAIT\\|0xface1000 \\*/"
+# define str_ipc_private "0 /\\* IPC_PRIVATE \\*/"
+# define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
+# define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_sem_stat "0x12 /\\* SEM_STAT \\*/"
+# define str_sem_info "0x13 /\\* SEM_INFO \\*/"
+# define str_ipc_64 "0x100 /\\* IPC_64 \\*/"
+# define str_bogus_cmd "0xdeadbeef /\\* SEM_\\?\\?\\? \\*/"
+#else
+# define str_ipc_flags "IPC_CREAT\\|IPC_EXCL\\|IPC_NOWAIT\\|0xface1000"
+# define str_ipc_private "IPC_PRIVATE"
+# define str_ipc_rmid "IPC_RMID"
+# define str_ipc_stat "IPC_STAT"
+# define str_sem_stat "SEM_STAT"
+# define str_sem_info "SEM_INFO"
+# define str_ipc_64 "IPC_64"
+# define str_bogus_cmd "0xdeadbeef /\\* SEM_\\?\\?\\? \\*/"
+#endif
+
 union semun {
        int              val;    /* Value for SETVAL */
        struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
@@ -50,8 +80,8 @@ static void
 cleanup(void)
 {
        semctl(id, 0, IPC_RMID, 0);
-       printf("semctl\\(%d, 0, (IPC_64\\|)?IPC_RMID, \\[?NULL\\]?\\) = 0\n",
-              id);
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?NULL\\]?\\) = 0\n",
+              id, str_ipc_64, str_ipc_rmid);
        id = -1;
 }
 
@@ -75,42 +105,37 @@ main(void)
        struct seminfo info;
 
        rc = semget(bogus_key, bogus_size, bogus_flags);
-       printf("semget\\(%#llx, %d, %s%s%s%#x\\|%#04o\\) = %s\n",
+       printf("semget\\(%#llx, %d, %s\\|%#04o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key), bogus_size,
-              IPC_CREAT & bogus_flags ? "IPC_CREAT\\|" : "",
-              IPC_EXCL & bogus_flags ? "IPC_EXCL\\|" : "",
-              IPC_NOWAIT & bogus_flags ? "IPC_NOWAIT\\|" : "",
-              bogus_flags & ~(0777 | IPC_CREAT | IPC_EXCL | IPC_NOWAIT),
-              bogus_flags & 0777, sprintrc_grep(rc));
+              str_ipc_flags, bogus_flags & 0777, sprintrc_grep(rc));
 
        id = semget(private_key, 1, 0600);
        if (id < 0)
                perror_msg_and_skip("semget");
-       printf("semget\\(IPC_PRIVATE, 1, 0600\\) = %d\n", id);
+       printf("semget\\(%s, 1, 0600\\) = %d\n", str_ipc_private, id);
        atexit(cleanup);
 
        rc = semctl(bogus_semid, bogus_semnum, bogus_cmd, bogus_arg);
 #define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|NULL)\\]|NULL)"
-       printf("semctl\\(%d, %d, (IPC_64\\|)?%#x /\\* SEM_\\?\\?\\? \\*/"
-              ", " SEMCTL_BOGUS_ARG_FMT "\\) = %s\n",
-              bogus_semid, bogus_semnum, bogus_cmd,
+       printf("semctl\\(%d, %d, (%s\\|)?%s, " SEMCTL_BOGUS_ARG_FMT "\\) = %s\n",
+              bogus_semid, bogus_semnum, str_ipc_64, str_bogus_cmd,
               bogus_arg, bogus_arg, sprintrc_grep(rc));
 
        un.buf = &ds;
        if (semctl(id, 0, IPC_STAT, un))
                perror_msg_and_skip("semctl IPC_STAT");
-       printf("semctl\\(%d, 0, (IPC_64\\|)?IPC_STAT, \\[?%p\\]?\\) = 0\n",
-              id, &ds);
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?%p\\]?\\) = 0\n",
+              id, str_ipc_64, str_ipc_stat, &ds);
 
        un.__buf = &info;
        rc = semctl(0, 0, SEM_INFO, un);
-       printf("semctl\\(0, 0, (IPC_64\\|)?SEM_INFO, \\[?%p\\]?\\) = %s\n",
-              &info, sprintrc_grep(rc));
+       printf("semctl\\(0, 0, (%s\\|)?%s, \\[?%p\\]?\\) = %s\n",
+              str_ipc_64, str_sem_info, &info, sprintrc_grep(rc));
 
        un.buf = &ds;
        rc = semctl(id, 0, SEM_STAT, un);
-       printf("semctl\\(%d, 0, (IPC_64\\|)?SEM_STAT, \\[?%p\\]?\\) = %s\n",
-              id, &ds, sprintrc_grep(rc));
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?%p\\]?\\) = %s\n",
+              id, str_ipc_64, str_sem_stat, &ds, sprintrc_grep(rc));
 
        return 0;
 }
diff --git a/tests/ipc_shm-Xabbrev.c b/tests/ipc_shm-Xabbrev.c
new file mode 100644 (file)
index 0000000..c191aea
--- /dev/null
@@ -0,0 +1 @@
+#include "ipc_shm.c"
diff --git a/tests/ipc_shm-Xraw.c b/tests/ipc_shm-Xraw.c
new file mode 100644 (file)
index 0000000..08e09ac
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ipc_shm.c"
diff --git a/tests/ipc_shm-Xverbose.c b/tests/ipc_shm-Xverbose.c
new file mode 100644 (file)
index 0000000..b936785
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ipc_shm.c"
index f9dd577bd7be942f178cce83fa439994fc6a32bb..0d077d55646bb186ed2c1218c9d1d6b745835b30 100644 (file)
 #include "xlat.h"
 #include "xlat/shm_resource_flags.h"
 
+#if XLAT_RAW
+# define str_ipc_flags "0x2ce1e00"
+# define str_shm_huge "21<<26"
+# define str_ipc_private "0"
+# define str_ipc_rmid "0"
+# define str_ipc_set "0x1"
+# define str_ipc_stat "0x2"
+# define str_shm_stat "0xd"
+# define str_shm_info "0xe"
+# define str_ipc_64 "0x100"
+# define str_bogus_cmd "0xdefaced2"
+#elif XLAT_VERBOSE
+# define str_ipc_flags \
+       "0x2ce1e00 /\\* IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE" \
+       "\\|0x2ce0000 \\*/"
+# define str_shm_huge "21<<26 /\\* SHM_HUGE_SHIFT \\*/"
+# define str_ipc_private "0 /\\* IPC_PRIVATE \\*/"
+# define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
+# define str_ipc_set "0x1 /\\* IPC_SET \\*/"
+# define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_shm_stat "0xd /\\* SHM_STAT \\*/"
+# define str_shm_info "0xe /\\* SHM_INFO \\*/"
+# define str_ipc_64 "0x100 /\\* IPC_64 \\*/"
+# define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/"
+#else
+# define str_ipc_flags \
+       "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE\\|0x2ce0000"
+# define str_shm_huge "21<<SHM_HUGE_SHIFT"
+# define str_ipc_private "IPC_PRIVATE"
+# define str_ipc_rmid "IPC_RMID"
+# define str_ipc_set "IPC_SET"
+# define str_ipc_stat "IPC_STAT"
+# define str_shm_stat "SHM_STAT"
+# define str_shm_info "SHM_INFO"
+# define str_ipc_64 "IPC_64"
+# define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/"
+#endif
+
 static int id = -1;
 
 static void
 cleanup(void)
 {
        shmctl(id, IPC_RMID, NULL);
-       printf("shmctl\\(%d, (IPC_64\\|)?IPC_RMID, NULL\\) = 0\n", id);
+       printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = 0\n",
+              id, str_ipc_64, str_ipc_rmid);
        id = -1;
 }
 
@@ -89,7 +128,7 @@ main(void)
        rc = shmget(bogus_key, bogus_size, huge_flags);
        printf("shmget\\(%#llx, %zu, %s\\|%#03o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key), bogus_size,
-              "21<<SHM_HUGE_SHIFT", 0, sprintrc_grep(rc));
+              str_shm_huge, 0, sprintrc_grep(rc));
 
        bogus_flags = 0xface1e55 & ~(bogus_ipc_shm_flags | huge_mask);
        rc = shmget(bogus_key, bogus_size, bogus_flags);
@@ -100,19 +139,16 @@ main(void)
 
        bogus_flags |= bogus_ipc_shm_flags;
        rc = shmget(bogus_key, bogus_size, bogus_flags);
-       printf("shmget\\(%#llx, %zu, %s\\|%#x\\|%#03o\\) = %s\n",
+       printf("shmget\\(%#llx, %zu, %s\\|%#03o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key), bogus_size,
-              "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE",
-              bogus_flags & ~(0777 | bogus_ipc_shm_flags),
+              str_ipc_flags,
               bogus_flags & 0777, sprintrc_grep(rc));
 
        bogus_flags |= huge_flags;
        rc = shmget(bogus_key, bogus_size, bogus_flags);
-       printf("shmget\\(%#llx, %zu, %s\\|%#x\\|%s\\|%#03o\\) = %s\n",
+       printf("shmget\\(%#llx, %zu, %s\\|%s\\|%#03o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key), bogus_size,
-              "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE",
-              bogus_flags & ~(0777 | bogus_ipc_shm_flags | huge_mask),
-              "21<<SHM_HUGE_SHIFT",
+              str_ipc_flags, str_shm_huge,
               bogus_flags & 0777, sprintrc_grep(rc));
 
        bogus_flags &= ~bogus_ipc_shm_flags;
@@ -120,30 +156,32 @@ main(void)
        printf("shmget\\(%#llx, %zu, %#x\\|%s\\|%#03o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key), bogus_size,
               bogus_flags & ~(0777 | huge_mask),
-              "21<<SHM_HUGE_SHIFT",
+              str_shm_huge,
               bogus_flags & 0777, sprintrc_grep(rc));
 
        id = shmget(private_key, 1, 0600);
        if (id < 0)
                perror_msg_and_skip("shmget");
-       printf("shmget\\(IPC_PRIVATE, 1, 0600\\) = %d\n", id);
+       printf("shmget\\(%s, 1, 0600\\) = %d\n", str_ipc_private, id);
        atexit(cleanup);
 
        rc = shmctl(bogus_id, bogus_cmd, NULL);
-       printf("shmctl\\(%d, (IPC_64\\|)?%#x /\\* SHM_\\?\\?\\? \\*/, NULL\\)"
-              " = %s\n", bogus_id, bogus_cmd, sprintrc_grep(rc));
+       printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n",
+              bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc));
 
        rc = shmctl(bogus_id, IPC_STAT, bogus_addr);
-       printf("shmctl\\(%d, (IPC_64\\|)?IPC_STAT, %p\\) = %s\n",
-              bogus_id, bogus_addr, sprintrc_grep(rc));
+       printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+              bogus_id, str_ipc_64, str_ipc_stat, bogus_addr,
+              sprintrc_grep(rc));
 
        if (shmctl(id, IPC_STAT, &ds))
                perror_msg_and_skip("shmctl IPC_STAT");
-       printf("shmctl\\(%d, (IPC_64\\|)?IPC_STAT, \\{shm_perm=\\{uid=%u, gid=%u, "
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u, "
                "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%u, "
                "shm_lpid=%u, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, "
                "shm_ctime=%u\\}\\) = 0\n",
-               id, (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
+               id, str_ipc_64, str_ipc_stat,
+               (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
                (unsigned) ds.shm_perm.mode, (unsigned) ds.shm_perm.__key,
                (unsigned) ds.shm_perm.cuid, (unsigned) ds.shm_perm.cgid,
                (unsigned) ds.shm_segsz, (unsigned) ds.shm_cpid,
@@ -153,18 +191,19 @@ main(void)
 
        if (shmctl(id, IPC_SET, &ds))
                perror_msg_and_skip("shmctl IPC_SET");
-       printf("shmctl\\(%d, (IPC_64\\|)?IPC_SET, \\{shm_perm=\\{uid=%u, gid=%u"
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u"
               ", mode=%#o\\}, ...\\}\\) = 0\n",
-              id, (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
+              id, str_ipc_64, str_ipc_set,
+              (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
               (unsigned) ds.shm_perm.mode);
 
        rc = shmctl(0, SHM_INFO, &ds);
-       printf("shmctl\\(0, (IPC_64\\|)?SHM_INFO, %p\\) = %s\n",
-              &ds, sprintrc_grep(rc));
+       printf("shmctl\\(0, (%s\\|)?%s, %p\\) = %s\n",
+              str_ipc_64, str_shm_info, &ds, sprintrc_grep(rc));
 
        rc = shmctl(id, SHM_STAT, &ds);
-       printf("shmctl\\(%d, (IPC_64\\|)?SHM_STAT, %p\\) = %s\n",
-              id, &ds, sprintrc_grep(rc));
+       printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+              id, str_ipc_64, str_shm_stat, &ds, sprintrc_grep(rc));
 
        return 0;
 }
index 05370fb0711a7bedf9dc88fec2bba481e7d2ad41..f9093617306ee2ce5dfef1a995abae758595ee82 100755 (executable)
@@ -121,9 +121,21 @@ ioprio
 ip_mreq
 ipc
 ipc_msg
+ipc_msg-Xabbrev
+ipc_msg-Xraw
+ipc_msg-Xverbose
 ipc_msgbuf
+ipc_msgbuf-Xabbrev
+ipc_msgbuf-Xraw
+ipc_msgbuf-Xverbose
 ipc_sem
+ipc_sem-Xabbrev
+ipc_sem-Xraw
+ipc_sem-Xverbose
 ipc_shm
+ipc_shm-Xabbrev
+ipc_shm-Xraw
+ipc_shm-Xverbose
 kcmp
 kcmp-y
 kern_features