You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
(3) |
2
|
3
|
4
|
|
5
(13) |
6
(2) |
7
(5) |
8
(4) |
9
(3) |
10
(4) |
11
(4) |
|
12
(7) |
13
|
14
(1) |
15
|
16
|
17
(2) |
18
|
|
19
|
20
|
21
(3) |
22
(8) |
23
(7) |
24
(5) |
25
(4) |
|
26
(6) |
27
|
28
(9) |
29
|
30
(4) |
31
(5) |
|
|
From: Paul F. <pa...@so...> - 2023-03-07 22:51:28
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=2fa68c1cc76333360f40ad331c64001e74f4a8ad commit 2fa68c1cc76333360f40ad331c64001e74f4a8ad Author: Paul Floyd <pj...@wa...> Date: Tue Mar 7 23:49:22 2023 +0100 auxchecks: fix building on FreeBSD FreeBSD has a sha256sum that doesn't take long args (--check) GNU sha256sum exists as gsha256sum so add a check for that to configure.ac Diff: --- auxprogs/Makefile.am | 2 +- configure.ac | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/auxprogs/Makefile.am b/auxprogs/Makefile.am index 9831ee3b41..3a9709da6f 100644 --- a/auxprogs/Makefile.am +++ b/auxprogs/Makefile.am @@ -169,7 +169,7 @@ $(GSL_TAR): # We need to autoreconf to make sure to get config.guess, config.sub # and libtool for newer architectures. $(GSL_SRC_DIR)/gsl-patched: $(GSL_TAR) - echo "$(GSL_SHA256_SUM) $(GSL_TAR)" | sha256sum --check - + echo "$(GSL_SHA256_SUM) $(GSL_TAR)" | @SHA256SUM@ --check - (cd $(AUX_CHECK_DIR) && \ tar zxf $(GSL_TAR_NAME) && \ cd $(GSL_DIR_NAME) && \ diff --git a/configure.ac b/configure.ac index 696c967ee1..92fb33c4a5 100755 --- a/configure.ac +++ b/configure.ac @@ -85,6 +85,11 @@ m4_ifndef([AC_PROG_SED], AC_CHECK_PROGS([SED],[gsed sed])])]) AC_PROG_SED +AC_DEFUN([AC_PROG_SHA256SUM], + [AC_ARG_VAR([SHA256SUM]) + AC_CHECK_PROGS([SHA256SUM],[gsha256sum sha256sum])]) +AC_PROG_SHA256SUM + # If no AR variable was specified, look up the name of the archiver. Otherwise # do not touch the AR variable. if test "x$AR" = "x"; then |
|
From: Paul F. <pa...@so...> - 2023-03-07 22:20:02
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=18ca012c0822cdecd167ca1376ce9855194643c1 commit 18ca012c0822cdecd167ca1376ce9855194643c1 Author: Paul Floyd <pj...@wa...> Date: Tue Mar 7 23:19:04 2023 +0100 Fix compile failure on Linux Use SizeT rather than size_t Also make tests quieter with -q Diff: --- coregrind/m_replacemalloc/vg_replace_malloc.c | 12 ++++++------ memcheck/tests/sized_aligned_new_delete_args.stderr.exp | 11 ----------- memcheck/tests/sized_aligned_new_delete_args.stderr.exp_32 | 11 ----------- memcheck/tests/sized_aligned_new_delete_args.vgtest | 1 + 4 files changed, 7 insertions(+), 28 deletions(-) diff --git a/coregrind/m_replacemalloc/vg_replace_malloc.c b/coregrind/m_replacemalloc/vg_replace_malloc.c index e122371202..2b0879cd86 100644 --- a/coregrind/m_replacemalloc/vg_replace_malloc.c +++ b/coregrind/m_replacemalloc/vg_replace_malloc.c @@ -932,8 +932,8 @@ extern int *___errno (void) __attribute__((weak)); #define DELETE_SIZED(soname, fnname, vg_replacement) \ \ - void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t size); \ - void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t size) \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, SizeT size); \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, SizeT size) \ { \ DO_INIT; \ TRIGGER_MEMCHECK_ERROR_IF_UNDEFINED((UWord)size); \ @@ -1008,8 +1008,8 @@ extern int *___errno (void) __attribute__((weak)); #define DELETE_ALIGNED(soname, fnname, vg_replacement) \ \ - void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t alignment); \ - void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t alignment) \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, SizeT alignment); \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, SizeT alignment) \ { \ DO_INIT; \ TRIGGER_MEMCHECK_ERROR_IF_UNDEFINED((UWord)alignment); \ @@ -1021,8 +1021,8 @@ extern int *___errno (void) __attribute__((weak)); #define DELETE_SIZED_ALIGNED(soname, fnname, vg_replacement) \ \ - void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t size, size_t alignment); \ - void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t size, size_t alignment) \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, SizeT size, SizeT alignment); \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, SizeT size, SizeT alignment) \ { \ DO_INIT; \ TRIGGER_MEMCHECK_ERROR_IF_UNDEFINED((UWord)size); \ diff --git a/memcheck/tests/sized_aligned_new_delete_args.stderr.exp b/memcheck/tests/sized_aligned_new_delete_args.stderr.exp index c086f1d266..a4c30dc4bd 100644 --- a/memcheck/tests/sized_aligned_new_delete_args.stderr.exp +++ b/memcheck/tests/sized_aligned_new_delete_args.stderr.exp @@ -1,4 +1,3 @@ - Conditional jump or move depends on uninitialised value(s) at 0x........: operator new(unsigned long, std::align_val_t) (vg_replace_malloc.c:...) by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) @@ -71,13 +70,3 @@ Conditional jump or move depends on uninitialised value(s) at 0x........: operator delete[](void*, unsigned long, std::align_val_t) (vg_replace_malloc.c:...) by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) - -HEAP SUMMARY: - in use at exit: 0 bytes in 0 blocks - total heap usage: 8 allocs, 8 frees, 128 bytes allocated - -For a detailed leak analysis, rerun with: --leak-check=full - -Use --track-origins=yes to see where uninitialised values come from -For lists of detected and suppressed errors, rerun with: -s -ERROR SUMMARY: 18 errors from 18 contexts (suppressed: 0 from 0) diff --git a/memcheck/tests/sized_aligned_new_delete_args.stderr.exp_32 b/memcheck/tests/sized_aligned_new_delete_args.stderr.exp_32 index dfa83679ec..9a23649683 100644 --- a/memcheck/tests/sized_aligned_new_delete_args.stderr.exp_32 +++ b/memcheck/tests/sized_aligned_new_delete_args.stderr.exp_32 @@ -1,4 +1,3 @@ - Conditional jump or move depends on uninitialised value(s) at 0x........: operator new(unsigned int, std::align_val_t) (vg_replace_malloc.c:...) by 0x........: main (sized_aligned_new_delete_args.cpp:16) @@ -71,13 +70,3 @@ Conditional jump or move depends on uninitialised value(s) at 0x........: operator delete[](void*, unsigned int, std::align_val_t) (vg_replace_malloc.c:...) by 0x........: main (sized_aligned_new_delete_args.cpp:40) - -HEAP SUMMARY: - in use at exit: 0 bytes in 0 blocks - total heap usage: 8 allocs, 8 frees, 128 bytes allocated - -For a detailed leak analysis, rerun with: --leak-check=full - -Use --track-origins=yes to see where uninitialised values come from -For lists of detected and suppressed errors, rerun with: -s -ERROR SUMMARY: 18 errors from 18 contexts (suppressed: 0 from 0) diff --git a/memcheck/tests/sized_aligned_new_delete_args.vgtest b/memcheck/tests/sized_aligned_new_delete_args.vgtest index 8df8db4df2..029fd4b661 100644 --- a/memcheck/tests/sized_aligned_new_delete_args.vgtest +++ b/memcheck/tests/sized_aligned_new_delete_args.vgtest @@ -1,2 +1,3 @@ prog: sized_aligned_new_delete_args prereq: test -e ./sized_aligned_new_delete_args +vgopts: -q |
|
From: Paul F. <pa...@so...> - 2023-03-07 21:59:57
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=114c528dab93036588069688667d03d1f78d9bf0 commit 114c528dab93036588069688667d03d1f78d9bf0 Author: Paul Floyd <pj...@wa...> Date: Tue Mar 7 22:58:57 2023 +0100 Add 32bit version of sized_aligned_new_delete_args expected Asl add some parens to shut up clangd Diff: --- coregrind/m_replacemalloc/vg_replace_malloc.c | 2 +- memcheck/tests/Makefile.am | 1 + .../sized_aligned_new_delete_args.stderr.exp_32 | 83 ++++++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) diff --git a/coregrind/m_replacemalloc/vg_replace_malloc.c b/coregrind/m_replacemalloc/vg_replace_malloc.c index e07ab50504..e122371202 100644 --- a/coregrind/m_replacemalloc/vg_replace_malloc.c +++ b/coregrind/m_replacemalloc/vg_replace_malloc.c @@ -68,7 +68,7 @@ #include "pub_core_redir.h" // for VG_REPLACE_FUNCTION_* #include "pub_core_replacemalloc.h" -#define VG_ALIGN_ROUNDUP(size, alignment) ((size + alignment - 1) & ~(alignment - 1)) +#define VG_ALIGN_ROUNDUP(size, alignment) (((size) + (alignment) - 1) & ~((alignment) - 1)) /* Assignment of behavioural equivalence class tags: 1NNNP is intended to be reserved for the Valgrind core. Current usage: diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index dc0f39aa65..e6afff0d00 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -141,6 +141,7 @@ EXTRA_DIST = \ cxx17_aligned_new.stdout.exp \ sized_aligned_new_delete_args.stderr.exp \ sized_aligned_new_delete_args.vgtest \ + sized_aligned_new_delete_args.stderr.exp_32 \ deep-backtrace.vgtest deep-backtrace.stderr.exp \ demangle.stderr.exp demangle.vgtest \ big_debuginfo_symbol.stderr.exp big_debuginfo_symbol.vgtest \ diff --git a/memcheck/tests/sized_aligned_new_delete_args.stderr.exp_32 b/memcheck/tests/sized_aligned_new_delete_args.stderr.exp_32 new file mode 100644 index 0000000000..dfa83679ec --- /dev/null +++ b/memcheck/tests/sized_aligned_new_delete_args.stderr.exp_32 @@ -0,0 +1,83 @@ + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new(unsigned int, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:16) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new(unsigned int, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:16) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete(void*, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:17) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new[](unsigned int, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:19) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new[](unsigned int, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:19) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:20) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new(unsigned int, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:24) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new(unsigned int, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:24) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete(void*, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:25) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new[](unsigned int, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:27) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new[](unsigned int, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:27) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:28) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: ...operator delete... (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:31) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, unsigned int) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:34) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete(void*, unsigned int, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:37) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete(void*, unsigned int, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:37) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, unsigned int, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:40) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, unsigned int, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (sized_aligned_new_delete_args.cpp:40) + + +HEAP SUMMARY: + in use at exit: 0 bytes in 0 blocks + total heap usage: 8 allocs, 8 frees, 128 bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +Use --track-origins=yes to see where uninitialised values come from +For lists of detected and suppressed errors, rerun with: -s +ERROR SUMMARY: 18 errors from 18 contexts (suppressed: 0 from 0) |
|
From: Paul F. <pa...@so...> - 2023-03-07 21:48:15
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=ceee3e8922b734f9d80166d88611c2d14ec9f06e commit ceee3e8922b734f9d80166d88611c2d14ec9f06e Author: Paul Floyd <pj...@wa...> Date: Tue Mar 7 22:47:19 2023 +0100 Add checks to all new / delete overload arguments Diff: --- .gitignore | 1 + coregrind/m_replacemalloc/vg_replace_malloc.c | 254 ++++++++++++--------- memcheck/tests/Makefile.am | 6 +- memcheck/tests/sized_aligned_new_delete_args.cpp | 42 ++++ .../tests/sized_aligned_new_delete_args.stderr.exp | 83 +++++++ .../tests/sized_aligned_new_delete_args.vgtest | 2 + 6 files changed, 280 insertions(+), 108 deletions(-) diff --git a/.gitignore b/.gitignore index 67e6b545fe..a4c7b510ba 100644 --- a/.gitignore +++ b/.gitignore @@ -961,6 +961,7 @@ /memcheck/tests/sendmsg /memcheck/tests/sh-mem /memcheck/tests/sh-mem-random +/memcheck/tests/sized_aligned_new_delete_args /memcheck/tests/sigaltstack /memcheck/tests/sigkill /memcheck/tests/signal2 diff --git a/coregrind/m_replacemalloc/vg_replace_malloc.c b/coregrind/m_replacemalloc/vg_replace_malloc.c index 6addfe80f9..e07ab50504 100644 --- a/coregrind/m_replacemalloc/vg_replace_malloc.c +++ b/coregrind/m_replacemalloc/vg_replace_malloc.c @@ -930,6 +930,19 @@ extern int *___errno (void) __attribute__((weak)); /*---------------------- delete ----------------------*/ +#define DELETE_SIZED(soname, fnname, vg_replacement) \ + \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t size); \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t size) \ + { \ + DO_INIT; \ + TRIGGER_MEMCHECK_ERROR_IF_UNDEFINED((UWord)size); \ + MALLOC_TRACE(#fnname "(%p)\n", p ); \ + if (p == NULL) \ + return; \ + (void)VALGRIND_NON_SIMD_CALL1( info.tl_##vg_replacement, p ); \ + } + #if defined(VGO_linux) // operator delete(void*), not mangled (for gcc 2.96) FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_delete, __builtin_delete ); @@ -941,16 +954,16 @@ extern int *___errno (void) __attribute__((weak)); FREE(SO_SYN_MALLOC, _ZdlPv, __builtin_delete ); // operator delete(void*, unsigned int), C++14, GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvj, __builtin_delete ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvj, __builtin_delete ); - FREE(VG_Z_LIBC_SONAME, _ZdlPvj, __builtin_delete ); - FREE(SO_SYN_MALLOC, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBCXX_SONAME, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBC_SONAME, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdlPvj, __builtin_delete ); // operator delete(void*, unsigned long), C++14, GNU mangling #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvm, __builtin_delete ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvm, __builtin_delete ); - FREE(VG_Z_LIBC_SONAME, _ZdlPvm, __builtin_delete ); - FREE(SO_SYN_MALLOC, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBCXX_SONAME, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBC_SONAME, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdlPvm, __builtin_delete ); #endif @@ -960,13 +973,13 @@ extern int *___errno (void) __attribute__((weak)); FREE(SO_SYN_MALLOC, _ZdlPv, __builtin_delete ); // operator delete(void*, unsigned long), C++14, GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvj, __builtin_delete ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvj, __builtin_delete ); - FREE(SO_SYN_MALLOC, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBCXX_SONAME, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdlPvj, __builtin_delete ); #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvm, __builtin_delete ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvm, __builtin_delete ); - FREE(SO_SYN_MALLOC, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBCXX_SONAME, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdlPvm, __builtin_delete ); #endif #elif defined(VGO_darwin) @@ -981,11 +994,11 @@ extern int *___errno (void) __attribute__((weak)); // operator delete(void*, unsigned long), C++14, GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvj, __builtin_delete ); - FREE(SO_SYN_MALLOC, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvj, __builtin_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdlPvj, __builtin_delete ); #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvm, __builtin_delete ); - FREE(SO_SYN_MALLOC, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvm, __builtin_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdlPvm, __builtin_delete ); #endif @@ -993,43 +1006,70 @@ extern int *___errno (void) __attribute__((weak)); /*------------------- C++17 delete aligned -------------------*/ +#define DELETE_ALIGNED(soname, fnname, vg_replacement) \ + \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t alignment); \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t alignment) \ + { \ + DO_INIT; \ + TRIGGER_MEMCHECK_ERROR_IF_UNDEFINED((UWord)alignment); \ + MALLOC_TRACE(#fnname "(%p)\n", p ); \ + if (p == NULL) \ + return; \ + (void)VALGRIND_NON_SIMD_CALL1( info.tl_##vg_replacement, p ); \ + } + +#define DELETE_SIZED_ALIGNED(soname, fnname, vg_replacement) \ + \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t size, size_t alignment); \ + void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p, size_t size, size_t alignment) \ + { \ + DO_INIT; \ + TRIGGER_MEMCHECK_ERROR_IF_UNDEFINED((UWord)size); \ + TRIGGER_MEMCHECK_ERROR_IF_UNDEFINED((UWord)alignment); \ + MALLOC_TRACE(#fnname "(%p)\n", p ); \ + if (p == NULL) \ + return; \ + (void)VALGRIND_NON_SIMD_CALL1( info.tl_##vg_replacement, p ); \ + } + #if defined(VGO_linux) // operator delete(void*, std::align_val_t), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBC_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBC_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); FREE(SO_SYN_MALLOC, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); // operator delete(void*, unsigned int, std::align_val_t), GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBC_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBC_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); // operator delete(void*, unsigned long, std::align_val_t), GNU mangling #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBC_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBC_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); #endif #elif defined(VGO_freebsd) // operator delete(void*, std::align_val_t), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); // operator delete(void*, unsigned int, std::align_val_t), GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); // operator delete(void*, unsigned long, std::align_val_t), GNU mangling #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); #endif #elif defined(VGO_darwin) @@ -1037,17 +1077,17 @@ extern int *___errno (void) __attribute__((weak)); #elif defined(VGO_solaris) // operator delete(void*, std::align_val_t) - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdlPvSt11align_val_t, __builtin_delete_aligned ); // operator delete(void*, unsigned int, std::align_val_t) #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdlPvjSt11align_val_t, __builtin_delete_aligned ); // operator delete(void*, unsigned long, std::align_val_t) #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdlPvmSt11align_val_t, __builtin_delete_aligned ); #endif #endif @@ -1083,25 +1123,25 @@ extern int *___errno (void) __attribute__((weak)); #if defined(VGO_linux) // operator delete(void*, std::align_val_t, std::nothrow_t const&), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBC_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBC_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); // no sized version of this operator #elif defined(VGO_freebsd) // operator delete(void*, std::align_val_t, std::nothrow_t const&), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); #elif defined(VGO_darwin) #elif defined(VGO_solaris) // operator delete(void*, std::align_val_t, std::nothrow_t const&), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdlPvSt11align_val_tRKSt9nothrow_t, __builtin_delete_aligned ); // no sized version of this operator @@ -1122,16 +1162,16 @@ extern int *___errno (void) __attribute__((weak)); // operator delete[](void*, unsigned long), C++14, GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); - FREE(VG_Z_LIBC_SONAME, _ZdaPvj, __builtin_vec_delete ); - FREE(SO_SYN_MALLOC, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBC_SONAME, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdaPvj, __builtin_vec_delete ); #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); - FREE(VG_Z_LIBC_SONAME, _ZdaPvm, __builtin_vec_delete ); - FREE(SO_SYN_MALLOC, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBC_SONAME, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdaPvm, __builtin_vec_delete ); #endif #elif defined(VGO_freebsd) @@ -1141,13 +1181,13 @@ extern int *___errno (void) __attribute__((weak)); FREE(SO_SYN_MALLOC, _ZdaPv, __builtin_vec_delete ); // operator delete[](void*, unsigned long), C++14, GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); - FREE(SO_SYN_MALLOC, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdaPvj, __builtin_vec_delete ); #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); - FREE(SO_SYN_MALLOC, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdaPvm, __builtin_vec_delete ); #endif #elif defined(VGO_darwin) @@ -1165,12 +1205,12 @@ extern int *___errno (void) __attribute__((weak)); // operator delete[](void*, unsigned int), C++14, GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); - FREE(SO_SYN_MALLOC, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvj, __builtin_vec_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdaPvj, __builtin_vec_delete ); // operator delete[](void*, unsigned long), C++14, GNU mangling #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); - FREE(SO_SYN_MALLOC, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvm, __builtin_vec_delete ); + DELETE_SIZED(SO_SYN_MALLOC, _ZdaPvm, __builtin_vec_delete ); #endif #endif @@ -1179,58 +1219,58 @@ extern int *___errno (void) __attribute__((weak)); #if defined(VGO_linux) // operator delete[](void*, std::align_val_t), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBC_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBC_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); // operator delete[](void*, unsigned int, std::align_val_t), GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBC_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBC_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); // operator delete[](void*, unsigned long, std::align_val_t), GNU mangling #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBC_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBC_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); #endif #elif defined(VGO_freebsd) // operator delete[](void*, std::align_val_t), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); // operator delete[](void*, unsigned int, std::align_val_t), GNU mangling #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); // operator delete[](void*, unsigned long, std::align_val_t), GNU mangling #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); #endif #elif defined(VGO_darwin) #elif defined(VGO_solaris) // operator delete[](void*, std::align_val_t), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdaPvSt11align_val_t, __builtin_vec_delete_aligned ); // operator delete[](void*, unsigned int, std::align_val_t) #if __SIZEOF_SIZE_T__ == 4 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdaPvjSt11align_val_t, __builtin_vec_delete_aligned ); // operator delete[](void*, unsigned long), GNU mangling #elif __SIZEOF_SIZE_T__ == 8 - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); + DELETE_SIZED_ALIGNED(SO_SYN_MALLOC, _ZdaPvmSt11align_val_t, __builtin_vec_delete_aligned ); #endif #endif @@ -1266,25 +1306,25 @@ extern int *___errno (void) __attribute__((weak)); #if defined(VGO_linux) // operator delete[](void*, std::align_val_t, std::nothrow_t const&), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBC_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBC_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); // no sized version of this operator #elif defined(VGO_freebsd) // operator delete[](void*, std::align_val_t, std::nothrow_t const&), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); - FREE(VG_Z_LIBCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); #elif defined(VGO_darwin) #elif defined(VGO_solaris) // operator delete[](void*, std::align_val_t, std::nothrow_t const&), GNU mangling - FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); - FREE(SO_SYN_MALLOC, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(VG_Z_LIBSTDCXX_SONAME, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); + DELETE_ALIGNED(SO_SYN_MALLOC, _ZdaPvSt11align_val_tRKSt9nothrow_t, __builtin_vec_delete_aligned ); // no sized version of this operator diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 6c1c20185a..dc0f39aa65 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -139,6 +139,8 @@ EXTRA_DIST = \ cxx17_aligned_new.stderr.exp cxx17_aligned_new.vgtest \ cxx17_aligned_new.stderr.exp_32 \ cxx17_aligned_new.stdout.exp \ + sized_aligned_new_delete_args.stderr.exp \ + sized_aligned_new_delete_args.vgtest \ deep-backtrace.vgtest deep-backtrace.stderr.exp \ demangle.stderr.exp demangle.vgtest \ big_debuginfo_symbol.stderr.exp big_debuginfo_symbol.vgtest \ @@ -485,7 +487,7 @@ cdebug_zlib_gnu_CFLAGS = $(AM_CFLAGS) -g -gz=zlib-gnu @FLAG_W_NO_UNINITIALIZED@ endif if HAVE_ALIGNED_CXX_ALLOC -check_PROGRAMS += cxx17_aligned_new +check_PROGRAMS += cxx17_aligned_new sized_aligned_new_delete_args endif if HAVE_PTHREAD_BARRIER @@ -546,6 +548,8 @@ bug340392_CFLAGS = $(AM_CFLAGS) -O3 @FLAG_W_NO_MAYBE_UNINITIALIZED@ if HAVE_ALIGNED_CXX_ALLOC cxx17_aligned_new_SOURCES = cxx17_aligned_new.cpp cxx17_aligned_new_CXXFLAGS = -std=c++17 @FLAG_W_NO_MISMATCHED_NEW_DELETE@ +sized_aligned_new_delete_args_SOURCES = sized_aligned_new_delete_args.cpp +sized_aligned_new_delete_args_CXXFLAGS = -std=c++17 endif demangle_SOURCES = demangle.cpp diff --git a/memcheck/tests/sized_aligned_new_delete_args.cpp b/memcheck/tests/sized_aligned_new_delete_args.cpp new file mode 100644 index 0000000000..a8d5024ac5 --- /dev/null +++ b/memcheck/tests/sized_aligned_new_delete_args.cpp @@ -0,0 +1,42 @@ +#include <cstdlib> +#include <new> +#include <iostream> +#include "../memcheck.h" + +int main() { + std::align_val_t align(static_cast<std::align_val_t>(64U)); + std::align_val_t uninitalign(static_cast<std::align_val_t>(64U)); + size_t uninitsize(16); + size_t size(16); + std::nothrow_t tag; + void *mem; + VALGRIND_MAKE_MEM_UNDEFINED(&uninitsize, sizeof(uninitsize)); + VALGRIND_MAKE_MEM_UNDEFINED(&uninitalign, sizeof(uninitalign)); + + mem = operator new(uninitsize, uninitalign); + operator delete(mem, uninitalign); + + mem = operator new[](uninitsize, uninitalign); + operator delete[](mem, uninitalign); + + // doesn't matter that tag is uninit + // don't want to see an error + mem = operator new(uninitsize, uninitalign, tag); + operator delete(mem, uninitalign, tag); + + mem = operator new[](uninitsize, uninitalign, tag); + operator delete[](mem, uninitalign, tag); + + mem = operator new(size); + operator delete(mem, uninitsize); + + mem = operator new[](size); + operator delete[](mem, uninitsize); + + mem = operator new(size, align); + operator delete(mem, uninitsize, uninitalign); + + mem = operator new[](size, align); + operator delete[](mem, uninitsize, uninitalign); +} + diff --git a/memcheck/tests/sized_aligned_new_delete_args.stderr.exp b/memcheck/tests/sized_aligned_new_delete_args.stderr.exp new file mode 100644 index 0000000000..c086f1d266 --- /dev/null +++ b/memcheck/tests/sized_aligned_new_delete_args.stderr.exp @@ -0,0 +1,83 @@ + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new(unsigned long, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new(unsigned long, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete(void*, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new[](unsigned long, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new[](unsigned long, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new(unsigned long, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new(unsigned long, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete(void*, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new[](unsigned long, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator new[](unsigned long, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: ...operator delete... (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, unsigned long) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete(void*, unsigned long, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete(void*, unsigned long, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, unsigned long, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + +Conditional jump or move depends on uninitialised value(s) + at 0x........: operator delete[](void*, unsigned long, std::align_val_t) (vg_replace_malloc.c:...) + by 0x........: main (in /usr/home/paulf/scratch/valgrind/memcheck/tests/sized_aligned_new_delete_args) + + +HEAP SUMMARY: + in use at exit: 0 bytes in 0 blocks + total heap usage: 8 allocs, 8 frees, 128 bytes allocated + +For a detailed leak analysis, rerun with: --leak-check=full + +Use --track-origins=yes to see where uninitialised values come from +For lists of detected and suppressed errors, rerun with: -s +ERROR SUMMARY: 18 errors from 18 contexts (suppressed: 0 from 0) diff --git a/memcheck/tests/sized_aligned_new_delete_args.vgtest b/memcheck/tests/sized_aligned_new_delete_args.vgtest new file mode 100644 index 0000000000..8df8db4df2 --- /dev/null +++ b/memcheck/tests/sized_aligned_new_delete_args.vgtest @@ -0,0 +1,2 @@ +prog: sized_aligned_new_delete_args +prereq: test -e ./sized_aligned_new_delete_args |
|
From: Paul F. <pa...@so...> - 2023-03-07 07:04:26
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=2715ad4ab5bc0be1e6a3e87aae29cfab90e01668 commit 2715ad4ab5bc0be1e6a3e87aae29cfab90e01668 Author: Paul Floyd <pj...@wa...> Date: Tue Mar 7 08:00:03 2023 +0100 auxchecks: use outer configure make and compilers On FreeBSD the hard coded 'make' will switch to BSD make rather than the outer configure make - GNU make. Similarly for systems with gcc and clang installed then an outer 'configure CC=clang' and then make auxchecks doesn't propagate the CC to the inner gsl configure, which will use gcc. Still need some work on the tarball checksum calculation. Diff: --- auxprogs/Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/auxprogs/Makefile.am b/auxprogs/Makefile.am index c05f82825e..9831ee3b41 100644 --- a/auxprogs/Makefile.am +++ b/auxprogs/Makefile.am @@ -183,9 +183,9 @@ $(GSL_SRC_DIR)/gsl-patched: $(GSL_TAR) $(GSL_BUILD_DIR)/gsl-build: $(GSL_SRC_DIR)/gsl-patched mkdir -p $(GSL_BUILD_DIR) (cd $(GSL_BUILD_DIR) && \ - $(GSL_SRC_DIR)/configure CFLAGS="$(GSL_CFLAGS)" && \ - make -j $(nproc) && \ - make check -k || true) + $(GSL_SRC_DIR)/configure CC="${CC}" CXX="${CXX}" CFLAGS="$(GSL_CFLAGS)" && \ + ${MAKE} -j $(nproc) && \ + ${MAKE} check -k || true) touch $@ # We hope all tests PASS (so don't produce output except for the test names). |