]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
5 weeks 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.

6 weeks 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.

6 weeks 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 ?

6 weeks 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

6 weeks 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

6 weeks 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

6 weeks 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.

6 weeks 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

6 weeks 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.

6 weeks 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.

6 weeks 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.

6 weeks 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!

6 weeks 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.

6 weeks 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.

6 weeks 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

6 weeks 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.

6 weeks 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

6 weeks 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.

6 weeks 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

6 weeks 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.

6 weeks 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.

6 weeks 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.

6 weeks 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.

6 weeks 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.

6 weeks 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.

6 weeks 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.

6 weeks 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.

7 weeks 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).

7 weeks 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.

7 weeks 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.

7 weeks 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.

7 weeks 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.

7 weeks 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.

7 weeks 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.

7 weeks 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

7 weeks 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.

7 weeks 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.

7 weeks 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

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

7 weeks 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

7 weeks 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.

8 weeks 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)

8 weeks 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)

8 weeks 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.

8 weeks 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.

8 weeks 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.

8 weeks 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.

8 weeks 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.

8 weeks 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

8 weeks 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

8 weeks 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

8 weeks 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.

8 weeks 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.

8 weeks 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.

2 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.

2 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.

2 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.

2 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

2 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

2 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.

2 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).

2 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.

2 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.

2 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.

2 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.

2 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.

2 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

2 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

2 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

2 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

2 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

2 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

2 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.

2 months agoregtest: move /proc test to freebsd for none procfs-cmdline-exe
Paul Floyd [Sat, 14 Feb 2026 20:15:52 +0000 (21:15 +0100)] 
regtest: move /proc test to freebsd for none procfs-cmdline-exe

2 months agoFix none/tests/freebsd/Makefile.am: procfs-cmdline-exe..stderr.exp typo
Mark Wielaard [Sat, 14 Feb 2026 19:43:47 +0000 (20:43 +0100)] 
Fix none/tests/freebsd/Makefile.am: procfs-cmdline-exe..stderr.exp typo

Should have just one dot ('.').

2 months agoBug 515992 - Add FreeBSD /proc virtualisation for cmdline and file
Paul Floyd [Sat, 14 Feb 2026 17:52:12 +0000 (18:52 +0100)] 
Bug 515992 - Add FreeBSD /proc virtualisation for cmdline and file

2 months agoregtest: clean out procfs-cmldline-exe vgtest and exp files from Makefile.am
Paul Floyd [Sat, 14 Feb 2026 15:58:44 +0000 (16:58 +0100)] 
regtest: clean out procfs-cmldline-exe vgtest and exp files from Makefile.am

2 months agoRegtest: split none procfs-cmdline-exe into one version per platform
Paul Floyd [Sat, 14 Feb 2026 15:37:42 +0000 (16:37 +0100)] 
Regtest: split none procfs-cmdline-exe into one version per platform

This was linux and non-linux where non-linux really meant
non-linux non-solaris non-freebsd i.e., darwin only.

I need to add a FreeBSD version (and /proc support for cmdline).

2 months agoSolaris regtest: make Solaris specific procfs-cmdline-exe.c
Paul Floyd [Sat, 14 Feb 2026 15:57:45 +0000 (16:57 +0100)] 
Solaris regtest: make Solaris specific procfs-cmdline-exe.c

Use /proc/pid_or_self/path/a.out rather than /proc/pid_or_self/exe
as in the parent directory.

I'm going to split this test into versions for each platform,
Darwin (with no /proc) can use the Linux one. FreeBSD optionally
has /proc but uses currproc instead of self.

2 months agoAdd bacck the return type for handle_self_exe_open
Paul Floyd [Sat, 14 Feb 2026 14:25:44 +0000 (15:25 +0100)] 
Add bacck the return type for handle_self_exe_open

2 months agoLinux syswrap: handle_self_exe_open is also now static and Linux only.
Paul Floyd [Sat, 14 Feb 2026 14:23:06 +0000 (15:23 +0100)] 
Linux syswrap: handle_self_exe_open is also now static and Linux only.

2 months agoSolaris syswrap: make handle_auxx_open a static function
Paul Floyd [Sat, 14 Feb 2026 15:12:21 +0000 (16:12 +0100)] 
Solaris syswrap: make handle_auxx_open a static function

handle_psinfo_open and handle_cmdline_open are Solaris statics but
ML_(handle_auxv_open) was shared between Linux and Solaris. There is
some common code but I find it less confusing to have all 3 statics
in the same place for Solaris.

This makes handle_auxv_open static for both.

2 months agosyswrap cleanup: remove Solaris references in generic sys_open
Paul Floyd [Sat, 14 Feb 2026 12:36:02 +0000 (13:36 +0100)] 
syswrap cleanup: remove Solaris references in generic sys_open

On Solaris sys_open is handled in syswrap-solaris.c

2 months agoSolaris syscall wrapper: add procfs cmdline sp[ecial handling to sys_open
Paul Floyd [Sat, 14 Feb 2026 13:22:18 +0000 (14:22 +0100)] 
Solaris syscall wrapper: add procfs cmdline sp[ecial handling to sys_open

Generally it seems that older Solaris (11.3) and OpenIndiana use 'old'
sys_open and do not have procfs cmdline. Newer Solaris (11.4) uses
sys_openat and has procfs cmdline.

OmniOS mixes both, it uses old sys_open and has procfs cmdline.

2 months agos390x: Rename s390_format_VRR*() functions
Andreas Arnez [Fri, 13 Feb 2026 16:12:00 +0000 (17:12 +0100)] 
s390x: Rename s390_format_VRR*() functions

After having renamed most of the s390_format_*() functions to match the
names in the z/Architecture Principles of Operation, the last remaining
format functions yet to be renamed are the ones dealing with variants of
the VRR format.

Rename the functions accordingly:

  current       new     sample insn
  ------------  -----   -----------
  VRR_VV        VRRa0   vlr
  VRR_VVM       VRRa1   vclz
  VRRa_VVMM     VRRa2   vfsq
  VRRa_VVMMM    VRRa    vcdg
  VRR_VVVMM     VRRb    vceq
  VRR_VVV       VRRc0   vn
  VRR_VVVM      VRRc1   va
  VRRa_VVVMM    VRRc2   vfa
  VRRa_VVVMMM   VRRc    vfmin
  VRRd_VVVVM    VRRd1   vac
  VRRd_VVVVMM   VRRd    vmsl
  VRR_VVVV      VRRe0   vperm
  VRRe_VVVVMM   VRRe    vfma
  VRR_VRR       VRRf    vlvgp

Note that none of these directly cover the VISTR instruction.  But that
can be treated as the VRRa format, where m4 is left unused.  So do that
and remove s390_VRR_VVMM(), which previously existed just for this
purpose.

Also, adjust the names of the VRR*() macros to match the format names.
Drop VRRa_v*() and VRRd_v*() and use VRR_v*() instead, since the vector
fields' positions don't depend on the VRR format variant.

2 months agos390x: Simplify interface of vector format functions
Andreas Arnez [Fri, 13 Feb 2026 11:38:52 +0000 (12:38 +0100)] 
s390x: Simplify interface of vector format functions

Same as with the non-vector instructions, simplify the interface of the
vector format functions.

2 months agos390x: Simplify interface of non-vector insn format functions
Andreas Arnez [Fri, 13 Feb 2026 11:38:52 +0000 (12:38 +0100)] 
s390x: Simplify interface of non-vector insn format functions

Each of the format functions in the translator provides common logic for
handling a specific instruction format.  So far a format function's
interface is defined such that it receives instruction operands as
individual arguments.

This means that the extraction of operands from the opcode -- despite
being common for all invocations of the same format function -- is
duplicated every time.  This is error-prone, results in longer code
overall, and makes the invocations more difficult to read.

The code duplication can be avoided by moving the operand extraction to
the format functions themselves.

Do this for all non-vector instruction formats.

2 months agoUpdate the LTP version in valgrind testsuite to v20260130
Martin Cermak [Fri, 13 Feb 2026 11:26:52 +0000 (12:26 +0100)] 
Update the LTP version in valgrind testsuite to v20260130

Update the LTP version in valgrind testsuite to v20260130.
All patches from auxprogs/ltp-patches were accepted by LTP
upstream and included in the release, so these can now be
dropped locally.

2 months agoSolaris regtest: fix build of one x86 SSE test on OmniOS
Paul Floyd [Thu, 12 Feb 2026 19:48:01 +0000 (20:48 +0100)] 
Solaris regtest: fix build of one x86 SSE test on OmniOS

2 months agodoc: mention other realloc family functions in realloc size zero error description
Paul Floyd [Thu, 12 Feb 2026 12:05:03 +0000 (13:05 +0100)] 
doc: mention other realloc family functions in realloc size zero error description

Also add C23 making realloc size zero UB.

2 months agoBug 515731 - Distinguish between realloc functions in realloc size 0 error messages
Paul Floyd [Mon, 9 Feb 2026 06:22:52 +0000 (07:22 +0100)] 
Bug 515731 - Distinguish between realloc functions in realloc size 0 error messages

2 months agos390: Fix VG_(machine_get_size_of_largest_guest_register)
Florian Krohm [Tue, 10 Feb 2026 22:27:40 +0000 (22:27 +0000)] 
s390: Fix VG_(machine_get_size_of_largest_guest_register)

Return 16 if the machine has vector registers.

2 months agos390x: Fix handling of KIMD-GHASH
Andreas Arnez [Tue, 10 Feb 2026 11:57:48 +0000 (12:57 +0100)] 
s390x: Fix handling of KIMD-GHASH

The KIMD-GHASH function of the "compute intermediate message digest"
instruction is missing from the list returned by KIMD-Query, because the
appropriate bit is set in the wrong field of the returned array.  Fix
this.

2 months agoDarwin: don't print "run:dsymutil" unless VG_(clo_verbosity) > 0
Paul Floyd [Mon, 9 Feb 2026 11:04:25 +0000 (12:04 +0100)] 
Darwin: don't print "run:dsymutil" unless VG_(clo_verbosity) > 0

This causes something to end up in stderr.out in regression tests.
There is a filter for it, but that does not apply to tests like
iropt-test that really expect no output and have no stderr filter.

2 months agoLinux reallocarray: update testcase and expected
Paul Floyd [Sun, 8 Feb 2026 18:09:25 +0000 (19:09 +0100)] 
Linux reallocarray: update testcase and expected

2 months agoFreeBSD reallocarray: behaves like realloc on allocation failure
Paul Floyd [Sun, 8 Feb 2026 16:57:30 +0000 (17:57 +0100)] 
FreeBSD reallocarray: behaves like realloc on allocation failure

It was behaving like reallocf which frees the ptr if the allocation
fails. That's wrong, it behaves like realloc which does not free
ptr. Updated the one regression test.

I also noticed that the error message always mentions realloc
even for reallocf and reallocarray.

2 months agoAdd --num-callers change to NEWS
Paul Floyd [Sun, 8 Feb 2026 15:03:30 +0000 (16:03 +0100)] 
Add --num-callers change to NEWS

2 months agoppc regtest: add another expected for memcheck/tests/linux/rfcomm
Paul Floyd [Sun, 8 Feb 2026 09:03:21 +0000 (10:03 +0100)] 
ppc regtest: add another expected for memcheck/tests/linux/rfcomm

This was failing on cfarm120 with diffs like

- in frame #1, created by main (rfcomm.c:26)
+ in frame #0, created by bind (???:)

I'm not sure why there is a change for the frame where the socket
struct is created. cfarm120 doesn't have the glibc dedbuginfo
package installed.

2 months agoppc regtest: update expected for none fdleak_ipv4_xml
Paul Floyd [Sun, 8 Feb 2026 08:55:28 +0000 (09:55 +0100)] 
ppc regtest: update expected for none fdleak_ipv4_xml

Should now pass on cfarm120

2 months agoppc64le regtest: update a few xml expecteds
Paul Floyd [Sat, 7 Feb 2026 11:04:12 +0000 (12:04 +0100)] 
ppc64le regtest: update a few xml expecteds