From: Paul Floyd Date: Sun, 23 Nov 2025 20:07:12 +0000 (+0100) Subject: FreeBSD regtest: add checks for required kernel modules and sysctl X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff940096a80dd4fdfadc088d7b4580c1251d0e3d;p=thirdparty%2Fvalgrind.git FreeBSD regtest: add checks for required kernel modules and sysctl memcheck/tests/descr_belowsp requires a sysctl memcheck/tests/freebsd/scalar requires a kenrnel module neither of trhe above are cleard/loaded by default. --- diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 1cf97fc82..39974c18d 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -96,7 +96,8 @@ dist_noinst_SCRIPTS = \ filter_stanza.awk \ filter_used_supp \ filter_stanza_and_size_t \ - filter_malloc_zone + filter_malloc_zone \ + run_descr_belowsp_test noinst_SCRIPTS = \ filter_dw4 \ diff --git a/memcheck/tests/descr_belowsp.vgtest b/memcheck/tests/descr_belowsp.vgtest index 9fa8191f5..47de7d715 100644 --- a/memcheck/tests/descr_belowsp.vgtest +++ b/memcheck/tests/descr_belowsp.vgtest @@ -1,2 +1,3 @@ +prereq: ./run_descr_belowsp_test prog: descr_belowsp vgopts: -q diff --git a/memcheck/tests/freebsd/scalar.vgtest b/memcheck/tests/freebsd/scalar.vgtest index 2f433038c..f2440924f 100644 --- a/memcheck/tests/freebsd/scalar.vgtest +++ b/memcheck/tests/freebsd/scalar.vgtest @@ -1,3 +1,4 @@ +prereq: kldstat -m mqueuefs > /dev/null 2>&1 prog: scalar vgopts: -q --error-limit=no --suppressions=scalar.supp stderr_filter: filter_scalar diff --git a/memcheck/tests/freebsd/sctp.vgtest b/memcheck/tests/freebsd/sctp.vgtest index a96b5c105..ccffdc8bd 100644 --- a/memcheck/tests/freebsd/sctp.vgtest +++ b/memcheck/tests/freebsd/sctp.vgtest @@ -1,3 +1,3 @@ -prereq: kldstat -m sctp > /dev/null +prereq: kldstat -m sctp > /dev/null 2>&1 vgopts: -q --trace-children=yes prog: sctp diff --git a/memcheck/tests/run_descr_belowsp_test b/memcheck/tests/run_descr_belowsp_test new file mode 100755 index 000000000..7740363d2 --- /dev/null +++ b/memcheck/tests/run_descr_belowsp_test @@ -0,0 +1,24 @@ +#!/bin/sh + +# FreeBSD has a (rather iffy if you ask me) belt and braces +# approach to stack guards. When a stack gets dreated the +# kernel adds a gurad page. Fair enough. When a pthread +# is created, the pthread library also creates a stack +# guard. Can't be too careful, eh? + +# From a Valgrind perspectve this is bad news. We use a heuristic +# that uses VG_(am_find_nsegment) to determine whether an address +# is part of a stack (including guard page) then +# find_tid_with_stack_containing() with the address rounded +# up to the nearest page. That doesn't work when there are +# two guard pages. + +# There is a sysctl to turn off the kernel guard page, +# but that requires root privileges + +if [ "$(uname)" = FreeBSD ]; then + + sysctl security.bsd.stack_guard_page | grep 0 > /dev/null + exit $? + +fi