mips32/64: Add extra suppression for mips32/64.

After the thread is detached not all thread memory is freed. This memory (dtv-dynamic thread vector)
can be used by the main thread. There are two types of run-time handling of TLS.
Difference is in the position of memory. It can be either before the thread pointer or
after the thread pointer.
Taken form the document http://www.akkadia.org/drepper/tls.pdf:
"Variant I for the thread-local storage data structures were developed
as part of the IA-64 ABI. Being brand-new, compatibility was no issue. The thread
register for thread t is denoted by tpt. It points to a Thread Control Block (TCB) which
contains at offset zero a pointer to the dynamic thread vector dtvt for the thread.

Variant II has a similar structure. The only difference is that the thread pointer
points to a Thread Control Block of unspecified size and content. Somewhere the TCB
contains a pointer to the dynamic thread vector but it is not specified where. This is
under control of the run-time environment and the pointer must not be assumed to be
directly accessible; compilers are not allowed to emit code which directly access the
dtvt."

Because of this we have two types of error when the program ends:
possibly lost, and definitely lost.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13761
This commit is contained in:
Dejan Jevtic 2013-12-16 13:57:18 +00:00
parent 492a8ae2a2
commit 4247ea70e0
3 changed files with 14 additions and 0 deletions

View File

@ -198,6 +198,8 @@ EXTRA_DIST = \
pointer-trace.stderr.exp \
post-syscall.stderr.exp post-syscall.vgtest \
reach_thread_register.stderr.exp reach_thread_register.vgtest \
reach_thread_register.stderr.exp-mips32 \
reach_thread_register.stderr.exp-mips64 \
realloc1.stderr.exp realloc1.vgtest \
realloc2.stderr.exp realloc2.vgtest \
realloc3.stderr.exp realloc3.vgtest \

View File

@ -0,0 +1,6 @@
Abandoning the helper.
136 bytes in 1 blocks are definitely lost in loss record ... of ...
at 0x........: calloc (vg_replace_malloc.c:...)
...
by 0x........: main (reach_thread_register.c:47)

View File

@ -0,0 +1,6 @@
Abandoning the helper.
272 bytes in 1 blocks are definitely lost in loss record ... of ...
at 0x........: calloc (vg_replace_malloc.c:...)
...
by 0x........: main (reach_thread_register.c:47)