]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add testcase for C++14 sized delete
authorPaul Floyd <pjfloyd@wanadoo.fr>
Mon, 9 Nov 2020 08:37:17 +0000 (09:37 +0100)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Mon, 9 Nov 2020 08:37:17 +0000 (09:37 +0100)
.gitignore
memcheck/tests/Makefile.am
memcheck/tests/filter_sized_delete [new file with mode: 0755]
memcheck/tests/sized_delete [new file with mode: 0755]
memcheck/tests/sized_delete.cpp [new file with mode: 0644]
memcheck/tests/sized_delete.stderr.exp [new file with mode: 0644]
memcheck/tests/sized_delete.stderr.exp-x86 [new file with mode: 0644]
memcheck/tests/sized_delete.vgtest [new file with mode: 0644]

index 18067259c12fc8d9a5ca52070eb1fd1bf68e841f..47e53a9542f4bfed0bd1f40909ab16046c16280a 100644 (file)
 /memcheck/tests/sigkill
 /memcheck/tests/signal2
 /memcheck/tests/sigprocmask
+/memcheck/tests/sized_delete
 /memcheck/tests/stack_changes
 /memcheck/tests/stack_switch
 /memcheck/tests/static_malloc
index 84b2a81cea5d3ad8679d122c1bf70c65bd237078..28f26bbebe73189ff7fc9861b3ff311a3a99a184 100644 (file)
@@ -69,7 +69,8 @@ dist_noinst_SCRIPTS = \
        filter_strchr \
        filter_varinfo3 \
        filter_memcheck \
-       filter_overlaperror
+       filter_overlaperror \
+       filter_sized_delete
 
 noinst_HEADERS = leak.h
 
@@ -267,6 +268,7 @@ EXTRA_DIST = \
            sigkill.stderr.exp-glibc-2.28 sigkill.vgtest \
        signal2.stderr.exp signal2.stdout.exp signal2.vgtest \
        sigprocmask.stderr.exp sigprocmask.stderr.exp2 sigprocmask.vgtest \
+       sized_delete.stderr.exp sized_delete.stderr.exp-x86 sized_delete.vgtest \
        static_malloc.stderr.exp static_malloc.vgtest \
        stpncpy.vgtest stpncpy.stderr.exp stpncpy.stdout.exp \
        strchr.stderr.exp strchr.stderr.exp2 strchr.stderr.exp3 strchr.vgtest \
@@ -397,6 +399,7 @@ check_PROGRAMS = \
        sendmsg \
        sh-mem sh-mem-random \
        sigaltstack signal2 sigprocmask static_malloc sigkill \
+       sized_delete \
        strchr \
        str_tester \
        supp_unknown supp1 supp2 suppfree \
@@ -549,6 +552,9 @@ sendmsg_CFLAGS              += -D_XOPEN_SOURCE=600
 sendmsg_LDADD          = -lsocket -lnsl
 endif
 
+sized_delete_SOURCES   = sized_delete.cpp
+sized_delete_CXXFLAGS  = $(AM_CXXFLAGS) -fsized-deallocation
+
 str_tester_CFLAGS      = $(AM_CFLAGS) -Wno-shadow \
                          @FLAG_W_NO_MEMSET_TRANSPOSED_ARGS@
 
diff --git a/memcheck/tests/filter_sized_delete b/memcheck/tests/filter_sized_delete
new file mode 100755 (executable)
index 0000000..54dea76
--- /dev/null
@@ -0,0 +1,4 @@
+#! /bin/sh
+
+./filter_stderr "$@" |
+grep -v free | grep -v malloc
diff --git a/memcheck/tests/sized_delete b/memcheck/tests/sized_delete
new file mode 100755 (executable)
index 0000000..a9f716d
Binary files /dev/null and b/memcheck/tests/sized_delete differ
diff --git a/memcheck/tests/sized_delete.cpp b/memcheck/tests/sized_delete.cpp
new file mode 100644 (file)
index 0000000..24379d1
--- /dev/null
@@ -0,0 +1,12 @@
+class MyClass {
+    int i;
+
+};
+
+int main() {
+     MyClass* myClass = new MyClass();
+    delete myClass;
+    MyClass* myClass5 = new MyClass[5];
+    operator delete[](myClass5, 5U*sizeof(MyClass));
+    //delete [] myClass5;
+}
diff --git a/memcheck/tests/sized_delete.stderr.exp b/memcheck/tests/sized_delete.stderr.exp
new file mode 100644 (file)
index 0000000..91bd71c
--- /dev/null
@@ -0,0 +1,4 @@
+_Znwm(4) = 0x........
+_ZdlPvm(0x........)
+_Znam(20) = 0x........
+_ZdaPvm(0x........)
diff --git a/memcheck/tests/sized_delete.stderr.exp-x86 b/memcheck/tests/sized_delete.stderr.exp-x86
new file mode 100644 (file)
index 0000000..1f6e9f9
--- /dev/null
@@ -0,0 +1,4 @@
+_Znwj(4) = 0x........
+_ZdlPvj(0x........)
+_Znaj(20) = 0x........
+_ZdaPvj(0x........)
diff --git a/memcheck/tests/sized_delete.vgtest b/memcheck/tests/sized_delete.vgtest
new file mode 100644 (file)
index 0000000..9f483e0
--- /dev/null
@@ -0,0 +1,4 @@
+prog: sized_delete
+prereq: test -e sized_delete
+vgopts: -q "--trace-malloc=yes" --show-mismatched-frees=yes 
+stderr_filter: filter_sized_delete