]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
regtest: add vgtest and expected for memcheck duplicate_align_size_errors
authorPaul Floyd <pjfloyd@wanadoo.fr>
Fri, 29 Aug 2025 06:22:17 +0000 (08:22 +0200)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Fri, 29 Aug 2025 10:33:26 +0000 (12:33 +0200)
The cpp file and .gitignore change were done at the same
time as the aligned size checks, but I missed out the expected
vgtest and Makefile.am changes. There were also a couple of unused
variables in the cpp file.

memcheck/tests/Makefile.am
memcheck/tests/duplicate_align_size_errors.cpp
memcheck/tests/duplicate_align_size_errors.stderr.exp [new file with mode: 0644]
memcheck/tests/duplicate_align_size_errors.vgtest [new file with mode: 0644]

index 349cdaf15d937a14207bb2c011cdb1abb614135d..fb3f9ddae065c54d1969fc83d22bab7966dd2dc9 100644 (file)
@@ -162,6 +162,8 @@ EXTRA_DIST = \
        cxx17_aligned_new.stderr.exp cxx17_aligned_new.vgtest \
                cxx17_aligned_new.stderr.exp_32 \
                cxx17_aligned_new.stdout.exp \
+       duplicate_align_size_errors.stderr.exp \
+               duplicate_align_size_errors.vgtest \
        sized_aligned_new_delete_args.stderr.exp \
                sized_aligned_new_delete_args.vgtest \
        sized_aligned_new_delete_misaligned1.stderr.exp \
@@ -613,6 +615,7 @@ endif
 
 if HAVE_ALIGNED_CXX_ALLOC
 check_PROGRAMS += cxx17_aligned_new sized_aligned_new_delete_args \
+       duplicate_align_size_errors \
        new_aligned_delete_default \
        sized_aligned_new_delete_misaligned1 \
        sized_aligned_new_delete_misaligned2 \
@@ -704,6 +707,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 = ${AM_CXXFLAGS} -std=c++17 @FLAG_W_NO_MISMATCHED_NEW_DELETE@
+duplicate_align_size_errors_SOURCES = duplicate_align_size_errors.cpp
+duplicate_align_size_errors_CXXFLAFGS = ${AM_CXXFLAGS} -std=c++17
 new_aligned_delete_default_SOURCES = new_aligned_delete_default.cpp
 new_aligned_delete_default_CXXFLAGS = ${AM_CXXFLAGS} -std=c++17
 sized_aligned_new_delete_args_SOURCES = sized_aligned_new_delete_args.cpp
index 3e0af0d160676baec8587c06e8ccae21e99aef69..58f64a7cde923ca7e96a5a1235a7bd50b08d6eca 100644 (file)
@@ -6,9 +6,7 @@
 
 int main()
 {
-    std::align_val_t misalign(static_cast<std::align_val_t>(63U));
     std::align_val_t zeroalign(static_cast<std::align_val_t>(0U));
-    std::align_val_t onealign(static_cast<std::align_val_t>(1U));
     std::align_val_t align(static_cast<std::align_val_t>(64U));
     std::align_val_t alignx2(static_cast<std::align_val_t>(128U));
     std::size_t size(32);
diff --git a/memcheck/tests/duplicate_align_size_errors.stderr.exp b/memcheck/tests/duplicate_align_size_errors.stderr.exp
new file mode 100644 (file)
index 0000000..4eb84f4
--- /dev/null
@@ -0,0 +1,30 @@
+Invalid alignment value: 0 (should be non-zero and a power of 2)
+   at 0x........: operator new(unsigned long, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...)
+   by 0x........: main (duplicate_align_size_errors.cpp:19)
+
+Invalid alignment value: 0 (should be non-zero and a power of 2)
+   at 0x........: operator delete(void*, std::align_val_t, std::nothrow_t const&) (vg_replace_malloc.c:...)
+   by 0x........: main (duplicate_align_size_errors.cpp:20)
+
+Invalid size value: 100 alignment value: 64 (size should be a multiple of alignment)
+   at 0x........: aligned_alloc (vg_replace_malloc.c:...)
+   by 0x........: main (duplicate_align_size_errors.cpp:25)
+
+aligned_alloc() invalid size value: 0
+   at 0x........: aligned_alloc (vg_replace_malloc.c:...)
+   by 0x........: main (duplicate_align_size_errors.cpp:33)
+
+Mismatched new/delete size value: 33
+   at 0x........: operator delete(void*, unsigned long, std::align_val_t) (vg_replace_malloc.c:...)
+   by 0x........: main (duplicate_align_size_errors.cpp:43)
+ Address 0x........ is 0 bytes inside a block of size 32 alloc'd
+   at 0x........: operator new(unsigned long, std::align_val_t) (vg_replace_malloc.c:...)
+   by 0x........: main (duplicate_align_size_errors.cpp:42)
+
+Mismatched new[]/delete[] alignment alloc value: 64 dealloc value: 128
+   at 0x........: operator delete[](void*, unsigned long, std::align_val_t) (vg_replace_malloc.c:...)
+   by 0x........: main (duplicate_align_size_errors.cpp:48)
+ Address 0x........ is 0 bytes inside a block of size 32 alloc'd
+   at 0x........: operator new[](unsigned long, std::align_val_t) (vg_replace_malloc.c:...)
+   by 0x........: main (duplicate_align_size_errors.cpp:47)
+
diff --git a/memcheck/tests/duplicate_align_size_errors.vgtest b/memcheck/tests/duplicate_align_size_errors.vgtest
new file mode 100644 (file)
index 0000000..4436200
--- /dev/null
@@ -0,0 +1,5 @@
+prog: duplicate_align_size_errors
+prereq: test -e ./duplicate_align_size_errors
+vgopts: --show-mismatched-frees=yes -q
+#stderr_filter: filter_size_t
+