]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
FreeBSD regtest: add an x86 version of scalar_arg_check
authorPaul Floyd <pjfloyd@wanadoo.fr>
Mon, 22 Sep 2025 18:21:57 +0000 (20:21 +0200)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Mon, 22 Sep 2025 18:21:57 +0000 (20:21 +0200)
.gitignore
memcheck/tests/x86-freebsd/Makefile.am
memcheck/tests/x86-freebsd/filter_arg_check [new file with mode: 0755]
memcheck/tests/x86-freebsd/scalar_arg_check.c [new file with mode: 0644]
memcheck/tests/x86-freebsd/scalar_arg_check.stderr.exp [new file with mode: 0644]
memcheck/tests/x86-freebsd/scalar_arg_check.vgtest [new symlink]

index 6cf083afe277538cd27386946d5a7fad5a7e6106..00233d852f8d92e5c1d6175958cc00fca7fa7d8a 100644 (file)
 /memcheck/tests/x86-freebsd/posix_fadvise
 /memcheck/tests/x86-freebsd/posix_fallocate
 /memcheck/tests/x86-freebsd/reallocarray
+/memcheck/tests/x86-freebsd/scalar_arg_check
 
 # /memcheck/tests/arm64-freebsd
 /memcheck/tests/arm64-freebsd/*.stderr.diff
index 1d8069021b9efead94a10a8c965afcac58f30982..8c48506c2be7100957e35c62a879990f944ce1e8 100644 (file)
@@ -1,7 +1,7 @@
 
 include $(top_srcdir)/Makefile.tool-tests.am
 
-dist_noinst_SCRIPTS = filter_stderr
+dist_noinst_SCRIPTS = filter_stderr filter_arg_check
 
 EXTRA_DIST = \
        posix_fadvise.vgtest \
@@ -9,10 +9,12 @@ EXTRA_DIST = \
        posix_fadvise.stderr.exp \
        posix_fallocate.stderr.exp \
        reallocarray.vgtest \
-       reallocarray.stderr.exp
+       reallocarray.stderr.exp \
+       scalar_arg_check.vgtest \
+       scalar_arg_check.stderr.exp
 
 check_PROGRAMS = \
-       posix_fadvise posix_fallocate reallocarray
+       posix_fadvise posix_fallocate reallocarray scalar_arg_check
 
 # Linux also adds  $(FLAG_MMMX) $(FLAG_MSSE) to the first two
 AM_CFLAGS    += @FLAG_M32@
diff --git a/memcheck/tests/x86-freebsd/filter_arg_check b/memcheck/tests/x86-freebsd/filter_arg_check
new file mode 100755 (executable)
index 0000000..302dea2
--- /dev/null
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+# Only one test uses this which calls syscall(SYS_sendfile)
+# which is the only x86 syscall that uses 8 arguments
+# The output includes --trace-syscalls=yes which is very verbose
+# but we only want to see the sendfile line
+
+# the libc signature for sendfile is
+#     int sendfile(int fd, int s, off_t offset, size_t nbytes,
+#                  struct sf_hdtr *hdtr, off_t *sbytes, int flags);
+# The testcase uses values from 101 to 108 for the arguments
+# (to make it easy to match the testcase to the log output)
+# Some of the arguments are printed as hex, not too bad.
+# Argument 3 is a 64bit value made up from the 32bit arguments
+# 3 and 4 resulting in 7 values in the expected.
+
+grep "SYSCALL.*sendfile" |
+sed 's/==.*//' |
+sed -E 's/\[[0-9]{5}/[xxxxx/'
+
diff --git a/memcheck/tests/x86-freebsd/scalar_arg_check.c b/memcheck/tests/x86-freebsd/scalar_arg_check.c
new file mode 100644 (file)
index 0000000..c608150
--- /dev/null
@@ -0,0 +1,8 @@
+#include "../freebsd/scalar.h"
+
+int main(void)
+{
+   /* sendfile uses 8 args */
+   SY(SYS_sendfile, 101, 102, 103, 104, 105, 106, 107, 108);
+}
+
diff --git a/memcheck/tests/x86-freebsd/scalar_arg_check.stderr.exp b/memcheck/tests/x86-freebsd/scalar_arg_check.stderr.exp
new file mode 100644 (file)
index 0000000..354d168
--- /dev/null
@@ -0,0 +1 @@
+SYSCALL[xxxxx,1](393) sys_sendfile ( 101, 102, 446676598887, 105, 0x6a, 0x6b, 108 )
diff --git a/memcheck/tests/x86-freebsd/scalar_arg_check.vgtest b/memcheck/tests/x86-freebsd/scalar_arg_check.vgtest
new file mode 120000 (symlink)
index 0000000..5b2d7ff
--- /dev/null
@@ -0,0 +1 @@
+../amd64-freebsd/scalar_arg_check.vgtest
\ No newline at end of file