You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
1
(33) |
2
(15) |
3
(20) |
4
(22) |
5
(13) |
|
6
(12) |
7
(32) |
8
(17) |
9
(31) |
10
(21) |
11
(7) |
12
(13) |
|
13
(13) |
14
(12) |
15
(10) |
16
(8) |
17
(7) |
18
(28) |
19
(5) |
|
20
(5) |
21
(7) |
22
(11) |
23
(7) |
24
(13) |
25
(7) |
26
(7) |
|
27
(7) |
28
(15) |
29
(30) |
30
(21) |
31
(6) |
|
|
|
From: <sv...@va...> - 2008-07-22 18:32:22
|
Author: sewardj
Date: 2008-07-22 19:32:29 +0100 (Tue, 22 Jul 2008)
New Revision: 8455
Log:
Temporarily comment out a couple of XML fragments which cause the .pdf
generation (make print-docs), and hence make dist, to fail for
completely non-obvious reasons, even though xsltproc (make html-docs)
does not complain about them.
Modified:
trunk/drd/docs/drd-manual.xml
Modified: trunk/drd/docs/drd-manual.xml
===================================================================
--- trunk/drd/docs/drd-manual.xml 2008-07-22 18:23:16 UTC (rev 8454)
+++ trunk/drd/docs/drd-manual.xml 2008-07-22 18:32:29 UTC (rev 8455)
@@ -832,6 +832,7 @@
xreflabel="Racy use of pthread_cond_wait()"
>
<title>Racy use of pthread_cond_wait()</title>
+<!--
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='thread1'/>
<colspec colname='thread2'/>
@@ -862,6 +863,7 @@
</row>
</tbody>
</tgroup>
+-->
</table>
<table
@@ -870,6 +872,7 @@
xreflabel="Correct use of pthread_cond_wait()"
>
<title>Correct use of pthread_cond_wait()</title>
+<!--
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='thread1'/>
<colspec colname='thread2'/>
@@ -900,6 +903,7 @@
</row>
</tbody>
</tgroup>
+-->
</table>
</sect2>
@@ -1021,8 +1025,11 @@
supported, and there are known problems with multithreading support in
Qt3. As an example, using QString objects in more than one thread will
trigger race reports (this has been confirmed by Trolltech -- see also
-Trolltech task <ulink
+Trolltech task (bug report) number 206152.
+<!--
+ <ulink
url="http://trolltech.com/developer/task-tracker/index_html?id=206152&method=entry">#206152</ulink>).
+-->
</para>
<para>
|
|
From: <sv...@va...> - 2008-07-22 18:23:10
|
Author: sewardj
Date: 2008-07-22 19:23:16 +0100 (Tue, 22 Jul 2008)
New Revision: 8454
Log:
Change memcheck's (client) realloc implementation so that it copies
and moves the block even when the new size is smaller or the same.
This increases the chance that it can detect buggy code which assumes
that realloc-smaller doesn't cause the block to move.
Modified:
trunk/memcheck/mc_malloc_wrappers.c
Modified: trunk/memcheck/mc_malloc_wrappers.c
===================================================================
--- trunk/memcheck/mc_malloc_wrappers.c 2008-07-22 16:45:54 UTC (rev 8453)
+++ trunk/memcheck/mc_malloc_wrappers.c 2008-07-22 18:23:16 UTC (rev 8454)
@@ -372,24 +372,45 @@
old_szB = mc->szB;
- if (old_szB == new_szB) {
- /* size unchanged */
- mc->where = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
- p_new = p_old;
-
- } else if (old_szB > new_szB) {
- /* new size is smaller */
- MC_(make_mem_noaccess)( mc->data+new_szB, mc->szB-new_szB );
- mc->szB = new_szB;
- mc->where = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
- p_new = p_old;
- /* Possibly fill freed area with specified junk. */
- if (MC_(clo_free_fill) != -1) {
- tl_assert(MC_(clo_free_fill) >= 0x00 && MC_(clo_free_fill) <= 0xFF);
- VG_(memset)((void*)(mc->data+new_szB), MC_(clo_free_fill),
- old_szB-new_szB);
+ if (new_szB <= old_szB) {
+ /* new size is smaller or the same */
+ Addr a_new;
+ /* Get new memory */
+ a_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_szB);
+
+ if (a_new) {
+ ExeContext* ec;
+
+ ec = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
+ tl_assert(ec);
+
+ /* Retained part is copied, red zones set as normal */
+ MC_(make_mem_noaccess)( a_new-MC_MALLOC_REDZONE_SZB,
+ MC_MALLOC_REDZONE_SZB );
+ MC_(copy_address_range_state) ( (Addr)p_old, a_new, new_szB );
+ MC_(make_mem_noaccess) ( a_new+new_szB, MC_MALLOC_REDZONE_SZB );
+
+ /* Copy from old to new */
+ VG_(memcpy)((void*)a_new, p_old, new_szB);
+
+ /* Possibly fill freed area with specified junk. */
+ if (MC_(clo_free_fill) != -1) {
+ tl_assert(MC_(clo_free_fill) >= 0x00 && MC_(clo_free_fill) <= 0xFF);
+ VG_(memset)((void*)p_old, MC_(clo_free_fill), old_szB);
+ }
+
+ /* Free old memory */
+ /* Nb: we have to allocate a new MC_Chunk for the new memory rather
+ than recycling the old one, so that any erroneous accesses to the
+ old memory are reported. */
+ die_and_free_mem ( tid, mc, MC_MALLOC_REDZONE_SZB );
+
+ // Allocate a new chunk.
+ mc = create_MC_Chunk( ec, a_new, new_szB, MC_AllocMalloc );
}
+ p_new = (void*)a_new;
+
} else {
/* new size is bigger */
Addr a_new;
|
|
From: <sv...@va...> - 2008-07-22 16:45:48
|
Author: sewardj
Date: 2008-07-22 17:45:54 +0100 (Tue, 22 Jul 2008)
New Revision: 8453
Log:
Start of a standard suppression set for exp-ptrcheck.
Added:
branches/PTRCHECK/exp-ptrcheck.supp
Modified:
branches/PTRCHECK/Makefile.am
branches/PTRCHECK/configure.in
Modified: branches/PTRCHECK/Makefile.am
===================================================================
--- branches/PTRCHECK/Makefile.am 2008-07-22 16:27:26 UTC (rev 8452)
+++ branches/PTRCHECK/Makefile.am 2008-07-22 16:45:54 UTC (rev 8453)
@@ -26,7 +26,8 @@
aix5libc.supp xfree-3.supp xfree-4.supp \
glibc-2.34567-NPTL-helgrind.supp \
glibc-2.2-LinuxThreads-helgrind.supp \
- glibc-2.X-drd.supp
+ glibc-2.X-drd.supp \
+ exp-ptrcheck.supp
dist_val_DATA = $(SUPP_FILES) default.supp
Modified: branches/PTRCHECK/configure.in
===================================================================
--- branches/PTRCHECK/configure.in 2008-07-22 16:27:26 UTC (rev 8452)
+++ branches/PTRCHECK/configure.in 2008-07-22 16:45:54 UTC (rev 8453)
@@ -567,6 +567,10 @@
fi
+# Add glibc and X11 suppressions for exp-ptrcheck
+DEFAULT_SUPP="exp-ptrcheck.supp ${DEFAULT_SUPP}"
+
+
# Check for CLOCK_MONOTONIC
AC_MSG_CHECKING([for CLOCK_MONOTONIC])
Added: branches/PTRCHECK/exp-ptrcheck.supp
===================================================================
--- branches/PTRCHECK/exp-ptrcheck.supp (rev 0)
+++ branches/PTRCHECK/exp-ptrcheck.supp 2008-07-22 16:45:54 UTC (rev 8453)
@@ -0,0 +1,21 @@
+{
+ lib-X11-used-old-pointer-after-realloc-1
+ exp-ptrcheck:LoadStore
+ fun:strlen
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+}
+{
+ lib-X11-used-old-pointer-after-realloc-2
+ exp-ptrcheck:LoadStore
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+}
+
+{
+ ld-2.X-invalid-Add32/64-who-knows
+ exp-ptrcheck:Arith
+ obj:/lib*/ld-2.*so*
+ obj:/lib*/ld-2.*so*
+ obj:/lib*/ld-2.*so*
+}
|
|
From: <sv...@va...> - 2008-07-22 16:27:20
|
Author: sewardj
Date: 2008-07-22 17:27:26 +0100 (Tue, 22 Jul 2008)
New Revision: 8452
Log:
A big bunch of changes, making it able to run large programs, eg
firefox and konqueror, on amd64-linux, with a not too high noise
level.
Modified:
branches/PTRCHECK/exp-ptrcheck/pc_intercepts.c
branches/PTRCHECK/exp-ptrcheck/pc_main.c
Modified: branches/PTRCHECK/exp-ptrcheck/pc_intercepts.c
===================================================================
--- branches/PTRCHECK/exp-ptrcheck/pc_intercepts.c 2008-07-22 10:01:25 UTC (rev 8451)
+++ branches/PTRCHECK/exp-ptrcheck/pc_intercepts.c 2008-07-22 16:27:26 UTC (rev 8452)
@@ -33,6 +33,84 @@
that).
*/
+#include "pub_tool_basics.h"
+#include "pub_tool_hashtable.h"
+#include "pub_tool_redir.h"
+#include "pub_tool_tooliface.h"
+#include "valgrind.h"
+
+
+/* The following intercepts are copied verbatim from
+ memcheck/mc_replace_strmem.c. */
+
+/* --------- Some handy Z-encoded names. --------- */
+
+/* --- Soname of the standard C library. --- */
+
+#if defined(VGO_linux)
+# define m_libc_soname libcZdsoZa // libc.so*
+#elif defined(VGP_ppc32_aix5)
+ /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
+# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
+#elif defined(VGP_ppc64_aix5)
+# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
+#else
+# error "Unknown platform"
+#endif
+
+/* --- Sonames for Linux ELF linkers. --- */
+
+#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
+#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
+#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
+#define m_ld_so_1 ldZdsoZd1 // ld.so.1
+
+
+
+
+#define STRCMP(soname, fnname) \
+ int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ ( const char* s1, const char* s2 ); \
+ int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ ( const char* s1, const char* s2 ) \
+ { \
+ register unsigned char c1; \
+ register unsigned char c2; \
+ while (True) { \
+ c1 = *(unsigned char *)s1; \
+ c2 = *(unsigned char *)s2; \
+ if (c1 != c2) break; \
+ if (c1 == 0) break; \
+ s1++; s2++; \
+ } \
+ if ((unsigned char)c1 < (unsigned char)c2) return -1; \
+ if ((unsigned char)c1 > (unsigned char)c2) return 1; \
+ return 0; \
+ }
+
+STRCMP(m_libc_soname, strcmp)
+STRCMP(m_ld_linux_x86_64_so_2, strcmp)
+STRCMP(m_ld64_so_1, strcmp)
+
+
+// Note that this replacement often doesn't get used because gcc inlines
+// calls to strlen() with its own built-in version. This can be very
+// confusing if you aren't expecting it. Other small functions in this file
+// may also be inline by gcc.
+#define STRLEN(soname, fnname) \
+ SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* str ); \
+ SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* str ) \
+ { \
+ SizeT i = 0; \
+ while (str[i] != 0) i++; \
+ return i; \
+ }
+
+STRLEN(m_libc_soname, strlen)
+STRLEN(m_ld_linux_so_2, strlen)
+STRLEN(m_ld_linux_x86_64_so_2, strlen)
+
+
/*--------------------------------------------------------------------*/
/*--- end pc_intercepts.c ---*/
/*--------------------------------------------------------------------*/
Modified: branches/PTRCHECK/exp-ptrcheck/pc_main.c
===================================================================
--- branches/PTRCHECK/exp-ptrcheck/pc_main.c 2008-07-22 10:01:25 UTC (rev 8451)
+++ branches/PTRCHECK/exp-ptrcheck/pc_main.c 2008-07-22 16:27:26 UTC (rev 8452)
@@ -1108,14 +1108,22 @@
tl_assert(Seg__a(seg) == (Addr)p_old);
if (new_size <= Seg__size(seg)) {
- /* new size is smaller */
- tl_assert(new_size > 0);
- set_mem_unknown( Seg__a(seg)+new_size, Seg__size(seg)-new_size );
- Seg__resize(seg, new_size,
- VG_(record_ExeContext)( tid, 0/*first_ip_delta*/ ) );
- last_seg_added = seg; // necessary for post_reg_write_clientcall
- return p_old;
+ /* new size is smaller: allocate, copy from old to new */
+ Addr p_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_size);
+ VG_(memcpy)((void*)p_new, p_old, new_size);
+ /* Notification: copy retained part */
+ copy_mem ( (Addr)p_old, p_new, new_size );
+
+ /* Free old memory */
+ die_and_free_mem_heap( tid, seg );
+
+ /* This has to be after die_and_free_mem_heap, otherwise the
+ former succeeds in shorting out the new block, not the
+ old, in the case when both are on the same list. */
+ add_new_segment ( tid, p_new, new_size, SegHeap );
+
+ return (void*)p_new;
} else {
/* new size is bigger: allocate, copy from old to new */
Addr p_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_size);
@@ -1468,6 +1476,7 @@
Bool isXmmF = sz == 16 || sz == 8 || sz == 4;
Bool is421 = sz == 4 || sz == 2 || sz == 1;
Bool is8 = sz == 8;
+ Bool is84 = sz == 8 || sz == 4;
tl_assert(sz > 0);
tl_assert(host_is_little_endian());
@@ -1493,6 +1502,7 @@
if (o == GOF(CC_DEP2) && is8) goto none;
if (o == GOF(CC_NDEP) && is8) goto none;
if (o == GOF(DFLAG) && is8) goto none;
+ if (o == GOF(IDFLAG) && is8) goto none;
if (o == GOF(RAX) && is421) { o -= 0; goto contains_o; }
if (o == GOF(RAX)+1 && is421) { o -= 1; o -= 0; goto contains_o; }
@@ -1540,6 +1550,12 @@
if (o == GOF(FPTAG) && sz == 8) goto none;
if (o == GOF(FC3210) && sz == 8) goto none;
+ if (o >= GOF(XMM11) && o+sz <= GOF(XMM11)+16) goto none;
+ if (o >= GOF(XMM12) && o+sz <= GOF(XMM12)+16) goto none;
+ if (o >= GOF(XMM13) && o+sz <= GOF(XMM13)+16) goto none;
+
+ if (o >= GOF(FPREG[0]) && o < GOF(FPREG[7])+8 && sz == 8) goto none;
+
VG_(printf)("get_IntRegInfo(amd64):failing on (%d,%d)\n", o, sz);
tl_assert(0);
# undef GOF
@@ -1868,19 +1884,38 @@
# if defined(__NR__llseek)
case __NR__llseek:
# endif
+
+# if defined(__NR_accept)
+ case __NR_accept:
+# endif
+# if defined(__NR_bind)
+ case __NR_bind:
+# endif
case __NR_chdir:
+ case __NR_chmod:
case __NR_clock_getres:
+ case __NR_clone:
+ case __NR_dup:
+ case __NR_dup2:
+ case __NR_exit: /* hmm, why are we still alive? */
case __NR_fchmod:
case __NR_fchown:
- case __NR_fdatasync:
# if defined(__NR_fcntl64)
case __NR_fcntl64:
# endif
+ case __NR_fdatasync:
case __NR_fstatfs:
+ case __NR_fsync:
+ case __NR_ftruncate:
case __NR_getegid:
case __NR_geteuid:
case __NR_getgid:
case __NR_getppid:
+ case __NR_getresgid:
+ case __NR_getresuid:
+# if defined(__NR_getsockname)
+ case __NR_getsockname:
+# endif
# if defined(__NR_getsockopt)
case __NR_getsockopt:
# endif
@@ -1888,31 +1923,58 @@
case __NR_getuid:
case __NR_kill:
case __NR_link:
+# if defined(__NR_listen)
+ case __NR_listen:
+# endif
case __NR_lseek:
# if defined(__NR_lstat64)
case __NR_lstat64:
# endif
case __NR_madvise:
+ case __NR_mkdir:
case __NR_pipe:
case __NR_poll:
case __NR_pwrite64:
case __NR_readlink:
case __NR_readv:
+# if defined(__NR_recvfrom)
+ case __NR_recvfrom:
+# endif
+# if defined(__NR_recvmsg)
+ case __NR_recvmsg:
+# endif
case __NR_rename:
+ case __NR_rmdir:
case __NR_sched_get_priority_max:
case __NR_sched_get_priority_min:
case __NR_sched_getparam:
case __NR_sched_getscheduler:
+ case __NR_sched_setscheduler:
+ case __NR_sched_yield:
case __NR_select:
+# if defined(__NR_sendto)
+ case __NR_sendto:
+# endif
case __NR_setrlimit:
+# if defined(__NR_setsockopt)
+ case __NR_setsockopt:
+# endif
+# if defined(__NR_shmctl)
+ case __NR_shmctl:
+# endif
# if defined(__NR_shutdown)
case __NR_shutdown:
# endif
case __NR_statfs:
+ case __NR_symlink:
+ case __NR_sysinfo:
+ case __NR_tgkill:
case __NR_time:
case __NR_truncate:
case __NR_umask:
case __NR_unlink:
+ case __NR_utime:
+ case __NR_wait4:
case __NR_writev:
VG_(set_syscall_return_shadows)( tid, (UWord)NONPTR, 0 );
break;
@@ -1929,128 +1991,6 @@
}
# endif
-//zz // These ones don't return a pointer, so don't do anything -- already set
-//zz // the segment to UNKNOWN in post_reg_write_default().
-//zz // 1: // exit (never seen by skin)
-// case 2 ... 16: // read ... lchown
-//zz // 17: // break (unimplemented)
-//zz // 18: // oldstat (obsolete)
-//zz case 19: // lseek
-//zz case 20 ... 25: // getpid ... stime
-//zz case 26: // ptrace -- might return pointers, but not ones that
-//zz // deserve their own segment.
-//zz case 27: // alarm
-//zz // 28: // oldfstat (obsolete)
-//zz case 29 ... 30: // pause ... utime
-//zz // 31: // stty (unimplemented)
-//zz // 32: // gtty (unimplemented)
-// case 33 ... 34: // access ... nice
-//zz // 35: // ftime (obsolete and/or unimplemented)
-//zz case 36 ... 43: // sync ... times
-//zz // 44: // prof (unimplemented)
-//zz // 45: // brk (below)
-//zz case 46 ... 47: // setgid ... getgid
-//zz // 48: // signal (never seen by skin)
-//zz case 49 ... 50: // geteuid ... getegid
-//zz // 51: // acct (never seen by skin? not handled by core)
-//zz case 52: // umount2
-//zz // 53: // lock (unimplemented)
-//zz case 54: // ioctl -- assuming no pointers returned
-//zz case 55: // fcntl
-//zz // 56: // mpx (unimplemented)
-//zz case 57: // setpgid
-//zz // 58: // ulimit (unimplemented? not handled by core)
-//zz // 59: // oldolduname (obsolete)
-//zz case 60 ... 67: // sigaction
-//zz // 68: // sgetmask (?? not handled by core)
-//zz // 69: // ssetmask (?? not handled by core)
-//zz case 70 ... 71: // setreuid ... setguid
-//zz // 72: // sigsuspend (handled by core? never seen by skins)
-// case 73 ... 83: // sigpending ... symlink
-//zz // 84: // oldlstat (obsolete)
-//zz case 85: // readlink
-//zz // 86: // uselib (not in core)
-//zz // 87: // swapon (not in core)
-//zz // 88: // reboot (not in core)
-//zz // 89: // readdir (not in core)
-//zz // 90: // mmap (below)
-// case 91: // munmap; die_mem_munmap already called, segment removed
-//zz case 92 ... 97: // truncate ... setpriority
-//zz // 98: // profil (not in core)
-//zz case 99 ... 101: // statfs ... ioperm
-//zz case 102: // socketcall -- assuming no pointers returned
-//zz case 103 ... 108: // syslog ... fstat
-//zz // 109: // olduname (obsolete)
-//zz case 110 ... 111: // iopl ... vhangup
-//zz // 112: // idle (not in core, only used by process 0)
-//zz // 113: // vm86old (not in core)
-//zz case 114: // wait4
-//zz // 115: // swapoff (not in core)
-//zz case 116: // sysinfo
-//zz case 117: // ipc -- assuming no pointers returned
-//zz case 118: // fsync
-//zz // 119: // sigreturn (not in core, & shouldn't be called)
-// case 120: // clone (not handled by core)
-//zz // 121: // setdomainname (not in core)
-// case 122 ... 126: // uname ... sigprocmask
-//zz // 127: // create_module (not in core)
-//zz case 128: // init_module
-//zz // 129: // delete_module (not in core)
-//zz // 130: // get_kernel_syms (not in core)
-//zz case 131 ... 133: // quotactl ... fchdir
-//zz // 134: // bdflush (not in core)
-//zz // 135: // sysfs (not in core)
-//zz case 136: // personality
-//zz // 137: // afs_syscall (not in core)
-//zz case 138 ... 160: // setfsuid ... sched_get_priority_min
-//zz // 161: // rr_get_interval
-//zz case 162: // nanosleep
-//zz // 163: // mremap (below)
-//zz case 164 ... 165: // setresuid ... getresuid
-//zz // 166: // vm86 (not in core)
-//zz // 167: // query_module (not in core)
-//zz case 168: // poll
-//zz // 169: // nfsservctl (not in core)
-//zz case 170 ... 172: // setresgid ... prctl
-//zz // 173: // rt_sigreturn (not in core)
-// case 174 ... 177: // rt_sigaction ... rt_sigtimedwait
-//zz // 178: // rt_sigqueueinfo (not in core)
-// case 179 ... 191: // rt_sigsuspend ... ugetrlimit
-//zz // 192: // mmap (below)
-// case 193 ... 216: // truncate64 ... setfsgid32
-//zz // 217: // pivot_root (not in core)
-//zz // 218: // mincore (not in core)
-//zz case 219 ... 221: // madvise ... fcntl64
-//zz // 222: // ??? (no such syscall?)
-//zz // 223: // security (not in core)
-//zz // 224: // gettid (not in core)
-//zz // 225: // readahead (not in core)
-//zz case 226 ... 237: // setxattr ... fremovexattr
-//zz // 238: // tkill (not in core)
-//zz case 239: // sendfile64
-//zz // 240: // futex (not in core)
-//zz // 241: // sched_setaffinity (not in core)
-//zz // 242: // sched_getaffinity (not in core)
-// case 243: // set_thread_area (not in core)
-//zz // 244: // get_thread_area (not in core)
-//zz // 245: // io_setup (not in core)
-//zz // 246: // io_destroy (not in core)
-//zz // 247: // io_getevents (not in core)
-//zz // 248: // io_submit (not in core)
-//zz // 249: // io_cancel (not in core)
-// case 250: // fadvise64
-//zz // 251: // free_hugepages (not in core)
-// case 252: // exit_group
-//zz case 253: // lookup_dcookie
-//zz // 254: // sys_epoll_create (?)
-//zz // 255: // sys_epoll_ctl (?)
-//zz // 256: // sys_epoll_wait (?)
-//zz // 257: // remap_file_pages (?)
-// case 258: // set_tid_address (?)
-
-// case 311: // set_robust_list
-// break;
-
// With brk(), result (of kernel syscall, not glibc wrapper) is a heap
// pointer. Make the shadow UNKNOWN.
case __NR_brk:
@@ -2060,7 +2000,6 @@
// With mmap, new_mem_mmap() has already been called and added the
// segment (we did it there because we had the result address and size
// handy). So just set the return value shadow.
-//zz case 90: // mmap
case __NR_mmap:
# if defined(__NR_mmap2)
case __NR_mmap2:
@@ -2070,20 +2009,32 @@
VG_(set_syscall_return_shadows)( tid, (UWord)NONPTR, 0 );
if (0) VG_(printf)("ZZZZZZZ mmap res -> NONPTR\n");
} else {
- // We remembered the last added segment; make sure it's the
- // right one.
- #if 0
- sk_assert(res == last_seg_added->left);
- VG_(set_return_from_syscall_shadow)( tid, (UInt)last_seg_added );
- #endif
VG_(set_syscall_return_shadows)( tid, (UWord)UNKNOWN, 0 );
if (0) VG_(printf)("ZZZZZZZ mmap res -> UNKNOWN\n");
}
break;
-//zz case 163:
-//zz VG_(skin_panic)("can't handle mremap, sorry");
-//zz break;
+ // shmat uses the same scheme. We will just have had a
+ // notification via new_mem_mmap. Just set the return value shadow.
+# if defined(__NR_shmat)
+ case __NR_shmat:
+ if (res.isError) {
+ VG_(set_syscall_return_shadows)( tid, (UWord)NONPTR, 0 );
+ if (0) VG_(printf)("ZZZZZZZ shmat res -> NONPTR\n");
+ } else {
+ VG_(set_syscall_return_shadows)( tid, (UWord)UNKNOWN, 0 );
+ if (0) VG_(printf)("ZZZZZZZ shmat res -> UNKNOWN\n");
+ }
+ break;
+# endif
+
+# if defined(__NR_shmget)
+ case __NR_shmget:
+ // FIXME: is this correct?
+ VG_(set_syscall_return_shadows)( tid, (UWord)UNKNOWN, 0 );
+ break;
+# endif
+
default:
VG_(printf)("syscallno == %d\n", syscallno);
VG_(tool_panic)("unhandled syscall");
@@ -2575,9 +2526,15 @@
// -------------
// n | n ? p
// ? | ? ? ?
-// p | p ? * (*) if p1==p2 then p else e
+// p | p ? * (*) if p1==p2 then p else e (see comment)
// -------------
-
+/* Seems to be OK to And two pointers:
+ testq %ptr1,%ptr2
+ jnz ..
+ which possibly derives from
+ if (ptr1 & ptr2) { A } else { B }
+ not sure what that means
+*/
static VG_REGPARM(3) Seg do_andW(Seg seg1, Seg seg2,
UWord result, UWord args_diff)
{
@@ -2590,7 +2547,8 @@
return BOTTOM,
out = NONPTR, out = UNKNOWN, out = seg2,
out = UNKNOWN, out = UNKNOWN, out = UNKNOWN,
- out = seg1, out = UNKNOWN, BINERROR("And32/And64")
+ out = seg1, out = UNKNOWN, out = NONPTR
+ /*BINERROR("And32/And64")*/
);
}
out = ( looks_like_a_pointer(result) ? out : NONPTR );
@@ -2602,8 +2560,18 @@
// -------------
// n | n ? p
// ? | ? ? ?
-// p | p ? e
+// p | p ? n
// -------------
+/* It's OK to Or two pointers together, but the result definitely
+ isn't a pointer. Why would you want to do that? Because of this:
+ char* p1 = malloc(..);
+ char* p2 = malloc(..);
+ ...
+ if (p1 || p2) { .. }
+ In this case gcc on x86/amd64 quite literally or-s the two pointers
+ together and throws away the result, the purpose of which is merely
+ to sets %eflags.Z/%rflags.Z. So we have to allow it.
+*/
static VG_REGPARM(3) Seg do_orW(Seg seg1, Seg seg2, UWord result)
{
Seg out;
@@ -2611,7 +2579,7 @@
return BOTTOM,
out = NONPTR, out = UNKNOWN, out = seg2,
out = UNKNOWN, out = UNKNOWN, out = UNKNOWN,
- out = seg1, out = UNKNOWN, BINERROR("Or32/Or64")
+ out = seg1, out = UNKNOWN, out = NONPTR
);
out = ( looks_like_a_pointer(result) ? out : NONPTR );
return out;
@@ -2877,40 +2845,40 @@
typedef IRExpr IRAtom;
-/* (used for sanity checks only): is this an atom which looks
- like it's from original code? */
-static Bool isOriginalAtom ( PCEnv* pce, IRAtom* a1 )
-{
- if (a1->tag == Iex_Const)
- return True;
- if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp < pce->n_originalTmps)
- return True;
- return False;
-}
+//zz /* (used for sanity checks only): is this an atom which looks
+//zz like it's from original code? */
+//zz static Bool isOriginalAtom ( PCEnv* pce, IRAtom* a1 )
+//zz {
+//zz if (a1->tag == Iex_Const)
+//zz return True;
+//zz if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp < pce->n_originalTmps)
+//zz return True;
+//zz return False;
+//zz }
+//zz
+//zz /* (used for sanity checks only): is this an atom which looks
+//zz like it's from shadow code? */
+//zz static Bool isShadowAtom ( PCEnv* pce, IRAtom* a1 )
+//zz {
+//zz if (a1->tag == Iex_Const)
+//zz return True;
+//zz if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp >= pce->n_originalTmps)
+//zz return True;
+//zz return False;
+//zz }
+//zz
+//zz /* (used for sanity checks only): check that both args are atoms and
+//zz are identically-kinded. */
+//zz static Bool sameKindedAtoms ( IRAtom* a1, IRAtom* a2 )
+//zz {
+//zz if (a1->tag == Iex_RdTmp && a2->tag == Iex_RdTmp)
+//zz return True;
+//zz if (a1->tag == Iex_Const && a2->tag == Iex_Const)
+//zz return True;
+//zz return False;
+//zz }
-/* (used for sanity checks only): is this an atom which looks
- like it's from shadow code? */
-static Bool isShadowAtom ( PCEnv* pce, IRAtom* a1 )
-{
- if (a1->tag == Iex_Const)
- return True;
- if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp >= pce->n_originalTmps)
- return True;
- return False;
-}
-/* (used for sanity checks only): check that both args are atoms and
- are identically-kinded. */
-static Bool sameKindedAtoms ( IRAtom* a1, IRAtom* a2 )
-{
- if (a1->tag == Iex_RdTmp && a2->tag == Iex_RdTmp)
- return True;
- if (a1->tag == Iex_Const && a2->tag == Iex_Const)
- return True;
- return False;
-}
-
-
/*------------------------------------------------------------*/
/*--- Constructing IR fragments ---*/
/*------------------------------------------------------------*/
@@ -3383,19 +3351,21 @@
/* We don't really know what the result could be; test at run
time. */
- case Iop_32Uto64: goto n_or_u_64;
- case Iop_32Sto64: goto n_or_u_64;
- case Iop_Shl64: goto n_or_u_64;
- case Iop_Sar64: goto n_or_u_64;
- case Iop_Shr64: goto n_or_u_64;
- case Iop_Xor64: goto n_or_u_64;
- case Iop_128HIto64: goto n_or_u_64;
- case Iop_128to64: goto n_or_u_64;
- case Iop_16Uto64: goto n_or_u_64;
- case Iop_16Sto64: goto n_or_u_64;
- case Iop_32HLto64: goto n_or_u_64;
- case Iop_MullS32: goto n_or_u_64;
- case Iop_MullU32: goto n_or_u_64;
+ case Iop_32Uto64: goto n_or_u_64;
+ case Iop_32Sto64: goto n_or_u_64;
+ case Iop_Shl64: goto n_or_u_64;
+ case Iop_Sar64: goto n_or_u_64;
+ case Iop_Shr64: goto n_or_u_64;
+ case Iop_Xor64: goto n_or_u_64;
+ case Iop_128HIto64: goto n_or_u_64;
+ case Iop_128to64: goto n_or_u_64;
+ case Iop_V128HIto64: goto n_or_u_64;
+ case Iop_V128to64: goto n_or_u_64;
+ case Iop_16Uto64: goto n_or_u_64;
+ case Iop_16Sto64: goto n_or_u_64;
+ case Iop_32HLto64: goto n_or_u_64;
+ case Iop_MullS32: goto n_or_u_64;
+ case Iop_MullU32: goto n_or_u_64;
n_or_u_64:
assign( 'I', pce, dstv,
mkexpr(
@@ -3412,6 +3382,27 @@
case Iop_DivModU64to32: goto n64;
case Iop_DivModS64to32: goto n64;
case Iop_F64toI64: goto n64;
+ case Iop_Ctz64: goto n64;
+ case Iop_Clz64: goto n64;
+ case Iop_Avg8Ux8: case Iop_Avg16Ux4:
+ case Iop_Max16Sx4: case Iop_Max8Ux8: case Iop_Min16Sx4:
+ case Iop_Min8Ux8: case Iop_MulHi16Ux4:
+ case Iop_QNarrow32Sx2: case Iop_QNarrow16Sx4:
+ case Iop_QNarrow16Ux4: case Iop_Add8x8: case Iop_Add32x2:
+ case Iop_QAdd8Sx8: case Iop_QAdd16Sx4: case Iop_QAdd8Ux8:
+ case Iop_QAdd16Ux4: case Iop_Add16x4: case Iop_CmpEQ8x8:
+ case Iop_CmpEQ32x2: case Iop_CmpEQ16x4: case Iop_CmpGT8Sx8:
+ case Iop_CmpGT32Sx2: case Iop_CmpGT16Sx4: case Iop_MulHi16Sx4:
+ case Iop_Mul16x4: case Iop_ShlN32x2: case Iop_ShlN16x4:
+ case Iop_SarN32x2: case Iop_SarN16x4: case Iop_ShrN32x2:
+ case Iop_ShrN16x4: case Iop_Sub8x8: case Iop_Sub32x2:
+ case Iop_QSub8Sx8: case Iop_QSub16Sx4: case Iop_QSub8Ux8:
+ case Iop_QSub16Ux4: case Iop_Sub16x4: case Iop_InterleaveHI8x8:
+ case Iop_InterleaveHI32x2: case Iop_InterleaveHI16x4:
+ case Iop_InterleaveLO8x8: case Iop_InterleaveLO32x2:
+ case Iop_InterleaveLO16x4: case Iop_SarN8x8:
+ case Iop_Perm8x8: case Iop_ShlN8x8: case Iop_Mul32x2:
+ case Iop_CatEvenLanes16x4: case Iop_CatOddLanes16x4:
n64:
assign( 'I', pce, dstv, mkU64( (UInt)NONPTR ));
break;
@@ -3675,6 +3666,21 @@
addr, addrv, dI );
break;
}
+ /* 32-bit float. We can just use _store4, but need
+ to futz with the argument type. */
+ case Ity_F32: {
+ IRAtom* i32 = assignNew( 'I', pce, Ity_I32,
+ unop(Iop_ReinterpF32asI32,
+ data ) );
+ IRAtom* i64 = assignNew( 'I', pce, Ity_I64,
+ unop(Iop_32Uto64,
+ i32 ) );
+ gen_dirty_v_WWW( pce,
+ &check_store4,
+ "check_store4",
+ addr, addrv, i64 );
+ break;
+ }
default:
ppIRType(d_ty); tl_assert(0);
}
@@ -3847,6 +3853,18 @@
break;
}
+ case Iex_Triop: {
+ stmt( 'C', pce, st );
+ tl_assert(isIRAtom(e->Iex.Triop.arg1));
+ tl_assert(isIRAtom(e->Iex.Triop.arg2));
+ tl_assert(isIRAtom(e->Iex.Triop.arg3));
+ if (isWord)
+ instrument_arithop( pce, dst, dstv, e->Iex.Triop.op,
+ e->Iex.Triop.arg1, e->Iex.Triop.arg2,
+ e->Iex.Triop.arg3, NULL );
+ break;
+ }
+
default:
goto unhandled;
} /* switch (e->tag) */
|
|
From: <sv...@va...> - 2008-07-22 10:01:17
|
Author: sewardj
Date: 2008-07-22 11:01:25 +0100 (Tue, 22 Jul 2008)
New Revision: 8451
Log:
* handle sys_getprocs64 on ppc32-aix5
* handle sys_uname properly on ppc{32,64}-aix5
Modified:
trunk/coregrind/m_syswrap/syswrap-aix5.c
trunk/coregrind/m_syswrap/syswrap-ppc32-aix5.c
trunk/coregrind/m_syswrap/syswrap-ppc64-aix5.c
Modified: trunk/coregrind/m_syswrap/syswrap-aix5.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-aix5.c 2008-07-22 09:59:48 UTC (rev 8450)
+++ trunk/coregrind/m_syswrap/syswrap-aix5.c 2008-07-22 10:01:25 UTC (rev 8451)
@@ -264,6 +264,7 @@
#include <sys/shm.h>
#include <semaphore.h>
#include <sys/statfs.h>
+#include <sys/utsname.h>
/* --- !!! --- EXTERNAL HEADERS end --- !!! --- */
HChar* ML_(aix5debugstuff_pc_to_fnname) ( Addr pc )
@@ -1175,6 +1176,9 @@
POST_MEM_WRITE(ARG2, 8);
}
+/* Note that this is used for both sys_getprocs and sys_getprocs64. I
+ think that's correct - from the man page, the calling conventions
+ look identical. */
PRE(sys_getprocs)
{
PRINT("getprocs ( %#lx, %ld, %#lx, %ld, %#lx, %ld )",
@@ -2516,8 +2520,14 @@
PRE(sys_uname)
{
- PRINT("uname (BOGUS HANDLER)");
+ PRINT("uname ( %#lx )", ARG1);
+ PRE_MEM_WRITE( "uname(Name)", ARG1, sizeof(struct utsname));
}
+POST(sys_uname)
+{
+ vg_assert(SUCCESS);
+ POST_MEM_WRITE( ARG1, sizeof(struct utsname));
+}
PRE(sys_unlink)
{
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-aix5.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-aix5.c 2008-07-22 09:59:48 UTC (rev 8450)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-aix5.c 2008-07-22 10:01:25 UTC (rev 8451)
@@ -789,6 +789,7 @@
AIXXY(__NR_AIX5_gethostname, sys_gethostname),
AIXXY(__NR_AIX5_getpriv, sys_getpriv),
AIXXY(__NR_AIX5_getprocs, sys_getprocs),
+ AIXXY(__NR_AIX5_getprocs64, sys_getprocs), /* XXX: correct? */
AIXX_(__NR_AIX5_getrpid, sys_getrpid),
AIXXY(__NR_AIX5_getsockopt, sys_getsockopt),
AIXX_(__NR_AIX5_gettimerid, sys_gettimerid),
@@ -870,7 +871,7 @@
AIXX_(__NR_AIX5_thread_waitlock_, sys_thread_waitlock_),
AIXXY(__NR_AIX5_times, sys_times),
AIXX_(__NR_AIX5_umask, sys_umask),
- AIXX_(__NR_AIX5_uname, sys_uname),
+ AIXXY(__NR_AIX5_uname, sys_uname),
AIXX_(__NR_AIX5_unlink, sys_unlink),
AIXX_(__NR_AIX5_utimes, sys_utimes),
AIXXY(__NR_AIX5_vmgetinfo, sys_vmgetinfo),
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-aix5.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-aix5.c 2008-07-22 09:59:48 UTC (rev 8450)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-aix5.c 2008-07-22 10:01:25 UTC (rev 8451)
@@ -751,6 +751,7 @@
AIXX_(__NR_AIX5_thread_unlock, sys_thread_unlock),
AIXX_(__NR_AIX5_thread_waitlock_, sys_thread_waitlock_),
AIXXY(__NR_AIX5_times, sys_times),
+ AIXXY(__NR_AIX5_uname, sys_uname),
AIXX_(__NR_AIX5_unlink, sys_unlink),
AIXX_(__NR_AIX5_utimes, sys_utimes),
AIXXY(__NR_AIX5_vmgetinfo, sys_vmgetinfo),
|
|
From: <sv...@va...> - 2008-07-22 09:59:43
|
Author: sewardj
Date: 2008-07-22 10:59:48 +0100 (Tue, 22 Jul 2008)
New Revision: 8450
Log:
Origin-tracking fix: make sure that we have a shadow-origin (B)
temporary defined for every (original) temp used in the block's IR
preamble, as is already done of the shadow-definedness (V)
temporaries. Otherwise we can end up generating references to B
temporaries that have no assigned value, which causes the IR sanity
checker to complain. Only observed (and even then rarely) on the
complex preambles sometimes used for TOC-afflicted platforms.
Modified:
trunk/memcheck/mc_translate.c
Modified: trunk/memcheck/mc_translate.c
===================================================================
--- trunk/memcheck/mc_translate.c 2008-07-21 11:12:10 UTC (rev 8449)
+++ trunk/memcheck/mc_translate.c 2008-07-22 09:59:48 UTC (rev 8450)
@@ -119,6 +119,7 @@
static IRType shadowTypeV ( IRType ty );
static IRExpr* expr2vbits ( struct _MCEnv* mce, IRExpr* e );
+static IRTemp findShadowTmpB ( struct _MCEnv* mce, IRTemp orig );
/*------------------------------------------------------------*/
@@ -3520,22 +3521,31 @@
The following loop therefore scans the preamble looking for
assignments to temporaries. For each one found it creates an
- assignment to the corresponding shadow temp, marking it as
+ assignment to the corresponding (V) shadow temp, marking it as
'defined'. This is the same resulting IR as if the main
instrumentation loop before had been applied to the statement
'tmp = CONSTANT'.
+
+ Similarly, if origin tracking is enabled, we must generate an
+ assignment for the corresponding origin (B) shadow, claiming
+ no-origin, as appropriate for a defined value.
*/
for (j = 0; j < i; j++) {
if (bb_in->stmts[j]->tag == Ist_WrTmp) {
/* findShadowTmpV checks its arg is an original tmp;
no need to assert that here. */
IRTemp tmp_o = bb_in->stmts[j]->Ist.WrTmp.tmp;
- IRTemp tmp_s = findShadowTmpV(&mce, tmp_o);
- IRType ty_s = typeOfIRTemp(bb->tyenv, tmp_s);
- assign( 'V', &mce, tmp_s, definedOfType( ty_s ) );
+ IRTemp tmp_v = findShadowTmpV(&mce, tmp_o);
+ IRType ty_v = typeOfIRTemp(bb->tyenv, tmp_v);
+ assign( 'V', &mce, tmp_v, definedOfType( ty_v ) );
+ if (MC_(clo_mc_level) == 3) {
+ IRTemp tmp_b = findShadowTmpB(&mce, tmp_o);
+ tl_assert(typeOfIRTemp(bb->tyenv, tmp_b) == Ity_I32);
+ assign( 'B', &mce, tmp_b, mkU32(0)/* UNKNOWN ORIGIN */);
+ }
if (0) {
- VG_(printf)("create shadow tmp for preamble tmp [%d] ty ", j);
- ppIRType( ty_s );
+ VG_(printf)("create shadow tmp(s) for preamble tmp [%d] ty ", j);
+ ppIRType( ty_v );
VG_(printf)("\n");
}
}
|
|
From: Tom H. <th...@cy...> - 2008-07-22 03:16:22
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-07-22 03:15:07 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 345 tests, 60 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2008-07-22 02:56:33
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-07-22 03:20:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 443 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-07-22 02:47:46
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-07-22 03:25:07 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Jul 22 03:33:46 2008 --- new.short Tue Jul 22 03:47:54 2008 *************** *** 8,10 **** ! == 441 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 441 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 18,20 **** none/tests/mremap2 (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) --- 18,19 ---- |
|
From: Tom H. <th...@cy...> - 2008-07-22 02:46:52
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-07-22 03:05:13 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 5 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-07-22 02:32:47
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-07-22 03:00:11 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 443 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/atomic_var (stderr) |