Paul Floyd [Fri, 22 Dec 2023 18:59:56 +0000 (19:59 +0100)]
Bug 478837 - valgrind fails to read debug info for rust binaries
mold produces binaries with non-contiguous .rodata and .rodata.xxx
sections. The code that merges their addresses can only handle 1
rodata which means only contiguous sections can be merged.
Since this now seems to be a "normal" case I've changed the warning
message to be a SYMTAB_TRACE message.
Paul Floyd [Sun, 17 Dec 2023 13:18:51 +0000 (14:18 +0100)]
Bug 478624 - Valgrind incompatibility with binutils-2.42 on x86 with new nop patterns (unhandled instruction bytes: 0x2E 0x8D 0xB4 0x26)
It was a bit of a struggle to get the testcase to build
with both clang and gcc (oddly enough gcc was more difficult) so
I just resorted to using .byte arrays.
When vgdb replies to qRcmd packet recieved from GDB, it
used to send the reply as simple string. This is wrong,
GDB expects to get a hex encoded string.
Paul Floyd [Sun, 26 Nov 2023 09:23:34 +0000 (10:23 +0100)]
FreeBSD regtest: make aio test more robust
Had to remove a few of the errors - seems to me that aio errors
are not handled well by the FreeBSD kernel. E.g., it looks
like the error state doesn't get cleared by aio_return.
Paul Floyd [Sat, 18 Nov 2023 12:02:30 +0000 (13:02 +0100)]
Bug 428364 - Signals inside io_uring_enter not handled
Patch provide by
Andrew Soutar kdebugtraq@andrewsoutar.com
Thanks!
I haven't added the reproducers as they require interrupting
the Valgrind process. Maybe the tests can be adapted to use
fork and have the parent kill the child running io_uring.
Paul Floyd [Sat, 18 Nov 2023 06:34:00 +0000 (07:34 +0100)]
Darwin: remove global variable used in aio_return
This was using a global variable to signify a read success
between pre- and post- aio_return. I don't think that this
was safe. There could be multiple calls to aio_return on
different threads. The global aiocpb_table is safe enough
as the pointers to control block are unique. However if two
threads manipulate was_a_successful_aio_read there's no way
of telling them apart. Rather than trying to make
was_a_successful_aio_read thread safe I did the same as on
FreeBSD and removed post- aio_return and now do everything
in pre- aio_return. No global variable, no thread hazard.
Adds syscall wrappers for aio_readv and aio_writev
Also rewrote the wrappers for aio_read, aio_write and aio_return
as they weren't correctly checking the async memory.
The code is similar th that of Darwin with one exception.
Darwin uses a global variable to communicate between the
pre- and post- aio_return wrappers. I don't think that is
safe when there are multiple aio reads in flight. Instead
I put everything in the pre- aio_return wrapper.
Paul Floyd [Sun, 5 Nov 2023 12:35:01 +0000 (13:35 +0100)]
Bug 476535 - Difference in allocation size for massif/tests/overloaded-new between clang++/libc++ and g++/libstdc++
In the end all I could do was filter the results.
libc++ and libstdc++ allocate different sizes of stuff for their own usr.
That means that when we get to allocating aligned blocks there is some
slop (up to the alignment size) that gets counted. And the amount of
that slop depends on the prior (internal) allocations.
Paul Floyd [Sun, 5 Nov 2023 09:59:43 +0000 (10:59 +0100)]
massif regtest: make verbose tests work on both 32bit and 64bit
Now alloc fns only have the appropriate new overloads which
means 32bit has unsigned size but 64bit has unsigned long.
Filter the unsigned long to unsigned.
Paul Floyd [Sun, 5 Nov 2023 09:06:56 +0000 (09:06 +0000)]
massif regtest: try adding a new expected for overloaded-new
Added a filter for "pool" that's used on Arch Linux
I'm not too confident that the new expected will work for
all architectures or even versions of libstdc++
Paul Floyd [Fri, 3 Nov 2023 20:46:13 +0000 (21:46 +0100)]
FreeBSD: remove some massif regtest expecteds
These were added mainly to have a cleanish slate with GCC on FreeBSD.
Unfortunately FreeBSD doesn't have dependent packages, so no debuginfo
for libstdc++ and the GCC port libstdc++ is stripped. That means that
the filters for internal GCC allocations don't work.
Since I hardly use GCC any more I'm getting rid of these expecteds.
Mark Wielaard [Thu, 2 Nov 2023 18:50:07 +0000 (19:50 +0100)]
Do not run memcheck/tests/x86-linux/scalar when root
The test expects some syscalls to fail, but when run as root
the user actually has permission to do silly things. So skip
the test if we notice we are root.
Mark Wielaard [Mon, 30 Oct 2023 22:30:06 +0000 (23:30 +0100)]
Disable memcpy overlap check and test on amd64 linux
Almost all newer distros have ifunc based memcpy/memmove glibc
implementation which cause false positives. Disable the overlap check
and test on these systems for now.
Andreas Arnez [Thu, 26 Oct 2023 12:00:52 +0000 (14:00 +0200)]
s390x regtest: Activate 128 bit SIMD tests for s390x in vbit-test
The vbit-test test case is currently configured to exclude s390x from the
platforms that execute the 128 bit SIMD irop tests. Since there's no
known issue with those, they can be activated on s390x as well.