]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
4 months agoVEX: Remove unused files
Florian Krohm [Wed, 25 Mar 2026 10:01:08 +0000 (10:01 +0000)] 
VEX: Remove unused files

These files are leftovers from the time when VEX code was stored in a
separate repository. The files were never shipped, were intended for
developer use only and are no longer useful.

Related commits are:
721ac5231f6bda17f592ebdc8efdfeff36f4ef86
c5218ff4c1215ceaee76bc8bafadbc23484d4be0

4 months agoBug 518076 - FreeBSD: add syscall wrapper for renameat2
Paul Floyd [Tue, 24 Mar 2026 19:50:34 +0000 (20:50 +0100)] 
Bug 518076 - FreeBSD: add syscall wrapper for renameat2

Made the existing Linux renameat2 wrapper generic.

4 months agoFreeBSD regtest: add another expected for realpathat2
Paul Floyd [Tue, 24 Mar 2026 20:01:19 +0000 (21:01 +0100)] 
FreeBSD regtest: add another expected for realpathat2

FreeBSD 16 has added several changes to realpathat. Some of those
are just swapping strlcat with strlcpy. I could add that to the
filter. However, the strlcat also has an extra invalid read.

4 months agoDarwin: add a hardwired redir for bcmp
Paul Floyd [Tue, 24 Mar 2026 12:57:31 +0000 (13:57 +0100)] 
Darwin: add a hardwired redir for bcmp

This allows 2 suppressions to be removed.

4 months agoDarwin env vars: mostly revert not setting DYLD_SHARED_REGION for Darwin 20 and later.
Paul Floyd [Tue, 24 Mar 2026 07:48:57 +0000 (08:48 +0100)] 
Darwin env vars: mostly revert not setting DYLD_SHARED_REGION for Darwin 20 and later.

Sigh. The default value ought to work. Tested on macOS 10.14. It worked.
Tested on macOS 10.15. It worked. Tested on macOS 11. It worked.
Tested on macOS 12. It worked. Pushed the code.

Tested on macOS 13. It failed. No idea why.

4 months agoDarwin regtest: add DRD filter _pthread_start -> start_thread
Paul Floyd [Tue, 24 Mar 2026 07:09:28 +0000 (08:09 +0100)] 
Darwin regtest: add DRD filter _pthread_start -> start_thread

4 months agoDarwin regtest: add a couple of ignore functions to massif mmapunmap
Paul Floyd [Tue, 24 Mar 2026 06:37:30 +0000 (07:37 +0100)] 
Darwin regtest: add a couple of ignore functions to massif mmapunmap

These function names are for macOS 13. There may be more for other versions
of Darwin.

4 months agoDarwin suppression: another one for getaddrinfo
Paul Floyd [Tue, 24 Mar 2026 06:24:54 +0000 (07:24 +0100)] 
Darwin suppression: another one for getaddrinfo

4 months agoHelgrind xml filter: fix for hex value filtering
Paul Floyd [Sun, 22 Mar 2026 18:45:42 +0000 (19:45 +0100)] 
Helgrind xml filter: fix for hex value filtering

The hex raplacement was using

    "0x([0-9a-zA-Z]+)"      => "........",

On Darwin 17 one testcase has a line

   <unique>0xe</unique>

After matching we do global replacement of capture $1. In this case
that was 'e' and the result of global replacement was

   <uniqu........>0x........</uniqu........>

That then failed to match the replacement

   "<unique>(.*)</unique>" => "...",

I've just moved the '0x' into both the key and the pattern.
That reduces the chances of accidental matches. A better fix
would be to use more context for the replacement.

4 months agoNEWS: add bug 511461 Darwin 17 (MacOS X 10.13) memcheck issues
Paul Floyd [Sun, 22 Mar 2026 16:18:41 +0000 (17:18 +0100)] 
NEWS: add bug 511461 Darwin 17 (MacOS X 10.13) memcheck issues

I think I've done about as much as I can reasonably do for this.

Will open new issues if necessary.

Remaining regtest faulures are due to:
many many many Darwin leaks
debuginfo differences
unsupported x86 opcodes
libpthread race in stack teardown (?) - fixed in macOS 10.14
Darwin has different output of v.info monitor request

4 months agos390: Fix typos.
Florian Krohm [Sat, 21 Mar 2026 18:43:52 +0000 (18:43 +0000)] 
s390: Fix typos.

4 months agos390: Fix compilation of testcases with clang 20.1.8
Florian Krohm [Sat, 21 Mar 2026 18:04:25 +0000 (18:04 +0000)] 
s390: Fix compilation of testcases with clang 20.1.8

bfp-fpc.c: The SRNMB insn requires the floating-point extension.
Add -march=arch9 to compile flags which corresponds to z196 which is
the minimum requires machine model.
The clang error is apparently triggered by the mnemonic. C.f. bfp-convert.c
which also uses insns requiring the floating-point extension. But those insns
are pieced together in a different way avoiding the mnemonic.

ex.c, exrl.c: The SGRK insn requires the distinct-operands facility.
Add -march=arch9.

vecdiv.c, vme.c: The insns require the vector facility.
Add -march=z13.

tmxx.c: The LOCGR insn requires the load/store-on-condition facility.
Add -march=arch9.

4 months agoRemove s390_disasm.c from VEX/Makefile-gcc
Paul Floyd [Sat, 21 Mar 2026 06:40:29 +0000 (07:40 +0100)] 
Remove s390_disasm.c from VEX/Makefile-gcc

The file was removed as part of the switch to using objdump for
disasm on s390.

4 months agoDarwin: add only necessary env vars
Paul Floyd [Fri, 20 Mar 2026 21:03:14 +0000 (22:03 +0100)] 
Darwin: add only necessary env vars

We were always adding DYLD_SHARED_REGION. On macOS 11+ this isn't
necessary and we can just leave dyld do its thing. If we
don't add it we don't need to remove it either.

4 months agoFix a few VexGuestXxxState offset comments
Paul Floyd [Fri, 20 Mar 2026 20:01:18 +0000 (21:01 +0100)] 
Fix a few VexGuestXxxState offset comments

I haven't checked them all, but a few were wrong. This is part of
the preparation for a patch for bug 486180.

4 months agos390x: Fix vec3 test case when using clang
Andreas Arnez [Fri, 20 Mar 2026 12:11:03 +0000 (13:11 +0100)] 
s390x: Fix vec3 test case when using clang

The llvm assembler behaves differently from gas when dealing with
unassigned bits in an .insn directive.  While gas fills them with the
given instruction text, clang sets them to zeroes.

In the VRR format this affects bits 20-23:

+--------+----+----+----+---+----+----+----+------------+
| OpCode | V1 | V2 | V3 |///| M6 | M5 | M4 |   Opcode   |
+--------+----+----+----+---+----+----+----+------------+
0        8    12   16       24   28   32   36           47

The `vec3' test case exploits filling these bits in TEST_V3OP, thus it
fails when compiled with clang.  Fix this by using VRI instead of VRR and
assigning fixed registers to the missing vector operands in that format.

The issue also applies to TEST_VBLEND, but since VBLEND is just another
3-input-operand instruction, treat it like that and drop the special
handling.

4 months agoDarwin regtest: add some more ignore-fn for massif overloaded-new
Paul Floyd [Thu, 19 Mar 2026 20:21:32 +0000 (21:21 +0100)] 
Darwin regtest: add some more ignore-fn for massif overloaded-new

On Darwin 18.

4 months agoDarwin regtest: small change for memcheck descr_belowsp
Paul Floyd [Thu, 19 Mar 2026 19:05:18 +0000 (20:05 +0100)] 
Darwin regtest: small change for memcheck descr_belowsp

On Darwin reading below the bottom of the allowed stack produces a SIGBUS
not a SIGSEGV. So handle that as well.

The test still fails as the macOS describe mechanism is very different,
relying on OS vm functions.

4 months agoDarwin: don't remove VALGRIND_LAUNCHER from vg_cleanup_env
Paul Floyd [Thu, 19 Mar 2026 13:10:49 +0000 (14:10 +0100)] 
Darwin: don't remove VALGRIND_LAUNCHER from vg_cleanup_env

It gets put there by launcher-darwin.c but it was already removed
by initimg-darwin.c by the time the preloads get loaded and this
function marked constructor runs.

I'll probably also look at not bothering to set DYLD_SHARED_REGION=use
on macOS >= 11 since that is the default.

4 months agoBug 517748 - Add ability to redirect global functions to Darwin
Paul Floyd [Thu, 19 Mar 2026 07:53:23 +0000 (08:53 +0100)] 
Bug 517748 - Add ability to redirect global functions to Darwin

4 months agoconfigure: was missing SOLARIS_HAVE_SYS_CRYPTO_IOCTL_H set to false for non-Solaris...
Paul Floyd [Wed, 18 Mar 2026 20:37:27 +0000 (21:37 +0100)] 
configure: was missing SOLARIS_HAVE_SYS_CRYPTO_IOCTL_H set to false for non-Solaris OSes.

4 months agoBug 517697 - Implement CLRSSONSTACK and SETUJMPBUF handling on Solaris.
Paul Floyd [Wed, 18 Mar 2026 19:51:42 +0000 (20:51 +0100)] 
Bug 517697 - Implement CLRSSONSTACK and SETUJMPBUF handling on Solaris.

Patch provided by Casper H. S. Dik. Thanks!

4 months agoBug 512291 - Valgrind on Solaris should drop support for long gone /dev/crypto framework
Paul Floyd [Wed, 18 Mar 2026 19:41:00 +0000 (20:41 +0100)] 
Bug 512291 - Valgrind on Solaris should drop support for long gone /dev/crypto framework

Initial patch provided by VladimĂ­r Marek <vlmarek13@gmail.com>.
I've changed it a bit to add a configure test and break out a new
solaris regtest, scalar_crypto.

4 months agoSolaris: compiler warnings and one regtest compile error
Paul Floyd [Wed, 18 Mar 2026 19:36:46 +0000 (20:36 +0100)] 
Solaris: compiler warnings and one regtest compile error

4 months agos390x: Slightly optimize AND/OR/XOR with immediates
Andreas Arnez [Wed, 18 Mar 2026 17:27:44 +0000 (18:27 +0100)] 
s390x: Slightly optimize AND/OR/XOR with immediates

In host_s390_defs.c, when generating code for AND, OR, or XOR with a
64-bit immediate value, two instructions are emitted: one for each 32-bit
half of the full 64-bit value.  In cases where the value only affects the
low or the high half of the result, one of these instructions becomes a
no-op.

For these cases, just suppress the effective no-op instructions.

4 months agos390x: Fix negative signed immediate operands in code gen
Andreas Arnez [Wed, 18 Mar 2026 17:27:44 +0000 (18:27 +0100)] 
s390x: Fix negative signed immediate operands in code gen

The helper functions that check whether an integer constant fits into a
16-bit or 32-bit signed immediate operand always return false for negative
values.  This prevents the use of negative immediate operands altogether
and may lead to unnecessarily clumsy code being emitted, such as

  v-add    %r8,-160               8 bytes
  iihf      %r0,4294967295
  iilf      %r0,4294967136
  agr       %r8,%r0

instead of

  v-add    %r8,-160               8 bytes
  aghi      %r8,-160

This behavior is a regression; it was introduced by

  commit #0282c1cfc9015b69d09 -- s390: Tweak a few helper functions.

However, the previous code was perhaps a bit obscure.  So instead of
reverting to that, use simple checks like "val + 0x8000 <= 0xFFFF",
exploiting standard C integer semantics.

4 months agoDarwin regtest: fix compilation of gdbserver_tests/self_invalidate.c
Paul Floyd [Wed, 18 Mar 2026 06:48:39 +0000 (07:48 +0100)] 
Darwin regtest: fix compilation of gdbserver_tests/self_invalidate.c

This test checks for amd64 or mips. For amd64 it uses syscall 64.
That is 'exit' on Linux, 'umask' on both FreeBSD and Solaris
(which seems to work by accident). On Darwin it isn't a valid
syscall number which causes a Valgrind error.

Now Darwin uses syscall 0x02000001 (exit) and the test passes.

4 months agos390x: Mention "mi3" in show_hwcaps()
Andreas Arnez [Tue, 17 Mar 2026 15:21:27 +0000 (16:21 +0100)] 
s390x: Mention "mi3" in show_hwcaps()

When the miscellaneous-instruction-extensions facility 3 is present, it's
missing from the list shown by show_hwcaps().  Fix that.

4 months agoDarwin stack creation: hack to keep apple pointer conrrect on macOS 12+
Paul Floyd [Tue, 17 Mar 2026 07:46:34 +0000 (08:46 +0100)] 
Darwin stack creation: hack to keep apple pointer conrrect on macOS 12+

From Louis Brunner's port.

4 months agoBug 517597 - auxprogs/getoff.c:151: pointless test ?
Paul Floyd [Tue, 17 Mar 2026 06:15:52 +0000 (07:15 +0100)] 
Bug 517597 - auxprogs/getoff.c:151: pointless test ?

4 months agos390: Fix compilation with clang.
Florian Krohm [Mon, 16 Mar 2026 14:49:44 +0000 (14:49 +0000)] 
s390: Fix compilation with clang.

BFP testcases were broken when compiling with clang which does not
recognise -mlong-double-128 on s390

4 months agoLinux syswrap: several LINX_ that should be LINXY
Paul Floyd [Sun, 15 Mar 2026 12:56:55 +0000 (13:56 +0100)] 
Linux syswrap: several LINX_ that should be LINXY

4 months agoDarwin regtst: turn off debug traces in none apple-main-arg
Paul Floyd [Sun, 15 Mar 2026 17:43:13 +0000 (18:43 +0100)] 
Darwin regtst: turn off debug traces in none apple-main-arg

4 months agoDarwin regtest: add an expected for memcheck dw4
Paul Floyd [Sun, 15 Mar 2026 17:21:45 +0000 (18:21 +0100)] 
Darwin regtest: add an expected for memcheck dw4

This test uses sbrk(). The macOS man page starts with

     The brk and sbrk functions are historical curiosities left over from earlier days before
     the advent of virtual memory management.

Looks like they have a bit of an opinion there. This change also
turns off the sbrk() tests on Darwin.

4 months agoSolaris syswrap: fix a wrapper uising SOLX_ which should be SOLXY
Paul Floyd [Sun, 15 Mar 2026 12:55:12 +0000 (13:55 +0100)] 
Solaris syswrap: fix a wrapper uising SOLX_ which should be SOLXY

4 months agoRegtest build: fix exp-bbv build on amd64 Linux
Paul Floyd [Sun, 15 Mar 2026 07:36:52 +0000 (08:36 +0100)] 
Regtest build: fix exp-bbv build on amd64 Linux

I was overwriting the ld flags with @LDFLAG_NO_PIE@ rather than
adding to them.

4 months agoDarwin and FreeBSD syswrap: fix use of MACXY and BSDXY macros
Paul Floyd [Sat, 14 Mar 2026 20:39:15 +0000 (21:39 +0100)] 
Darwin and FreeBSD syswrap: fix use of MACXY and BSDXY macros

PRE and POST ae defined but only BSDX_ / MACX_ used.

4 months agoRegtest: fix use of -no-pie
Paul Floyd [Sat, 14 Mar 2026 13:30:34 +0000 (14:30 +0100)] 
Regtest: fix use of -no-pie

This should be a linker option only (-fno-pie is the compiler equivalent
which we don't need with out small one file testcases). Use it with
-Wl,-no-pie because not all platforms support PIE and it may produce
a warning when used with the compiler as linker driver.

4 months agoLinux x86: fix shm* syscall wrappers
Paul Floyd [Sat, 14 Mar 2026 19:22:16 +0000 (20:22 +0100)] 
Linux x86: fix shm* syscall wrappers

Someone (me) didn't use LINXY for the ones that have both PRE
and POST.

Problem reported / fix suggested by Andre Noll.
Thanks!

4 months agoSolaris: Fix GCC -Waddress warnings
Paul Floyd [Sat, 14 Mar 2026 17:10:18 +0000 (18:10 +0100)] 
Solaris:  Fix GCC -Waddress warnings

Also fix a warning in one regtest coming from setitimer.
With XOPEN < 500 it uses an old prototype without a const 2nd argument.

4 months agoLinux regtest: update scalar to run under WSL
Paul Floyd [Sat, 14 Mar 2026 11:11:23 +0000 (12:11 +0100)] 
Linux regtest: update scalar to run under WSL

Several syscalls like getuid fail and set ENOSYS on WSL.
(I guess that there is too much difference between
the Linux user/group/other IDs and whatever Windows uses).
Added a macro that covers both cases.

4 months agos390: Remove an unused #include directive
Florian Krohm [Sat, 14 Mar 2026 10:00:59 +0000 (10:00 +0000)] 
s390: Remove an unused #include directive

I forgot to do that in 502fb19a40194c52f051c603c311c0dd2d5c29b2

4 months agoMore consistent use of VG(strcmp)
Paul Floyd [Sat, 14 Mar 2026 07:26:59 +0000 (08:26 +0100)] 
More consistent use of VG(strcmp)

In e43f320b504a99edc45f1b5d0dce6fabde023b93 I silenced -Waddress warnings
coming from VG_STREQ which does NULL pointer checks then calls VG_(strcmp).
If the argument is a char array it can't be NULL. I changed using the
macro to directly calling VG_(strcmp). In the same places there were
still some uses of VG_STREQ and mixing macros and direct calls is confusing.
It's safe to only make direct calls to VG_(strcmp) - the arguments are already
checked or are string literals.

4 months agos390: Add VEX_HWCAPS_S390X_MRMM
Florian Krohm [Fri, 13 Mar 2026 22:36:23 +0000 (22:36 +0000)] 
s390: Add VEX_HWCAPS_S390X_MRMM

In b640fa64b8 z196 was chosen to be the minimum required machine
model. That machine provides a list of facilities (aka hardware
capabilities). But show_hwcaps_s390x did not show them.
This patch adds VEX_HWCAPS_S390X_MRMM (where MRMM means Minimum Required
Machine Model) which represents all hardware capabilities of that machine.

Also: drop the "s390x" prefix in show_hwcaps_s390x because "s390x" isn't
a hardware capability.

When running with -d hardware capabilities are shown like so:
--1085356:1:    main ... arch = S390X, hwcaps = z196-vx-msa5-mi2-lsc2-vxe-dflt-vxe2-vxd-msa8-msa9-msa12

4 months agoFix GCC -Waddress warnings
Paul Floyd [Fri, 13 Mar 2026 22:26:07 +0000 (23:26 +0100)] 
Fix GCC -Waddress warnings

These are warnings where there is a NULL check for something that
can never be NULL, mostly char arrays.

4 months agoRegtest: use -fsized-deallocation with memcheck xmas-tree test
Paul Floyd [Fri, 13 Mar 2026 20:37:06 +0000 (21:37 +0100)] 
Regtest: use -fsized-deallocation with memcheck xmas-tree test

4 months agoAdd -fno-diagnostics-show-caret and -ftrack-macro-expansion=0.
Florian Krohm [Fri, 13 Mar 2026 16:01:28 +0000 (16:01 +0000)] 
Add -fno-diagnostics-show-caret and -ftrack-macro-expansion=0.

Makes GCC diagnostic messages more readable.

4 months agodisasm-test: Remove an unused variable.
Florian Krohm [Fri, 13 Mar 2026 15:56:46 +0000 (15:56 +0000)] 
disasm-test: Remove an unused variable.

Found by clang.

4 months agoDarwin regtest: add an expected for memcheck gone_abrt_xml
Paul Floyd [Fri, 13 Mar 2026 12:51:06 +0000 (13:51 +0100)] 
Darwin regtest: add an expected for memcheck gone_abrt_xml

Joins the club of one expected per platform.

4 months agoDarwin regtest: small tweak for memcheck str_tester
Paul Floyd [Fri, 13 Mar 2026 12:40:37 +0000 (13:40 +0100)] 
Darwin regtest: small tweak for memcheck str_tester

On Darwin 17 (macOs 10.13) this test fails standalone and under
Valgrind.

The failing test is

  check(memcmp("a\203", "a\003", 2) > 0, 6);

I think that the compiler is using a builtin that does not behave
identically to libc memcmp. It's all a quastion of signed and
unsigned char. If char is unsigned then \203 is positive and
greater than \003. This is the Darwin libc behaviour. If
char is signed \203 is negative and the return value is negative
and the test fails.  That seems to be the builtin behaviour.

This change inhibits use of a builtin for that one test.

4 months agoBug 513844 - Support macOS 13.0 (Ventura)
Paul Floyd [Thu, 12 Mar 2026 20:27:07 +0000 (21:27 +0100)] 
Bug 513844 - Support macOS 13.0 (Ventura)

Preliminary support.

On macOS 10.13, 10.13, 10.15, 11 and 12 I get around 80 regtest failures
(mostly due to macOS's propensity to leak, but also some due to debuginfo
differences).

With macOS 13 that figure goes up to about 80. I haven't analysed all
problems. There are certaainly memory map issues - I thinks that
some syscalls like kernelrpc_mach_vm_deallocate_trap are causing
mapped blocks of memory to be split in ways thnat we're not handling
correctly. That results in --sanity-level=3 failures.

4 months agoDarwin initimg: fix location for start of stringtable on x86
Paul Floyd [Wed, 11 Mar 2026 21:02:49 +0000 (22:02 +0100)] 
Darwin initimg: fix location for start of stringtable on x86

I was calculating the remainder (%16) rather than the amount needed
to round up to the next multiple of 16. That worked on amd64
where it is 0 or 8 either way. On x86 4 and 12 were the wrong
way round.

4 months agoDarwin initimg stack construction improvements
Paul Floyd [Wed, 11 Mar 2026 11:47:42 +0000 (12:47 +0100)] 
Darwin initimg stack construction improvements

Improve the traces (and the traces in none/tests/darwin/apple-main-arg.c)
to make it clearer which is which - previously they had very similar traces.

Now there should just be a NULL pointer slot between the end of the
apple parameter pointers and the start of the stringtable.

Renamed the orig_envp argument. It isn't the original envp.

Added several more asserts for alignment and above all that the
work 'ptr' matches stringbase after finishing with the pointer arrays.

4 months agos390x: Simplify POPCNT logic in host_s390_defs.c
Andreas Arnez [Tue, 10 Mar 2026 17:20:01 +0000 (18:20 +0100)] 
s390x: Simplify POPCNT logic in host_s390_defs.c

With the exploitation of the POPCNT instruction, the new s390_insn_tag
S390_INSN_POPCNT was introduced.  This requires handling the new tag in
s390_get_reg_usage(), s390_insn_map_regs(), and s390_insn_as_string(), as
well as providing the interface function s390_insn_popcnt().

All of this can go away when using the existing S390_INSN_UNOP instead and
just adding a new unary operation type to s390_unop_t.  So do this.

4 months agoDarwin: add printing function for env and apple pointer area
Paul Floyd [Tue, 10 Mar 2026 08:41:01 +0000 (09:41 +0100)] 
Darwin: add printing function for env and apple pointer area

Change DEBUG_ENV_APPLE to use it. It will print env and the
apple pointer area at the start of setup_client_stack
(what we get from 'valgrind' and the OS) and at the end
of the same function (what we give tot he client).

4 months agoBug 413410 - unhandled amd64-darwin syscall: mach:50 (on macOS 10.15)
Paul Floyd [Mon, 9 Mar 2026 19:42:44 +0000 (20:42 +0100)] 
Bug 413410 - unhandled amd64-darwin syscall: mach:50 (on macOS 10.15)

Was missing setting AFTER. mach traps are quite different to
UNIX syscall wrappers so I might have missed some more things.

4 months agoDarwin stack size
Paul Floyd [Mon, 9 Mar 2026 07:05:39 +0000 (08:05 +0100)] 
Darwin stack size

Darwin wasn't using --main-stacksize. Instead the stack was being set
based on rlimit (in my tests I saw that it could also be set from
macho, but it appears to specify a size of 0, at least on regtest
files compiled on macOS 12.

Also unlike other OSes there was no lower/upper limit of 1MB
and 16MB.

It looks like all four platforms now have duplicated code for setting
the main client stack size, so I should probably factor it out into
something like VG_(get_default_stack_size)().

With this change I tried to get the lsframe1 and lsframe2 tests to work.
With some twiddling of the stack and frame size they seem to work.
One issue is that Darwin has a function that probes below the stack.
I think that is related to stack growth. We don't implement a grow down
stack on Darwin.  The whole stack gets mapped in one go. So this probing
does not serve much purpose under Valgrind but it does generate a lot of
memcheck noise.

~t seems as though the name of this probe function changed with
macOS 12. Previously it was __chkstk_darwin_probe. With macOS 12
it is ___chkstk_darwin. So I added a couple of wildcards to the suppressions
so that they match both versions.

4 months agoDarwin initimg: exit if VG_(do_exec) fails, clean up use of executable_path
Paul Floyd [Sun, 8 Mar 2026 20:32:23 +0000 (21:32 +0100)] 
Darwin initimg: exit if VG_(do_exec) fails, clean up use of executable_path

There was a compiler warning because the return from VG_(do_exec)
was unused. Check it and exit, like other OSes. No point trying
to continue if we can't load the guest exe.

Also in setup_client_stack there was some confusion over what to do
if info->executable_path is NULL. I'm pretty sure that without
a guest exe name we can never get this far. So I've just added
an assert.

4 months agoDarwin regtest: add traces to apple-main-arg test
Paul Floyd [Sun, 8 Mar 2026 19:41:25 +0000 (20:41 +0100)] 
Darwin regtest: add traces to apple-main-arg test

Traces turned off by default as they will be system dependent.
Useful for debugging env and apple pointer issues.

4 months agoAdd a section about mismatched free errors when using identical code folding to the...
Paul Floyd [Fri, 6 Mar 2026 20:13:40 +0000 (21:13 +0100)] 
Add a section about mismatched free errors when using identical code folding to the FAQ.

See Bug 517126 - Mismatched frees with ICF

I haven't added this to NEWS since it's not really a bug
(the linker writers deem this to be an error that is safe).
Other than telling users not to use ICF linker options we don't have a fix.

4 months agos390x: Reflect arch15 (z17) support in NEWS
Andreas Arnez [Fri, 6 Mar 2026 11:25:48 +0000 (12:25 +0100)] 
s390x: Reflect arch15 (z17) support in NEWS

Document the new z/Architecture (edition 15) support in the NEWS file.

4 months agoBug 516289 - illumos lsframe2 regtest fails
Paul Floyd [Thu, 5 Mar 2026 14:05:29 +0000 (15:05 +0100)] 
Bug 516289 - illumos lsframe2 regtest fails

4 months agoSolaris setup_client_stack stack extent
Paul Floyd [Thu, 5 Mar 2026 07:51:10 +0000 (08:51 +0100)] 
Solaris setup_client_stack stack extent

This wasn't using the offsets for inner and VG_(clstk_end) didn't
account for anon_size. This does not affect Bug 516289, sadly.

4 months agoBug 503240 - s390x: Support MSA 10, 11, 12, and 13
Andreas Arnez [Thu, 5 Mar 2026 12:25:07 +0000 (13:25 +0100)] 
Bug 503240 - s390x: Support MSA 10, 11, 12, and 13

Add support for the message-security-assist extensions 10-13.  These
extensions don't add any new instructions, but add new capabilities to
existing instructions.

4 months agoregtest: Support make regtest BUNSEN=no
Florian Krohm [Wed, 4 Mar 2026 22:23:18 +0000 (22:23 +0000)] 
regtest: Support make regtest BUNSEN=no

Inhibits the generation of .log and .trs files which are only of use
for post-processing with bunsen. For those of us who like tidy
working copies.
vg_regtest: New command line option --no-bunsen

4 months agoNEWS: Fix typos.
Florian Krohm [Wed, 4 Mar 2026 22:12:54 +0000 (22:12 +0000)] 
NEWS: Fix typos.

4 months agoClean up initimg-freebsd ascii stack drawing and rationalise darwin VG_STACK_REDZONE_...
Paul Floyd [Wed, 4 Mar 2026 12:10:06 +0000 (13:10 +0100)] 
Clean up initimg-freebsd ascii stack drawing and rationalise darwin VG_STACK_REDZONE_SZB etc

VG_STACK_REDZONE_SZB and related have the same groups of values on x86 and amd64.
Darwin had duplicate definitions so I stuck them all together.

values

4 months agos390: Print guest register names symbolically
Florian Krohm [Wed, 4 Mar 2026 11:12:50 +0000 (11:12 +0000)] 
s390: Print guest register names symbolically

This is quite convenient when looking at VEX traces obtained during
insn selection and register allocation.

Today this looks like this:
------------------------ Register-allocated code ------------------------

  0   v-evcheck counter = 804(%r13), fail-addr = 808(%r13)
  1   v-test   1424(%r13)             8 bytes
  2   v-call   if (not equal) MC_(helperc_value_check0_fail_no_o){0x8000100C0}()
  3   v-loadi  %r5,0                  8 bytes
  4   v-cmpu   %r5,608(%r13)          8 bytes
  5   v-xdirect if (not equal) 720(%r13) = 0x4038182  fast
  6   v-xdirect if (always) 720(%r13) = 0x4038190  fast

With the change:
------------------------ Register-allocated code ------------------------

  0   v-evcheck counter = guest_EvC_COUNTER, fail-addr = guest_EvC_FAILADDR
  1   v-test   shadow1_r4             8 bytes
  2   v-call   if (not equal) MC_(helperc_value_check0_fail_no_o){0x800010060}()
  3   v-loadi  %r5,0                  8 bytes
  4   v-cmpu   %r5,guest_r4           8 bytes
  5   v-xdirect if (not equal) guest_IA = 0x4038182  fast
  6   v-xdirect if (always) guest_IA = 0x4038190  fast

Guest registers are now written out symbolically:
1424(%r13) becomes shadow1_r4
608(%r13)  becomes guest_r4
720(%r13)  becomes guest_IA

The new behaviour is enabled by default but can be controlled at compile
time by defining SYMBOLIC_REGNAMES as desired.

4 months agoBug 390754 - unhandled amd64-darwin syscall: unix:216 (open_dprotected_np)
Paul Floyd [Tue, 3 Mar 2026 13:02:16 +0000 (14:02 +0100)] 
Bug 390754 - unhandled amd64-darwin syscall: unix:216 (open_dprotected_np)

4 months agoSimplify condition in VG_(post_syscall)
Paul Floyd [Tue, 3 Mar 2026 11:46:45 +0000 (12:46 +0100)] 
Simplify condition in VG_(post_syscall)

4 months agoDarwin syscall: sigwait arguments are not optionally NULL
Paul Floyd [Mon, 2 Mar 2026 20:27:26 +0000 (21:27 +0100)] 
Darwin syscall: sigwait arguments are not optionally NULL

So always PRE_MEM_READ/WRITE them.

4 months agoFreeBSD syscall: clean up sigwait wrapper
Paul Floyd [Mon, 2 Mar 2026 20:12:13 +0000 (21:12 +0100)] 
FreeBSD syscall: clean up sigwait wrapper

This is another that returns 0 / errno code. The POST was already
doing the right thing. Changed the PRE to always set SfMayBlock
rather than only if ARG1 is safe to dereference.

Updated testcase.

4 months agoBug 516748 - clock_nanosleep was also wrong
Paul Floyd [Mon, 2 Mar 2026 19:15:32 +0000 (20:15 +0100)] 
Bug 516748 - clock_nanosleep was also wrong

clock_nanosleep returns 0 or an errno error code, not 0/-1 and it does not set errno.

The code was copied and pasted from Linux which does return 0/-1.
That means that the POST only needs a POST_MEM_WRITE for ARG4 if
the remainder timespec pointer is not NULL and RES is EINTR.
The error flag is not set so the syscall appears to have succeeded.

4 months agoFreeBSD README: add a section on syscalls.
Paul Floyd [Sun, 1 Mar 2026 20:51:29 +0000 (21:51 +0100)] 
FreeBSD README: add a section on syscalls.

With an emphasis on syscall SYS_syscall argument shuffling.

4 months agoFreeBSD regtest: add lsframe1 and lsframe2
Paul Floyd [Sun, 1 Mar 2026 18:55:56 +0000 (19:55 +0100)] 
FreeBSD regtest: add lsframe1 and lsframe2

Not only Darwin does not have a version of these tests.

I've been trying to see why lsframe2 is failing on illumos and I saw that
these tests are only for Linux and Solaris. So this adds FreeBSD to
the mix.

4 months agoExplain why realloc_size_zero does not use Addr.Block and clean up a volatile cast
Paul Floyd [Sun, 1 Mar 2026 17:19:46 +0000 (18:19 +0100)] 
Explain why realloc_size_zero does not use Addr.Block and clean up a volatile cast

5 months agoDarwin syscall: clean up posix_spawn and add to scalar
Paul Floyd [Sat, 28 Feb 2026 15:43:38 +0000 (16:43 +0100)] 
Darwin syscall: clean up posix_spawn and add to scalar

5 months agoDarwin syscall: add missing attr argument to posix_spawn wrapper
Paul Floyd [Sat, 28 Feb 2026 13:48:14 +0000 (14:48 +0100)] 
Darwin syscall: add missing attr argument to posix_spawn wrapper

5 months agoFreeBSD syscall: add wrapper for pdwait system call
Paul Floyd [Sat, 28 Feb 2026 11:01:31 +0000 (12:01 +0100)] 
FreeBSD syscall: add wrapper for pdwait system call

Also add 516748 to NEWS. It's done for FreeBSD and finding syscalls
like that is quite hard.

5 months agoClean up setting carry flag in VG_(fixup_guest_state_after_syscall_interrupted)
Paul Floyd [Fri, 27 Feb 2026 20:26:23 +0000 (21:26 +0100)] 
Clean up setting carry flag in VG_(fixup_guest_state_after_syscall_interrupted)

This wasn't consistent (not at all for Darwin, not checking SfNoWriteResult
on Solaris and a bit long winded on FreeBSD). Simplify the code for all
3 platforms.

5 months agoFreeBSD syscall: add pdrfork as sys_ni_syscall
Paul Floyd [Fri, 27 Feb 2026 19:31:10 +0000 (20:31 +0100)] 
FreeBSD syscall: add pdrfork as sys_ni_syscall

rfork with a process descriptor. I'm not sure if we'll ever properly
support any form of rfork.

5 months agoFreeBSD syscall: typo or copy/paste error in copy_file_range
Paul Floyd [Thu, 26 Feb 2026 19:30:16 +0000 (20:30 +0100)] 
FreeBSD syscall: typo or copy/paste error in copy_file_range

Was using
       !ML_(fd_allowed)(ARG3, "copy_file_range(infd)", tid, False))
whilst ARGS is outfd, not infd.

5 months agoFreeBSD syscall: add wrapper for kexec_load
Paul Floyd [Thu, 26 Feb 2026 12:41:31 +0000 (13:41 +0100)] 
FreeBSD syscall: add wrapper for kexec_load

Not sure if it was worth bothering with this (and the checking is
probably incomplete).

Linux and Darwin have this where it is not implemented or sys_ni_syscall.

5 months agoBug 516748 - initial fix for FreeBSD posix_fallocate and posix_fadvise
Paul Floyd [Thu, 26 Feb 2026 12:13:28 +0000 (13:13 +0100)] 
Bug 516748 - initial fix for FreeBSD posix_fallocate and posix_fadvise

All I wanted to do was add a syscall wrapper for kexec_load and then
I discovered this problem :-(.

When I'm done with kexec_load (and pdrfork and pdwait) I'll get back to this.

5 months agoFreeBSD regtest: update scalar testcase to check syscalls that return error codes
Paul Floyd [Thu, 26 Feb 2026 11:53:58 +0000 (12:53 +0100)] 
FreeBSD regtest: update scalar testcase to check syscalls that return error codes

Leading to Bug 516748

5 months agomemcheck warnings: cast addresses to void* for %p args in mc_main DEBUG macros
Paul Floyd [Mon, 23 Feb 2026 06:39:19 +0000 (07:39 +0100)] 
memcheck warnings: cast addresses to void* for %p args in mc_main DEBUG macros

5 months agos390 disasm-test: Add new opcodes from Principles of Ops 15th edition
Florian Krohm [Fri, 20 Feb 2026 22:03:38 +0000 (22:03 +0000)] 
s390 disasm-test: Add new opcodes from Principles of Ops 15th edition

Add opcodes: BDEPG, BEXTG, CLZF, CTZG, LXA[BHFGQ], LLXA[BHFGQ], VBLEND,
VGEM, VD, VDL, VEVAL, VR, VRL
Adjust prerequisite test (needs -march=arch15 now) and expected results.

Fix s390_irgen_VDx: M5 values with one or more reserved bits set do not
cause a specification exception. Found by disasm-test.

5 months agoSolaris debuglog: fix clobber list for local_sys_write_stderr
Paul Floyd [Fri, 20 Feb 2026 21:26:40 +0000 (22:26 +0100)] 
Solaris debuglog: fix clobber list for local_sys_write_stderr

There were no registers in the clobber list. RDI is clobbered by the
value 2 for stderr. So back in 'add_to_buf' the next character to
be added to the VG_(debugLog) buffer was getting clobbered with a 2.
Also clobber RCX and R11 (syscall scratch registers).

5 months agoBug 503239 - s390x: Vector-enhancements facility 3, division
Andreas Arnez [Thu, 19 Feb 2026 13:44:17 +0000 (14:44 +0100)] 
Bug 503239 - s390x: Vector-enhancements facility 3, division

Add support for the vector instructions VD, VDL, VR, and VRL.  These
perform integer division and remainder operations for lane widths of 32,
64, and 128 bits.

For lane widths up to 64 bit emulate them with existing instructions, by
handling each lane individually.  Also emulate the masking of bad
divisions when the "integer-divide control" bit is set.

For 128-bit integers exploit the new instructions in the emitted code,
since no previous instructions can perform the required calculations, and
emulation would be quite expensive.  Represent the operations in IR with
the existing Iop_DivS128, Iop_DivU128, Iop_ModS128, and Iop_ModU128, and
handle those in host_s390_isel.c appropriately.

This concludes vector-enhancements facility 3 support, so set facility bit
198 on CPUs that have the facility installed.

5 months agoBug 503239 - s390x: Vector-enhancements facility 3 (w/o division)
Andreas Arnez [Thu, 19 Feb 2026 13:44:17 +0000 (14:44 +0100)] 
Bug 503239 - s390x: Vector-enhancements facility 3 (w/o division)

Add support for most of the vector-enhancements facility 3, except for the
vector division and vector remainder instructions.

New instructions:
  VBLEND, VGEM, VEVAL

Added doubleword (64-bit) support:
  VUPH, VUPLH, VUPL, VUPLL
  VMAE, VMALE, VMAO, VMALO
  VME, VMLE, VMO, VMLO

Doubleword and quadword support:
  VMAL, VMAH, VMALH
  VML, VMH, VMLH

Quadword (128-bit) support:
  VAVG, VAVGL
  VEC, VECL
  VCEQ, VCH, VCHL
  VCLZ, VCTZ
  VLC, VLP
  VMX, VMXL, VMN, VMNL

So far the instructions VCEQ, VMAH, VMALH, VCH, and VCHL had been
implemented with the use of dirty helpers.  Replace this by full
emulation.  In particular, now generate IR that calculates the resulting
condition code of VCEQ, VCH, and VCHL.  Since that calculation works the
same for VCEQ, VCH, and VCHL, move it to a new helper routine,
s390_V128_setcc_for_cmp().

Add more routines for common logic where appropriate, such as
s390_V128_add(), s390_V128_CmpGTU(), etc.  This results in code changes
for some instructions that are not touched by the new facility, such as VA
and VREPI.

Since the new support results in fewer specification exceptions, adjust
disasm-test accordingly.

5 months agoBug 503238 - s390x: Support misc.-instruction-extensions facility 4
Andreas Arnez [Thu, 19 Feb 2026 13:44:17 +0000 (14:44 +0100)] 
Bug 503238 - s390x: Support misc.-instruction-extensions facility 4

Enable Valgrind to provide the "miscellaneous-instruction-extensions
facility 4", which is first introduced in IBM z17 CPUs and may be
exploited by the compiler when specifying `march=z17'.

In particular, the following new instructions are added:

 * BDEPG and BEXTG -- "bit deposit" and "bit extract"

 * CLZG and CTZG -- "count leading/trailing zeros"

 * LXAB, LLXAB, LXAH, LLXAH, LXAF, LLXAF, LXAG, LLXAG, LXAQ, and LLXAQ --
   "load indexed" and "load logical indexed" with various element sizes

The new instructions are fully emulated.  Still, as usual, Valgrind will
only set the respective facility bit on CPUs that have the bit set
themselves.

5 months agos390-runone: --insn now implies --template
Florian Krohm [Thu, 19 Feb 2026 09:46:58 +0000 (09:46 +0000)] 
s390-runone: --insn now implies --template

In other words: when --insn is given, --template can be omitted.

5 months agoregtest: Fix prereq test for existence of xmllint.
Florian Krohm [Wed, 18 Feb 2026 12:37:39 +0000 (12:37 +0000)] 
regtest: Fix prereq test for existence of xmllint.

As suggested by Mark.

5 months agoBug 406674 - False positive when reading bitfield value on code compiled with clang 7.0
Paul Floyd [Tue, 17 Feb 2026 19:26:09 +0000 (20:26 +0100)] 
Bug 406674 - False positive when reading bitfield value on code compiled with clang 7.0

5 months agos390: Use Iop_PopCount64 and emit "popcnt" insn when possible
Florian Krohm [Tue, 17 Feb 2026 19:32:53 +0000 (19:32 +0000)] 
s390: Use Iop_PopCount64 and emit "popcnt" insn when possible

This requires the miscellaneous-instruction-extensions facility 3.
Detect it in m_machine.c, test for it in s390x_features.c.
Add VEX_HWCAPS_S390X_MI3, s390_host_has_mi3 and S390_INSN_POPCNT.
New functions s390_insn_popcnt and s390_insn_popcnt_emit and s390_emit_POPCNT.
New testcase popcnt-mi3.c carved out of misc3.c

5 months agoBug 516090 - Regression : Linux FreeBSD and Darwin: refactor *at syscall dirfd check
Paul Floyd [Mon, 16 Feb 2026 18:49:02 +0000 (19:49 +0100)] 
Bug 516090 - Regression : Linux FreeBSD and Darwin: refactor *at syscall dirfd check

5 months agoBug 514343 - Add a valgrind.h macro VALGRIND_REPLACES_MALLOC
Paul Floyd [Fri, 6 Feb 2026 07:47:12 +0000 (08:47 +0100)] 
Bug 514343 - Add a valgrind.h macro VALGRIND_REPLACES_MALLOC

Also a macro VALGRIND_GET_TOOLNAME

5 months agoBug 233298 - Reflect MEMPOOL_FREE in heap summary
Paul Floyd [Sat, 11 Jan 2025 16:39:44 +0000 (17:39 +0100)] 
Bug 233298 - Reflect MEMPOOL_FREE in heap summary

There was one missing free increment for autoref pools.

Also added testcases based on memcheck mempool2 and leak-autorefpool.

Original patch contributed by 8dcc <8dcc.git@gmail.com>

This is an update on a patch from 2010:
https://bugsfiles.kde.org/attachment.cgi?id=42491

5 months agoFreeBSD resgtest: make sure that /proc is mounted as procfs for open_client test
Paul Floyd [Sat, 14 Feb 2026 21:07:03 +0000 (22:07 +0100)] 
FreeBSD resgtest: make sure that /proc is mounted as procfs for open_client test

5 months agoReplace which and type with command -v
Mark Wielaard [Sat, 14 Feb 2026 20:36:47 +0000 (21:36 +0100)] 
Replace which and type with command -v

which is an external (csh) command which might not be available. type
is a bourn shell builtin, but not necessarily available outside bash.
Use command -v which is POSIX and should work everywhere.