mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 01:51:29 +00:00
Test XML output.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3796
This commit is contained in:
parent
53fb1b9d1f
commit
01383ef160
@ -2,7 +2,7 @@ SUBDIRS = ${VG_ARCH} .
|
||||
DIST_SUBDIRS = ${VG_ARCH_ALL} .
|
||||
|
||||
noinst_SCRIPTS = filter_allocs filter_leak_check_size \
|
||||
filter_stderr filter_stderr_backtrace
|
||||
filter_stderr filter_stderr_backtrace filter_xml
|
||||
|
||||
EXTRA_DIST = $(noinst_SCRIPTS) \
|
||||
addressable.stderr.exp addressable.stdout.exp addressable.vgtest \
|
||||
@ -77,6 +77,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) \
|
||||
metadata.stderr.exp metadata.stdout.exp metadata.vgtest \
|
||||
vgtest_ume.stderr.exp vgtest_ume.vgtest \
|
||||
writev.stderr.exp writev.stderr.exp2 writev.stderr.exp3 writev.vgtest \
|
||||
xml1.stderr.exp xml1.stdout.exp xml1.vgtest \
|
||||
zeropage.stderr.exp zeropage.stderr.exp2 zeropage.vgtest
|
||||
|
||||
check_PROGRAMS = \
|
||||
@ -100,7 +101,7 @@ check_PROGRAMS = \
|
||||
str_tester supp1 supp2 suppfree \
|
||||
trivialleak weirdioctl \
|
||||
mismatches new_override metadata \
|
||||
vgtest_ume \
|
||||
vgtest_ume xml1 \
|
||||
writev zeropage
|
||||
|
||||
|
||||
@ -173,6 +174,7 @@ metadata_SOURCES = metadata.c
|
||||
str_tester_SOURCES = str_tester.c
|
||||
str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow
|
||||
writev_SOURCES = writev.c
|
||||
xml1_SOURCES = xml1.c
|
||||
zeropage_SOURCES = zeropage.c
|
||||
|
||||
# C++ ones
|
||||
|
||||
9
memcheck/tests/filter_xml
Executable file
9
memcheck/tests/filter_xml
Executable file
@ -0,0 +1,9 @@
|
||||
#! /bin/sh
|
||||
|
||||
./filter_stderr |
|
||||
sed "s/<tid>[0-9]*<\/tid>/<tid>...<\/tid>/" |
|
||||
sed "s/<pid>[0-9]*<\/pid>/<pid>...<\/pid>/" |
|
||||
sed "s/<ppid>[0-9]*<\/ppid>/<ppid>...<\/ppid>/" |
|
||||
sed "s/<obj>.*<\/obj>/<obj>...<\/obj>/" |
|
||||
sed "s/<preamble>.*<\/preamble>/<preamble>...<\/preamble>/"
|
||||
|
||||
50
memcheck/tests/xml1.c
Normal file
50
memcheck/tests/xml1.c
Normal file
@ -0,0 +1,50 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
int frame3 ( void )
|
||||
{
|
||||
int *a = malloc(10 * sizeof(int));
|
||||
|
||||
// bad address;
|
||||
int n = a[10];
|
||||
|
||||
// undefined condition
|
||||
if (a[5] == 42) {
|
||||
printf("hello from frame3(). The answer is 42.\n");
|
||||
} else {
|
||||
printf("hello from frame3(). The answer is not 42.\n");
|
||||
}
|
||||
|
||||
// undefined address (careful ..)
|
||||
n = a[ a[0] & 7 ];
|
||||
|
||||
// invalid free, the second time
|
||||
free(a);
|
||||
free(a);
|
||||
|
||||
// more invalid frees
|
||||
free(&n);
|
||||
|
||||
// leak ..
|
||||
a = malloc(99 * sizeof(int));
|
||||
|
||||
// pass garbage to the exit syscall
|
||||
return n;
|
||||
}
|
||||
|
||||
int frame2 ( void )
|
||||
{
|
||||
return frame3() - 1;
|
||||
}
|
||||
|
||||
int frame1 ( void )
|
||||
{
|
||||
return frame2() + 1;
|
||||
}
|
||||
|
||||
int main ( void )
|
||||
{
|
||||
return frame1() - 1;
|
||||
}
|
||||
151
memcheck/tests/xml1.stderr.exp
Normal file
151
memcheck/tests/xml1.stderr.exp
Normal file
@ -0,0 +1,151 @@
|
||||
|
||||
<valgrindoutput>
|
||||
|
||||
<protocolversion>1</protocolversion>
|
||||
|
||||
<preamble>...</preamble>
|
||||
<preamble>...</preamble>
|
||||
<preamble>...</preamble>
|
||||
<preamble>...</preamble>
|
||||
<preamble>...</preamble>
|
||||
<preamble>...</preamble>
|
||||
|
||||
<pid>...</pid>
|
||||
<ppid>...</ppid>
|
||||
<tool>memcheck</tool>
|
||||
|
||||
<argv>
|
||||
<arg>./xml1</arg>
|
||||
</argv>
|
||||
|
||||
<status>RUNNING</status>
|
||||
|
||||
<error>
|
||||
<unique>0x........</unique>
|
||||
<tid>...</tid>
|
||||
<kind>InvalidRead</kind>
|
||||
<what>Invalid read of size 4</what>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame3</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame2</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame1</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>main</fn></frame>
|
||||
</stack>
|
||||
<auxwhat>Address 0x........ is 0 bytes after a block of size 40 alloc'd</auxwhat>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>malloc</fn><file>vg_replace_malloc.c</file><line>220</line></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame3</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame2</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame1</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>main</fn></frame>
|
||||
</stack>
|
||||
</error>
|
||||
|
||||
<error>
|
||||
<unique>0x........</unique>
|
||||
<tid>...</tid>
|
||||
<kind>UninitCondition</kind>
|
||||
<what>Conditional jump or move depends on uninitialised value(s)</what>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame3</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame2</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame1</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>main</fn></frame>
|
||||
</stack>
|
||||
</error>
|
||||
|
||||
<error>
|
||||
<unique>0x........</unique>
|
||||
<tid>...</tid>
|
||||
<kind>UninitValue</kind>
|
||||
<what>Use of uninitialised value of size 4</what>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame3</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame2</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame1</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>main</fn></frame>
|
||||
</stack>
|
||||
</error>
|
||||
|
||||
<error>
|
||||
<unique>0x........</unique>
|
||||
<tid>...</tid>
|
||||
<kind>InvalidFree</kind>
|
||||
<what>Invalid free() / delete / delete[]</what>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>free</fn><file>vg_replace_malloc.c</file><line>306</line></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame3</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame2</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame1</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>main</fn></frame>
|
||||
</stack>
|
||||
<auxwhat>Address 0x........ is 0 bytes inside a block of size 40 free'd</auxwhat>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>free</fn><file>vg_replace_malloc.c</file><line>306</line></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame3</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame2</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame1</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>main</fn></frame>
|
||||
</stack>
|
||||
</error>
|
||||
|
||||
<error>
|
||||
<unique>0x........</unique>
|
||||
<tid>...</tid>
|
||||
<kind>InvalidFree</kind>
|
||||
<what>Invalid free() / delete / delete[]</what>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>free</fn><file>vg_replace_malloc.c</file><line>306</line></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame3</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame2</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame1</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>main</fn></frame>
|
||||
</stack>
|
||||
<auxwhat>Address 0x........ is on thread 1's stack</auxwhat>
|
||||
</error>
|
||||
|
||||
<error>
|
||||
<unique>0x........</unique>
|
||||
<tid>...</tid>
|
||||
<kind>SyscallParam</kind>
|
||||
<what>Syscall param exit_group(exit_code) contains uninitialised byte(s)</what>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>_Exit</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>__libc_start_main</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><file>start.S</file><line>102</line></frame>
|
||||
</stack>
|
||||
</error>
|
||||
|
||||
<errorcounts>
|
||||
<pair><count>1</count><unique>0x........</unique></pair>
|
||||
<pair><count>1</count><unique>0x........</unique></pair>
|
||||
<pair><count>1</count><unique>0x........</unique></pair>
|
||||
<pair><count>1</count><unique>0x........</unique></pair>
|
||||
<pair><count>1</count><unique>0x........</unique></pair>
|
||||
<pair><count>1</count><unique>0x........</unique></pair>
|
||||
</errorcounts>
|
||||
|
||||
<status>FINISHED</status>
|
||||
|
||||
<suppcounts>
|
||||
<pair><count>18</count><name>Ugly strchr error in /lib/ld-2.3.3.so</name></pair>
|
||||
<suppcounts>
|
||||
|
||||
<error>
|
||||
<unique>0x........</unique>
|
||||
<tid>...</tid>
|
||||
<kind>Leak_DefinitelyLost</kind>
|
||||
<what>396 bytes in 1 blocks are definitely lost in loss record 1 of 1</what>
|
||||
<leakedbytes>396</leakedbytes>
|
||||
<leakedblocks>1</leakedblocks>
|
||||
<stack>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>malloc</fn><file>vg_replace_malloc.c</file><line>220</line></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame3</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame2</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>frame1</fn></frame>
|
||||
<frame><ip>0x........</ip><obj>...</obj><fn>main</fn></frame>
|
||||
</stack>
|
||||
</error>
|
||||
|
||||
</valgrindoutput>
|
||||
|
||||
1
memcheck/tests/xml1.stdout.exp
Normal file
1
memcheck/tests/xml1.stdout.exp
Normal file
@ -0,0 +1 @@
|
||||
hello from frame3(). The answer is not 42.
|
||||
3
memcheck/tests/xml1.vgtest
Normal file
3
memcheck/tests/xml1.vgtest
Normal file
@ -0,0 +1,3 @@
|
||||
prog: xml1
|
||||
vgopts: --xml=yes
|
||||
stderr_filter: filter_xml
|
||||
Loading…
x
Reference in New Issue
Block a user