summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Syromyatnikov <evgsyr@gmail.com>2022-08-10 13:14:27 +0200
committerEugene Syromyatnikov <evgsyr@gmail.com>2022-08-11 14:34:17 +0200
commitedf0518768523edc16492029fa9fece9700c022d (patch)
treed26bc9522c170d6400200c5068cc94faefb4086c
parent5bbf28be59b7c04f89399c22d3b5502a75e8e4f1 (diff)
downloadstrace-edf0518768523edc16492029fa9fece9700c022d.tar.gz
tests: add PR_SVE_[GS]ET_VL checks
Re-purpose prct-sme.c for that, since these commands identical to PR_SME_[GS]ET_VL so far, save for s/SME/SVE/ in identifier names. Retain the original prct-sve.c to retain test coverage diversity. * tests/.gitignore: Add prctl-sve-Xabbrev, prctl-sve-Xraw, prctl-sve-Xverbose, prctl-sve-success, prctl-sve-success-Xabbrev, prctl-sve-success-Xraw, and prctl-sve-success-Xverbose. * tests/Makefile.am (check_PROGRAMS): Add prctl-sve-success, prctl-sve-success-Xabbrev, prctl-sve-success-Xraw, and prctl-sve-success-Xverbose. * tests/gen_tests.in (prctl-sve-Xabbrev, prctl-sve-Xraw, prctl-sve-Xverbose, prctl-sve-success, prctl-sve-success-Xabbrev, prctl-sve-success-Xraw, prctl-sve-success-Xverbose): New tests. * tests/prctl-sme.c [!EXT] (EXT): New macro. (EXT_STR, GLUE_, GLUE, _): New macros. (print_sme_vl_arg, main): Use _ and EXT_STR macros. * tests/prctl-sve-Xabbrev.c: New file. * tests/prctl-sve-Xraw.c: Likewise. * tests/prctl-sve-Xverbose.c: Likewise. * tests/prctl-sve-success-Xabbrev.c: Likewise. * tests/prctl-sve-success-Xraw.c: Likewise. * tests/prctl-sve-success-Xverbose.c: Likewise. * tests/prctl-sve-success.c: Likewise. * tests/pure_executables.list: Add prctl-sve-Xabbrev, prctl-sve-Xraw, and prctl-sve-Xverbose.
-rw-r--r--tests/.gitignore7
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/gen_tests.in7
-rw-r--r--tests/prctl-sme.c44
-rw-r--r--tests/prctl-sve-Xabbrev.c4
-rw-r--r--tests/prctl-sve-Xraw.c4
-rw-r--r--tests/prctl-sve-Xverbose.c4
-rw-r--r--tests/prctl-sve-success-Xabbrev.c2
-rw-r--r--tests/prctl-sve-success-Xraw.c2
-rw-r--r--tests/prctl-sve-success-Xverbose.c2
-rw-r--r--tests/prctl-sve-success.c4
-rwxr-xr-xtests/pure_executables.list3
12 files changed, 71 insertions, 16 deletions
diff --git a/tests/.gitignore b/tests/.gitignore
index 361f74655..62c0844be 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -749,6 +749,13 @@ prctl-sme-success-Xraw
prctl-sme-success-Xverbose
prctl-spec-inject
prctl-sve
+prctl-sve-Xabbrev
+prctl-sve-Xraw
+prctl-sve-Xverbose
+prctl-sve-success
+prctl-sve-success-Xabbrev
+prctl-sve-success-Xraw
+prctl-sve-success-Xverbose
prctl-syscall-user-dispatch
prctl-tagged-addr
prctl-tagged-addr-Xabbrev
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7d08c0523..d61419974 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -310,6 +310,10 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
prctl-sme-success-Xraw \
prctl-sme-success-Xverbose \
prctl-spec-inject \
+ prctl-sve-success \
+ prctl-sve-success-Xabbrev \
+ prctl-sve-success-Xraw \
+ prctl-sve-success-Xverbose \
prctl-tagged-addr-success \
prctl-tagged-addr-success-Xabbrev \
prctl-tagged-addr-success-Xraw \
diff --git a/tests/gen_tests.in b/tests/gen_tests.in
index 4bb63227f..5a7074dd8 100644
--- a/tests/gen_tests.in
+++ b/tests/gen_tests.in
@@ -748,6 +748,13 @@ prctl-sme-success-Xraw +prctl-success.sh PRCTL_INJECT_RETVALS="0 0xdead 0x10000
prctl-sme-success-Xverbose +prctl-success.sh PRCTL_INJECT_RETVALS="0 0xdead 0x10000 0x4ea57 0x20000 0xba90000 0xdec0ded" -a32 -Xverbose
prctl-spec-inject +prctl-success.sh PRCTL_INJECT_RETVALS="error=ENOTTY 0 1 3 8 16 32 42" -a50
prctl-sve +prctl.sh -a21
+prctl-sve-Xabbrev +prctl.sh -a21 -Xabbrev
+prctl-sve-Xraw +prctl.sh -a12 -Xraw
+prctl-sve-Xverbose +prctl.sh -a32 -Xverbose
+prctl-sve-success +prctl-success.sh PRCTL_INJECT_RETVALS="0 0xdead 0x10000 0x4ea57 0x20000 0xba9000 0xdec0ded" -a21
+prctl-sve-success-Xabbrev +prctl-success.sh PRCTL_INJECT_RETVALS="0 0xdead 0x10000 0x4ea57 0x20000 0xba90000 0xdec0ded" -a21 -Xabbrev
+prctl-sve-success-Xraw +prctl-success.sh PRCTL_INJECT_RETVALS="0 0xdead 0x10000 0x4ea57 0x20000 0xba90000 0xdec0ded" -a12 -Xraw
+prctl-sve-success-Xverbose +prctl-success.sh PRCTL_INJECT_RETVALS="0 0xdead 0x10000 0x4ea57 0x20000 0xba90000 0xdec0ded" -a32 -Xverbose
prctl-syscall-user-dispatch +prctl.sh -a68
prctl-tagged-addr +prctl.sh -a43
prctl-tagged-addr-Xabbrev +prctl.sh -Xabbrev -a43
diff --git a/tests/prctl-sme.c b/tests/prctl-sme.c
index f01749e1a..a2fa29082 100644
--- a/tests/prctl-sme.c
+++ b/tests/prctl-sme.c
@@ -20,32 +20,42 @@
# define INJ_STR ""
#endif
+#ifndef EXT
+# define EXT SME
+#endif
+
+#define EXT_STR STRINGIFY_VAL(EXT)
+#define GLUE_(a_, b_, c_) a_ ## b_ ## c_
+#define GLUE(a_, b_, c_) GLUE_(a_, b_, c_)
+#define _(pfx_, sfx_) GLUE(pfx_, EXT, sfx_)
+
#if !XLAT_RAW
static void
print_sme_vl_arg(kernel_ulong_t arg)
{
- kernel_ulong_t flags = arg & ~PR_SME_VL_LEN_MASK;
+ kernel_ulong_t flags = arg & ~_(PR_, _VL_LEN_MASK);
if (arg < 0x10000)
return;
printf(" (");
- if (flags & PR_SME_SET_VL_ONEXEC)
- printf("PR_SME_SET_VL_ONEXEC");
- if (flags & PR_SME_VL_INHERIT) {
- printf("%sPR_SME_VL_INHERIT",
- flags & PR_SME_SET_VL_ONEXEC ? "|" : "");
+ if (flags & _(PR_, _SET_VL_ONEXEC))
+ printf("PR_" EXT_STR "_SET_VL_ONEXEC");
+ if (flags & _(PR_, _VL_INHERIT)) {
+ printf("%sPR_" EXT_STR "_VL_INHERIT",
+ flags & _(PR_, _SET_VL_ONEXEC) ? "|" : "");
}
- kernel_ulong_t leftover = flags & ~(PR_SME_SET_VL_ONEXEC|PR_SME_VL_INHERIT);
+ kernel_ulong_t leftover =
+ flags & ~(_(PR_, _SET_VL_ONEXEC)|_(PR_, _VL_INHERIT));
if (leftover) {
printf("%s%#llx",
leftover == flags ? "" : "|",
(unsigned long long) leftover);
}
- kernel_ulong_t lens = arg & PR_SME_VL_LEN_MASK;
+ kernel_ulong_t lens = arg & _(PR_, _VL_LEN_MASK);
printf("%s%#llx", flags ? "|" : "", (unsigned long long) lens);
printf(")");
@@ -94,10 +104,10 @@ main(int argc, char *argv[])
{ ARG_STR(0) },
{ ARG_STR(0xdead) },
{ ARG_XLAT_KNOWN(0x10000, "0x10000|0") },
- { ARG_XLAT_KNOWN(0x2ea57, "PR_SME_VL_INHERIT|0xea57") },
- { ARG_XLAT_KNOWN(0x40000, "PR_SME_SET_VL_ONEXEC|0") },
- { ARG_XLAT_KNOWN(0xfacefeed, "PR_SME_SET_VL_ONEXEC"
- "|PR_SME_VL_INHERIT"
+ { ARG_XLAT_KNOWN(0x2ea57, "PR_" EXT_STR "_VL_INHERIT|0xea57") },
+ { ARG_XLAT_KNOWN(0x40000, "PR_" EXT_STR "_SET_VL_ONEXEC|0") },
+ { ARG_XLAT_KNOWN(0xfacefeed, "PR_" EXT_STR "_SET_VL_ONEXEC"
+ "|PR_" EXT_STR "_VL_INHERIT"
"|0xfac80000|0xfeed") },
{ ARG_XLAT_KNOWN(0xbad00000, "0xbad00000|0") },
{ ARG_XLAT_KNOWN(0xde90ded, "0xde90000|0xded") },
@@ -111,9 +121,10 @@ main(int argc, char *argv[])
};
for (i = 0; i < ARRAY_SIZE(args); i++) {
- rc = syscall(__NR_prctl, PR_SME_SET_VL, args[i].val, 1, 2, 3);
+ rc = syscall(__NR_prctl, _(PR_, _SET_VL), args[i].val, 1, 2, 3);
errstr = sprintrc(rc);
- printf("prctl(" XLAT_KNOWN(0x3f, "PR_SME_SET_VL") ", %s) = ",
+ printf("prctl(" XLAT_FMT ", %s) = ",
+ XLAT_SEL(_(PR_, _SET_VL), "PR_" EXT_STR "_SET_VL"),
args[i].str);
if (rc >= 0) {
printf("%#lx", rc);
@@ -126,9 +137,10 @@ main(int argc, char *argv[])
}
}
- rc = syscall(__NR_prctl, PR_SME_GET_VL, 1, 2, 3, 4);
+ rc = syscall(__NR_prctl, _(PR_, _GET_VL), 1, 2, 3, 4);
errstr = sprintrc(rc);
- printf("prctl(" XLAT_KNOWN(0x40, "PR_SME_GET_VL") ") = ");
+ printf("prctl(" XLAT_FMT ") = ",
+ XLAT_SEL(_(PR_, _GET_VL), "PR_" EXT_STR "_GET_VL"));
if (rc >= 0) {
printf("%#lx", rc);
#if !XLAT_RAW
diff --git a/tests/prctl-sve-Xabbrev.c b/tests/prctl-sve-Xabbrev.c
new file mode 100644
index 000000000..f16989532
--- /dev/null
+++ b/tests/prctl-sve-Xabbrev.c
@@ -0,0 +1,4 @@
+#define XLAT_ABBREV 1
+/* NB: prctl-sme.c supports both SVE and SME */
+#define EXT SVE
+#include "prctl-sme.c"
diff --git a/tests/prctl-sve-Xraw.c b/tests/prctl-sve-Xraw.c
new file mode 100644
index 000000000..25c98723a
--- /dev/null
+++ b/tests/prctl-sve-Xraw.c
@@ -0,0 +1,4 @@
+#define XLAT_RAW 1
+/* NB: prctl-sme.c supports both SVE and SME */
+#define EXT SVE
+#include "prctl-sme.c"
diff --git a/tests/prctl-sve-Xverbose.c b/tests/prctl-sve-Xverbose.c
new file mode 100644
index 000000000..ca683675c
--- /dev/null
+++ b/tests/prctl-sve-Xverbose.c
@@ -0,0 +1,4 @@
+#define XLAT_VERBOSE 1
+/* NB: prctl-sme.c supports both SVE and SME */
+#define EXT SVE
+#include "prctl-sme.c"
diff --git a/tests/prctl-sve-success-Xabbrev.c b/tests/prctl-sve-success-Xabbrev.c
new file mode 100644
index 000000000..472f5be65
--- /dev/null
+++ b/tests/prctl-sve-success-Xabbrev.c
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "prctl-sve-success.c"
diff --git a/tests/prctl-sve-success-Xraw.c b/tests/prctl-sve-success-Xraw.c
new file mode 100644
index 000000000..407551c44
--- /dev/null
+++ b/tests/prctl-sve-success-Xraw.c
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "prctl-sve-success.c"
diff --git a/tests/prctl-sve-success-Xverbose.c b/tests/prctl-sve-success-Xverbose.c
new file mode 100644
index 000000000..4c79c5475
--- /dev/null
+++ b/tests/prctl-sve-success-Xverbose.c
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "prctl-sve-success.c"
diff --git a/tests/prctl-sve-success.c b/tests/prctl-sve-success.c
new file mode 100644
index 000000000..cb2fa8fda
--- /dev/null
+++ b/tests/prctl-sve-success.c
@@ -0,0 +1,4 @@
+#define INJECT_RETVAL
+/* NB: prctl-sme.c supports both SVE and SME */
+#define EXT SVE
+#include "prctl-sme.c"
diff --git a/tests/pure_executables.list b/tests/pure_executables.list
index 471a97e1e..e794602dc 100755
--- a/tests/pure_executables.list
+++ b/tests/pure_executables.list
@@ -529,6 +529,9 @@ prctl-sme-Xabbrev
prctl-sme-Xraw
prctl-sme-Xverbose
prctl-sve
+prctl-sve-Xabbrev
+prctl-sve-Xraw
+prctl-sve-Xverbose
prctl-syscall-user-dispatch
prctl-tagged-addr
prctl-tagged-addr-Xabbrev