As per tests/vg_regtest:
Expected stdout (filtered) is kept in <test>.stdout.exp* (can be more
than one expected output). It can be missing if it would be empty.
One predated correct redirection of the C++ library operator new
One has a few line number changes plus I removed an assert that is firing
(asserts firing in tests is never a good thing). And the last one is just
line number changes.
There was alrwady a stderr filter for dsymutil, but only for DRD.
So I moved that to tests/filter_stderr_basic.in
I added single quotes around $dir in tests/vg_regtest.in for
arch_test and os_test. That now prevents directory names containing
spaces from being seen as more than one argument.
- Update COPYING and VEX/LICENSE.GPL to version 3.
- Update README, NEWS, docs/manual license and contributing text.
- Update file headers to say either version 3 of the License,
or (at your option) any later version.
- Leave tests and perf file headers as is, unless the code is derived
from Valgrind/VEX.
- Leave valgrind.h, cachegrind.h, callgrind.h, drd.h, helgrind.h,
memcheck.h and dhat.h Hybrid-BSD licensed.
The following files do not need to be executable:
- configure.ac
- Makefile*am
- *.in
The following files lack execute permission:
- tests/platform_test
- tests/vg_regtest
- perf/vg_perf
So from now on you can just run tests/vg_regtest and perf/vg_perf
without the perl prefix.
Docs changed accordingly.
Mostly minor expected/filter changes.
Helgrind did detect a race condition in a Valgrind file static
variable. Teh DRD dlopen test needs to be linked with the thread library.
In a VirtualBox environment I'm getting 4 hanging testcases
(3 in gdbserver_tests and none/freebsd/bug452274).
Since C23 thread_local is a keyword (thread storage duration).
swapcontext.c:23:16: error: expected '{' before 'thread_local'
23 | typedef struct thread_local {
| ^~~~~~~~~~~~
swapcontext.c:23:16: warning: 'thread_local' is not at beginning of declaration [-Wold-style-declaration]
swapcontext.c:23:16: error: 'thread_local' used with 'typedef'
swapcontext.c:26:3: warning: data definition has no type or storage class
26 | } thread_local_t;
| ^~~~~~~~~~~~~~
Use a loop of 1ms usleeps rather than a single 1s usleep.
This is usually more releable in ensuring that there's a context switch and that signals
get handled in the order that we want.
glibc uses a atomic var to set whether the kernel supports
PR_SET_VMA_ANON_NAME. This looks like a conflicting access to drd.
Suppress it for this testcase.
Bump version to 3.22.0.GIT
The testcase was posted on the freebsd-hackers mailing list.
I had time to get suppressions for FreeBSD into 3.21 but
ran out of time for the test and Linux suppressions.
I did take a look at how thread sanitizer handles this.
Basically it intercepts the call, turns off checking,
calls the resl function then turns checking back on.
I don't see many other similar examples. Might be worth
looking at dlopen and atexit.
Adds a new warning to memcheck when realloc is used with a size of 0.
For a long time this has been "implementation defined" and so
non-portable. With C23 it will become UB.
Also adds a switch to turn off the error generation and a
second switch to select between the most common
"implementation" behaviours. The defaults for this second
switch are baked in at build time.
GCC on RHEL 7.6 ARM complains about the empty init list.
I also noticed that we are using the SA_NOTIFY form of sigaction
(with that union member and handler prototype) but not setting the
SA_NOTIFY flag. Seems harmless in this case as we don't use
the siginfo or context.