From dce474600fc193325fe889b0a6975012fd356dfe Mon Sep 17 00:00:00 2001 From: Paul Floyd Date: Fri, 29 Aug 2025 08:22:17 +0200 Subject: [PATCH] regtest: add vgtest and expected for memcheck duplicate_align_size_errors 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 | 5 ++++ .../tests/duplicate_align_size_errors.cpp | 2 -- .../duplicate_align_size_errors.stderr.exp | 30 +++++++++++++++++++ .../tests/duplicate_align_size_errors.vgtest | 5 ++++ 4 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 memcheck/tests/duplicate_align_size_errors.stderr.exp create mode 100644 memcheck/tests/duplicate_align_size_errors.vgtest diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 349cdaf15d..fb3f9ddae0 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -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 diff --git a/memcheck/tests/duplicate_align_size_errors.cpp b/memcheck/tests/duplicate_align_size_errors.cpp index 3e0af0d160..58f64a7cde 100644 --- a/memcheck/tests/duplicate_align_size_errors.cpp +++ b/memcheck/tests/duplicate_align_size_errors.cpp @@ -6,9 +6,7 @@ int main() { - std::align_val_t misalign(static_cast(63U)); std::align_val_t zeroalign(static_cast(0U)); - std::align_val_t onealign(static_cast(1U)); std::align_val_t align(static_cast(64U)); std::align_val_t alignx2(static_cast(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 index 0000000000..4eb84f4339 --- /dev/null +++ b/memcheck/tests/duplicate_align_size_errors.stderr.exp @@ -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 index 0000000000..44362003de --- /dev/null +++ b/memcheck/tests/duplicate_align_size_errors.vgtest @@ -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 + -- 2.47.3