From: Paul Floyd Date: Sat, 23 Aug 2025 19:31:13 +0000 (+0200) Subject: FreeBSD regtest: get pdfork_pdkill to pass on arm64 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=57804a8edbe7b05293f55f1a79585b6b88f8db5f;p=thirdparty%2Fvalgrind.git FreeBSD regtest: get pdfork_pdkill to pass on arm64 arm64 was giving a few conditional jump errors (suppressed) and a pdfork was succeeding with uninit flags whilst it was failing on amd64. Made sure that it has bad flags (-1) but still uninit. --- diff --git a/memcheck/tests/freebsd/Makefile.am b/memcheck/tests/freebsd/Makefile.am index 0f00d67a4..bb5de145c 100644 --- a/memcheck/tests/freebsd/Makefile.am +++ b/memcheck/tests/freebsd/Makefile.am @@ -91,6 +91,7 @@ EXTRA_DIST = \ openpty.stderr.exp \ pdfork_pdkill.vgtest \ pdfork_pdkill.stderr.exp \ + pdfork_pdkill.supp \ realpathat.vgtest \ realpathat.stderr.exp \ revoke.vgtest \ diff --git a/memcheck/tests/freebsd/pdfork_pdkill.c b/memcheck/tests/freebsd/pdfork_pdkill.c index 8d83642ba..8347a1153 100644 --- a/memcheck/tests/freebsd/pdfork_pdkill.c +++ b/memcheck/tests/freebsd/pdfork_pdkill.c @@ -94,6 +94,9 @@ int main(int argc, char *argv[]) { fprintf(stderr, "parent after 1st bad pdfork\n"); int anotherfd; int badflag; + // without this the last pdfork succeeds on arm64 + badflag = -1 + anotherfd; + badflag -=anotherfd; pid_t* pbadpid = malloc(sizeof(pid_t)); free(pbadpid); pdgetpid(anotherfd, pbadpid); diff --git a/memcheck/tests/freebsd/pdfork_pdkill.stderr.exp b/memcheck/tests/freebsd/pdfork_pdkill.stderr.exp index 2105d362b..f5c911ae4 100644 --- a/memcheck/tests/freebsd/pdfork_pdkill.stderr.exp +++ b/memcheck/tests/freebsd/pdfork_pdkill.stderr.exp @@ -12,21 +12,25 @@ Syscall param pdfork(fdp) points to unaddressable byte(s) parent after 1st bad pdfork Syscall param pdgetpid(fd) contains uninitialised byte(s) ... - by 0x........: main (pdfork_pdkill.c:99) + by 0x........: main (pdfork_pdkill.c:101) Syscall param pdgetpid(pidp)) points to unaddressable byte(s) ... - by 0x........: main (pdfork_pdkill.c:99) + by 0x........: main (pdfork_pdkill.c:101) Address 0x........ is 0 bytes inside a block of size 4 free'd at 0x........: free (vg_replace_malloc.c:...) - by 0x........: main (pdfork_pdkill.c:98) + by 0x........: main (pdfork_pdkill.c:100) Block was alloc'd at at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: main (pdfork_pdkill.c:97) + by 0x........: main (pdfork_pdkill.c:99) + +Conditional jump or move depends on uninitialised value(s) + ... + by 0x........: main (pdfork_pdkill.c:101) Syscall param pdfork(flags) contains uninitialised byte(s) ... - by 0x........: main (pdfork_pdkill.c:100) + by 0x........: main (pdfork_pdkill.c:102) FILE DESCRIPTORS: 3 open (3 inherited) at exit. Open file descriptor ... diff --git a/memcheck/tests/freebsd/pdfork_pdkill.vgtest b/memcheck/tests/freebsd/pdfork_pdkill.vgtest index 066c16716..a109ef6e1 100644 --- a/memcheck/tests/freebsd/pdfork_pdkill.vgtest +++ b/memcheck/tests/freebsd/pdfork_pdkill.vgtest @@ -1,4 +1,4 @@ prog: pdfork_pdkill args: 10 2 -vgopts: -q --track-fds=all --child-silent-after-fork=yes +vgopts: -q --track-fds=all --child-silent-after-fork=yes --suppressions=pdfork_pdkill.supp stderr_filter: filter_pts