From: Paul Floyd Date: Fri, 23 Feb 2024 19:07:53 +0000 (+0100) Subject: FreeBSD: updates for FreeBSD 15 libsys X-Git-Tag: VALGRIND_3_23_0~142 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1dc51ee30a8b0b833023e746e24e89678dd4e049;p=thirdparty%2Fvalgrind.git FreeBSD: updates for FreeBSD 15 libsys FreeBSD 15 has moved all libc functions that are just syscall wrappers into libsys. That changes quite a few callstacks, so I've added a load of filtering to make it look like the old libc callstacks. I'm also seeing new conflicts in _umtx_op_err for both DRD and Helgrind that needed supressing. --- diff --git a/freebsd-drd.supp b/freebsd-drd.supp index 33f7e8ede2..75303b2a74 100644 --- a/freebsd-drd.supp +++ b/freebsd-drd.supp @@ -249,3 +249,9 @@ obj:*/lib*/libc.so.7 fun:getaddrinfo } +{ + DRD-FREEEBSD15-_UMTX_OP_ERR + drd:ConflictingAccess + fun:_umtx_op_err +} + diff --git a/freebsd-helgrind.supp b/freebsd-helgrind.supp index 16e45c560f..2b408fa40d 100644 --- a/freebsd-helgrind.supp +++ b/freebsd-helgrind.supp @@ -223,3 +223,9 @@ ... fun:getaddrinfo } +{ + FREEBSD15-LIB*-_UMTX_OP_ERR + Helgrind:Race + fun:_umtx_op_err +} + diff --git a/memcheck/tests/freebsd/Makefile.am b/memcheck/tests/freebsd/Makefile.am index af8d0cacac..bff8f61841 100644 --- a/memcheck/tests/freebsd/Makefile.am +++ b/memcheck/tests/freebsd/Makefile.am @@ -3,7 +3,7 @@ include $(top_srcdir)/Makefile.tool-tests.am dist_noinst_SCRIPTS = filter_stderr filter_pts dump_stdout filter_sigwait \ filter_scalar filter_realpathat filter_fstat filter_eventfd2 \ - toucher1 toucher2 + toucher1 toucher2 filter_getfsstat EXTRA_DIST = \ access.vgtest \ diff --git a/memcheck/tests/freebsd/filter_fstat b/memcheck/tests/freebsd/filter_fstat index 65a5a13205..04b3629f6f 100755 --- a/memcheck/tests/freebsd/filter_fstat +++ b/memcheck/tests/freebsd/filter_fstat @@ -4,6 +4,10 @@ gsed '/by 0x........: stat (in \/...libc...)/d;/by 0x........: fstat (in \/...libc...)/d;/by 0x........: fstatat (in \/...libc...)/d' | gsed '/by 0x........: statfs (in \/...libc...)/d;/by 0x........: fstatfs (in \/...libc...)/d' | +gsed 's/at 0x........: fstatat (in \/...libc...)/.../' | +gsed 's/: fstatfs/: __sys_fstatfs/' | +gsed 's/: statfs/: _statfs/' | +gsed 's/: fstat/: __sys_fstat/' | # fox x86 compatibility diff --git a/memcheck/tests/freebsd/filter_getfsstat b/memcheck/tests/freebsd/filter_getfsstat new file mode 100755 index 0000000000..7d01afd6cf --- /dev/null +++ b/memcheck/tests/freebsd/filter_getfsstat @@ -0,0 +1,7 @@ +#! /bin/sh + +../filter_stderr "$@" | + +gsed 's/: getfsstat/: _getfsstat/' + +exit 0 diff --git a/memcheck/tests/freebsd/filter_realpathat b/memcheck/tests/freebsd/filter_realpathat index 599a35cb38..9628723fab 100755 --- a/memcheck/tests/freebsd/filter_realpathat +++ b/memcheck/tests/freebsd/filter_realpathat @@ -2,6 +2,7 @@ gsed 's/Invalid write of size 8/Invalid write of size 4/' | gsed 's/is [4-9][0-9] bytes inside a block of size 100 free/is ... bytes inside a block of size 100 free/' | +gsed '/___realpathat/d' | ../filter_stderr "$@" diff --git a/memcheck/tests/freebsd/getfsstat.vgtest b/memcheck/tests/freebsd/getfsstat.vgtest index 5e0fd31ac8..81a5a7aa58 100644 --- a/memcheck/tests/freebsd/getfsstat.vgtest +++ b/memcheck/tests/freebsd/getfsstat.vgtest @@ -2,3 +2,4 @@ prereq: test -e ./getfsstat prog: getfsstat vgopts: -q --suppressions=getfsstat.supp stdout_filter: ./dump_stdout +stderr_filter: ./filter_getfsstat diff --git a/tests/filter_libc b/tests/filter_libc index 1bbf007571..160f1a4b4d 100755 --- a/tests/filter_libc +++ b/tests/filter_libc @@ -11,7 +11,7 @@ while (<>) s/ __([a-z]*)_nocancel / $1 /; # "lib[S|s]ystem*" occurs on Darwin, "libsocket" on older Solaris/illumos. - s/\(in \/.*(libc|libSystem|libsystem|libsocket).*\)$/(in \/...libc...)/; + s/\(in \/.*(libc|libSystem|libsystem|libsocket|libsys).*\)$/(in \/...libc...)/; s/\(within \/.*(libc|libSystem|libsystem|libsocket).*\)$/(within \/...libc...)/; # Filter out dynamic loader