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
(1) |
|
2
(28) |
3
(21) |
4
(27) |
5
(22) |
6
(24) |
7
(25) |
8
(21) |
|
9
(18) |
10
(20) |
11
(10) |
12
(36) |
13
(18) |
14
(18) |
15
(29) |
|
16
(17) |
17
(7) |
18
(11) |
19
(17) |
20
(18) |
21
(12) |
22
(13) |
|
23
(9) |
24
(8) |
25
(7) |
26
(22) |
27
(18) |
28
(9) |
29
(15) |
|
30
(13) |
31
(7) |
|
|
|
|
|
|
From: Tom H. <to...@co...> - 2005-10-13 22:54:32
|
In message <BAY...@ph...l> you wrote: > > >Could you explain what you mean a bit more? I'm not aware of any > >such flag you see... > > > >Do you mean the signal number in the bottom bit of a flags? As far > >as I know valgrind will let you specify almost any signal there. > > The thread implementation which I am using has these flags used in clone > call: CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD. > > When I run the program using valgrind, the output is: > > ==6729== Unsupported clone() flags: 0xF11 > ==6729== > ==6729== The only supported clone() uses are: > ==6729== - via a threads library (LinuxThreads or NPTL) > ==6729== - via the implementation of fork or vfork > ==6729== - for the Quadrics Elan3 user-space driver > ==6729== > ==6729== Valgrind detected that your program requires > ==6729== the following unimplemented functionality: > ==6729== Valgrind does not support general clone(). > ==6729== This may be because the functionality is hard to implement, > ==6729== or because no reasonable program would behave this way, > ==6729== or because nobody has yet needed it. In any case, let us know at > ==6729== www.valgrind.org and/or try to work around the problem, if you can. > ==6729== > ==6729== Valgrind has to exit now. Sorry. Bye! > > If I remove the SIGCHLD from the thread implementations clone call, it will > run perfectly. So the question is, is there any side effects in valgrind, if > I change the valgrind to accept SIGCHLD clone flag? That would be fine, but my real concern is that after we went to some trouble to only check the important flags it seems that the x86 code has now sprouted a set of very explicit tests that reject all bar a handful of selected flag sets. The signal certainly doesn't matter, so at the very least that initial set of tests should ignore the signal number. > If you check the file syswrap-x86-linux.c in line 1032 (and also in > syswrap-amd64-linux.c, but it is not important right now), you will notice > why it does not work with SIGCHLD. I have valgrind version 3.0.1. Actually it would work the amd64 version which is why I confused because that was the one I looked at. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |
|
From: Tom H. <to...@co...> - 2005-10-13 21:26:48
|
In message <434...@ho...>
Jukka Kuosmanen <muo...@ho...> wrote:
> Hi, are there any side effects if I change the valgrind to accept
> SIGCHLD flag to clone call? I have a thread implementation which uses
> SIGCHLD and I cannot use valgrind with that program.
Could you explain what you mean a bit more? I'm not aware of any
such flag you see...
Do you mean the signal number in the bottom bit of a flags? As far
as I know valgrind will let you specify almost any signal there.
What is the exact code change you want to make?
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Jukka K. <muo...@ho...> - 2005-10-13 21:00:21
|
Hi, are there any side effects if I change the valgrind to accept SIGCHLD flag to clone call? I have a thread implementation which uses SIGCHLD and I cannot use valgrind with that program. |
|
From: <sv...@va...> - 2005-10-13 15:54:31
|
Author: tom Date: 2005-10-13 16:54:20 +0100 (Thu, 13 Oct 2005) New Revision: 4917 Log: Update bug status. Modified: trunk/docs/internals/3_0_BUGSTATUS.txt Modified: trunk/docs/internals/3_0_BUGSTATUS.txt =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/docs/internals/3_0_BUGSTATUS.txt 2005-10-13 15:51:12 UTC (rev 4= 916) +++ trunk/docs/internals/3_0_BUGSTATUS.txt 2005-10-13 15:54:20 UTC (rev 4= 917) @@ -131,7 +131,7 @@ 113796 read() and write() do not work if buffer is in shared memory =20 Although the underlying cause is still present in the 3.0 code -this bug isonly user visible in the 2.4 code base. +this bug is only user visible in the 2.4 code base. =20 FIXED-TRUNK: 4852 =20 @@ -269,7 +269,13 @@ FIXED-TRUNK: vg:4769 FIXED-30BRANCH: TODO =20 +---------------------------------------------------------------- +114289 Memcheck fails to intercept malloc when used in an uclibc enviro= nment =20 +FIXED-TRUNK: 4916 +FIXED-30BRANCH: TODO + + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D Bugs targeted for 3.1.0 and 3.0.1 (all done, 3.0.1 released) = =3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D |
|
From: <sv...@va...> - 2005-10-13 15:51:27
|
Author: tom
Date: 2005-10-13 16:51:12 +0100 (Thu, 13 Oct 2005)
New Revision: 4916
Log:
Use an soname of libc.so* for libc redirects so that we catch a wider
range of libc's such as uclibc as well as glibc. Fixes bug 114289.
Modified:
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
trunk/memcheck/mac_replace_strmem.c
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2005-10-13 15:29:=
39 UTC (rev 4915)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2005-10-13 15:51:=
12 UTC (rev 4916)
@@ -55,7 +55,7 @@
=20
/* Some handy Z-encoded names */
#define m_libstc_plus_plus_star libstdcZpZpZa // libstdc++*
-#define m_libc_dot_so_dot_6 libcZdsoZd6 // libc.so.6
+#define m_libc_dot_so_star libcZdsoZa // libc.so*
//#define m_libpgc_dot_so libpgcZdso // libpgc.so
=20
/* 2 Apr 05: the Portland Group compiler, which uses cfront/ARM style
@@ -127,7 +127,7 @@
{ \
void* v; \
\
- MALLOC_TRACE(#fnname "(%llu)", (ULong)n ); \
+ MALLOC_TRACE(#fnname "(%llu)", (ULong)n ); \
if (!init_done) init(); \
\
v =3D (void*)VALGRIND_NON_SIMD_CALL1( info.tl_##vg_replacement, n =
); \
@@ -146,27 +146,27 @@
=20
// malloc
ALLOC_or_NULL(m_libstc_plus_plus_star, malloc, malloc);
-ALLOC_or_NULL(m_libc_dot_so_dot_6, malloc, malloc);
+ALLOC_or_NULL(m_libc_dot_so_star, malloc, malloc);
//ALLOC_or_NULL(m_libpgc_dot_so, malloc, malloc);
=20
=20
// operator new(unsigned int), unmangled for some bizarre reason
ALLOC_or_BOMB(m_libstc_plus_plus_star, builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libc_dot_so_dot_6, builtin_new, __builtin_new);
+ALLOC_or_BOMB(m_libc_dot_so_star, builtin_new, __builtin_new);
=20
ALLOC_or_BOMB(m_libstc_plus_plus_star, __builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libc_dot_so_dot_6, __builtin_new, __builtin_new);
+ALLOC_or_BOMB(m_libc_dot_so_star, __builtin_new, __builtin_new);
=20
=20
// operator new(unsigned int), GNU mangling, 32-bit platforms
// operator new(unsigned long), GNU mangling, 64-bit platforms
#if VG_WORDSIZE =3D=3D 4
ALLOC_or_BOMB(m_libstc_plus_plus_star, _Znwj, __builtin_new);
- ALLOC_or_BOMB(m_libc_dot_so_dot_6, _Znwj, __builtin_new);
+ ALLOC_or_BOMB(m_libc_dot_so_star, _Znwj, __builtin_new);
#endif
#if VG_WORDSIZE =3D=3D 8
ALLOC_or_BOMB(m_libstc_plus_plus_star, _Znwm, __builtin_new);
- ALLOC_or_BOMB(m_libc_dot_so_dot_6, _Znwm, __builtin_new);
+ ALLOC_or_BOMB(m_libc_dot_so_star, _Znwm, __builtin_new);
#endif
=20
=20
@@ -178,28 +178,28 @@
// operator new(unsigned long, std::nothrow_t const&), GNU mangling, 64-=
bit
#if VG_WORDSIZE =3D=3D 4
ALLOC_or_NULL(m_libstc_plus_plus_star, _ZnwjRKSt9nothrow_t, __builtin_=
new);
- ALLOC_or_NULL(m_libc_dot_so_dot_6, _ZnwjRKSt9nothrow_t, __builtin_=
new);
+ ALLOC_or_NULL(m_libc_dot_so_star, _ZnwjRKSt9nothrow_t, __builtin_=
new);
#endif
#if VG_WORDSIZE =3D=3D 8
ALLOC_or_NULL(m_libstc_plus_plus_star, _ZnwmRKSt9nothrow_t, __builtin_=
new);
- ALLOC_or_NULL(m_libc_dot_so_dot_6, _ZnwmRKSt9nothrow_t, __builtin_=
new);
+ ALLOC_or_NULL(m_libc_dot_so_star, _ZnwmRKSt9nothrow_t, __builtin_=
new);
#endif
=20
=20
// operator new[](unsigned int), unmangled for some bizarre reason
ALLOC_or_BOMB(m_libstc_plus_plus_star, __builtin_vec_new, __builtin_vec_=
new );
-ALLOC_or_BOMB(m_libc_dot_so_dot_6, __builtin_vec_new, __builtin_vec_=
new );
+ALLOC_or_BOMB(m_libc_dot_so_star, __builtin_vec_new, __builtin_vec_=
new );
=20
=20
// operator new[](unsigned int), GNU mangling, 32-bit platforms
// operator new[](unsigned long), GNU mangling, 64-bit platforms
#if VG_WORDSIZE =3D=3D 4
ALLOC_or_BOMB(m_libstc_plus_plus_star, _Znaj, __builtin_vec=
_new );
- ALLOC_or_BOMB(m_libc_dot_so_dot_6, _Znaj, __builtin_vec=
_new );
+ ALLOC_or_BOMB(m_libc_dot_so_star, _Znaj, __builtin_vec=
_new );
#endif
#if VG_WORDSIZE =3D=3D 8
ALLOC_or_BOMB(m_libstc_plus_plus_star, _Znam, __builtin_vec=
_new );
- ALLOC_or_BOMB(m_libc_dot_so_dot_6, _Znam, __builtin_vec=
_new );
+ ALLOC_or_BOMB(m_libc_dot_so_star, _Znam, __builtin_vec_=
new );
#endif
=20
=20
@@ -207,11 +207,11 @@
// operator new[](unsigned long, std::nothrow_t const&), GNU mangling, 6=
4-bit
#if VG_WORDSIZE =3D=3D 4
ALLOC_or_NULL(m_libstc_plus_plus_star, _ZnajRKSt9nothrow_t, __builtin_v=
ec_new );
- ALLOC_or_NULL(m_libc_dot_so_dot_6, _ZnajRKSt9nothrow_t, __builtin_v=
ec_new );
+ ALLOC_or_NULL(m_libc_dot_so_star, _ZnajRKSt9nothrow_t, __builtin_v=
ec_new );
#endif
#if VG_WORDSIZE =3D=3D 8
ALLOC_or_NULL(m_libstc_plus_plus_star, _ZnamRKSt9nothrow_t, __builtin_v=
ec_new );
- ALLOC_or_NULL(m_libc_dot_so_dot_6, _ZnamRKSt9nothrow_t, __builtin_v=
ec_new );
+ ALLOC_or_NULL(m_libc_dot_so_star, _ZnamRKSt9nothrow_t, __builtin_v=
ec_new );
#endif
=20
=20
@@ -232,33 +232,33 @@
=20
// free
FREE(m_libstc_plus_plus_star, free, free );
-FREE(m_libc_dot_so_dot_6, free, free );
+FREE(m_libc_dot_so_star, free, free );
=20
// cfree
FREE(m_libstc_plus_plus_star, cfree, free );
-FREE(m_libc_dot_so_dot_6, cfree, free );
+FREE(m_libc_dot_so_star, cfree, free );
=20
// do we really need these?
FREE(m_libstc_plus_plus_star, __builtin_delete, __builtin_delete );
-FREE(m_libc_dot_so_dot_6, __builtin_delete, __builtin_delete );
+FREE(m_libc_dot_so_star, __builtin_delete, __builtin_delete );
=20
// operator delete(void*), GNU mangling
FREE(m_libstc_plus_plus_star, _ZdlPv, __builtin_delete );
-FREE(m_libc_dot_so_dot_6, _ZdlPv, __builtin_delete );
+FREE(m_libc_dot_so_star, _ZdlPv, __builtin_delete );
=20
// operator delete(void*, std::nothrow_t const&), GNU mangling
FREE(m_libstc_plus_plus_star, _ZdlPvRKSt9nothrow_t, __builtin_delete );
-FREE(m_libc_dot_so_dot_6, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+FREE(m_libc_dot_so_star, _ZdlPvRKSt9nothrow_t, __builtin_delete );
=20
// operator delete[](void*), GNU mangling
FREE(m_libstc_plus_plus_star, __builtin_vec_delete, __builtin_vec_delet=
e );
-FREE(m_libc_dot_so_dot_6, __builtin_vec_delete, __builtin_vec_delet=
e );
+FREE(m_libc_dot_so_star, __builtin_vec_delete, __builtin_vec_delet=
e );
FREE(m_libstc_plus_plus_star, _ZdaPv, __builtin_vec_delet=
e );
-FREE(m_libc_dot_so_dot_6, _ZdaPv, __builtin_vec_delet=
e );
+FREE(m_libc_dot_so_star, _ZdaPv, __builtin_vec_delet=
e );
=20
// operator delete[](void*, std::nothrow_t const&), GNU mangling
FREE(m_libstc_plus_plus_star, _ZdaPvRKSt9nothrow_t, __builtin_vec_delet=
e );
-FREE(m_libc_dot_so_dot_6, _ZdaPvRKSt9nothrow_t, __builtin_vec_delet=
e );
+FREE(m_libc_dot_so_star, _ZdaPvRKSt9nothrow_t, __builtin_vec_delet=
e );
=20
=20
#define CALLOC(soname, fnname) \
@@ -276,7 +276,7 @@
return v; \
}
=20
-CALLOC(m_libc_dot_so_dot_6, calloc);
+CALLOC(m_libc_dot_so_star, calloc);
=20
=20
#define REALLOC(soname, fnname) \
@@ -291,9 +291,9 @@
if (ptrV =3D=3D NULL) \
/* We need to call a malloc-like function; so let's use \
one which we know exists. */ \
- return VG_REPLACE_FUNCTION(libcZdsoZd6,malloc) (new_size); \
+ return VG_REPLACE_FUNCTION(libcZdsoZa,malloc) (new_size); \
if (new_size <=3D 0) { \
- VG_REPLACE_FUNCTION(libcZdsoZd6,free)(ptrV); \
+ VG_REPLACE_FUNCTION(libcZdsoZa,free)(ptrV); \
MALLOC_TRACE(" =3D 0"); \
return NULL; \
} \
@@ -303,7 +303,7 @@
return v; \
}
=20
-REALLOC(m_libc_dot_so_dot_6, realloc);
+REALLOC(m_libc_dot_so_star, realloc);
=20
=20
#define MEMALIGN(soname, fnname) \
@@ -329,7 +329,7 @@
return v; \
}
=20
-MEMALIGN(m_libc_dot_so_dot_6, memalign);
+MEMALIGN(m_libc_dot_so_star, memalign);
=20
=20
#define VALLOC(soname, fnname) \
@@ -337,10 +337,10 @@
void* VG_REPLACE_FUNCTION(soname,fnname) ( SizeT size ); \
void* VG_REPLACE_FUNCTION(soname,fnname) ( SizeT size ) \
{ \
- return VG_REPLACE_FUNCTION(libcZdsoZd6,memalign)(VKI_PAGE_SIZE, si=
ze); \
+ return VG_REPLACE_FUNCTION(libcZdsoZa,memalign)(VKI_PAGE_SIZE, siz=
e); \
}
=20
-VALLOC(m_libc_dot_so_dot_6, valloc);
+VALLOC(m_libc_dot_so_star, valloc);
=20
=20
/* Various compatibility wrapper functions, for glibc and libstdc++. */
@@ -355,7 +355,7 @@
return 1; \
}
=20
-MALLOPT(m_libc_dot_so_dot_6, mallopt);
+MALLOPT(m_libc_dot_so_star, mallopt);
=20
=20
#define POSIX_MEMALIGN(soname, fnname) \
@@ -371,7 +371,7 @@
|| (alignment & (alignment - 1)) !=3D 0) \
return VKI_EINVAL; \
\
- mem =3D VG_REPLACE_FUNCTION(libcZdsoZd6,memalign)(alignment, size)=
; \
+ mem =3D VG_REPLACE_FUNCTION(libcZdsoZa,memalign)(alignment, size);=
\
\
if (mem !=3D NULL) { \
*memptr =3D mem; \
@@ -381,7 +381,7 @@
return VKI_ENOMEM; \
}
=20
-POSIX_MEMALIGN(m_libc_dot_so_dot_6, posix_memalign);
+POSIX_MEMALIGN(m_libc_dot_so_star, posix_memalign);
=20
=20
#define MALLOC_USABLE_SIZE(soname, fnname) \
@@ -403,7 +403,7 @@
return pszB; \
}
=20
-MALLOC_USABLE_SIZE(m_libc_dot_so_dot_6, malloc_usable_size);
+MALLOC_USABLE_SIZE(m_libc_dot_so_star, malloc_usable_size);
=20
=20
/* Bomb out if we get any of these. */
@@ -423,11 +423,11 @@
panic(#fnname); \
}
=20
-PANIC(m_libc_dot_so_dot_6, pvalloc);
-PANIC(m_libc_dot_so_dot_6, malloc_stats);
-PANIC(m_libc_dot_so_dot_6, malloc_trim);
-PANIC(m_libc_dot_so_dot_6, malloc_get_state);
-PANIC(m_libc_dot_so_dot_6, malloc_set_state);
+PANIC(m_libc_dot_so_star, pvalloc);
+PANIC(m_libc_dot_so_star, malloc_stats);
+PANIC(m_libc_dot_so_star, malloc_trim);
+PANIC(m_libc_dot_so_star, malloc_get_state);
+PANIC(m_libc_dot_so_star, malloc_set_state);
=20
// mi must be static; if it is auto then Memcheck thinks it is
// uninitialised when used by the caller of this function, because Memch=
eck
@@ -444,7 +444,7 @@
return mi; \
}
=20
-MALLINFO(m_libc_dot_so_dot_6, mallinfo);
+MALLINFO(m_libc_dot_so_star, mallinfo);
=20
=20
/* All the code in here is unused until this function is called */
Modified: trunk/memcheck/mac_replace_strmem.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/mac_replace_strmem.c 2005-10-13 15:29:39 UTC (rev 4915=
)
+++ trunk/memcheck/mac_replace_strmem.c 2005-10-13 15:51:12 UTC (rev 4916=
)
@@ -118,7 +118,7 @@
}
=20
// Some handy Z-encoded names
-#define m_libc_so_6 libcZdsoZd6 // libc.so.6
+#define m_libc_so_star libcZdsoZa // libc.so*
#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
=20
@@ -138,8 +138,8 @@
}
=20
// Apparently rindex() is the same thing as strrchr()
-STRRCHR(m_libc_so_6, strrchr)
-STRRCHR(m_libc_so_6, rindex)
+STRRCHR(m_libc_so_star, strrchr)
+STRRCHR(m_libc_so_star, rindex)
STRRCHR(m_ld_linux_so_2, rindex)
=20
=20
@@ -157,10 +157,10 @@
}
=20
// Apparently index() is the same thing as strchr()
-STRCHR(m_libc_so_6, strchr)
+STRCHR(m_libc_so_star, strchr)
STRCHR(m_ld_linux_so_2, strchr)
STRCHR(m_ld_linux_x86_64_so_2, strchr)
-STRCHR(m_libc_so_6, index)
+STRCHR(m_libc_so_star, index)
STRCHR(m_ld_linux_so_2, index)
STRCHR(m_ld_linux_x86_64_so_2, index)
=20
@@ -186,7 +186,7 @@
return dst_orig; \
}
=20
-STRCAT(m_libc_so_6, strcat)
+STRCAT(m_libc_so_star, strcat)
=20
=20
#define STRNCAT(soname, fnname) \
@@ -212,7 +212,7 @@
return dst_orig; \
}
=20
-STRNCAT(m_libc_so_6, strncat)
+STRNCAT(m_libc_so_star, strncat)
=20
=20
#define STRNLEN(soname, fnname) \
@@ -224,7 +224,7 @@
return i; \
}
=20
-STRNLEN(m_libc_so_6, strnlen)
+STRNLEN(m_libc_so_star, strnlen)
=20
=20
// Note that this replacement often doesn't get used because gcc inlines
@@ -240,7 +240,7 @@
return i; \
}
=20
-STRLEN(m_libc_so_6, strlen)
+STRLEN(m_libc_so_star, strlen)
STRLEN(m_ld_linux_so_2, strlen)
STRLEN(m_ld_linux_x86_64_so_2, strlen)
=20
@@ -266,7 +266,7 @@
return dst_orig; \
}
=20
-STRCPY(m_libc_so_6, strcpy)
+STRCPY(m_libc_so_star, strcpy)
=20
=20
#define STRNCPY(soname, fnname) \
@@ -287,7 +287,7 @@
return dst_orig; \
}
=20
-STRNCPY(m_libc_so_6, strncpy)
+STRNCPY(m_libc_so_star, strncpy)
=20
=20
#define STRNCMP(soname, fnname) \
@@ -308,7 +308,7 @@
} \
}
=20
-STRNCMP(m_libc_so_6, strncmp)
+STRNCMP(m_libc_so_star, strncmp)
=20
=20
#define STRCMP(soname, fnname) \
@@ -329,7 +329,7 @@
return 0; \
}
=20
-STRCMP(m_libc_so_6, strcmp)
+STRCMP(m_libc_so_star, strcmp)
STRCMP(m_ld_linux_x86_64_so_2, strcmp)
=20
=20
@@ -345,7 +345,7 @@
return NULL; \
}
=20
-MEMCHR(m_libc_so_6, memchr)
+MEMCHR(m_libc_so_star, memchr)
=20
=20
#define MEMCPY(soname, fnname) \
@@ -391,7 +391,7 @@
return dst; \
}
=20
-MEMCPY(m_libc_so_6, memcpy)
+MEMCPY(m_libc_so_star, memcpy)
=20
=20
#define MEMCMP(soname, fnname) \
@@ -417,8 +417,8 @@
return 0; \
}
=20
-MEMCMP(m_libc_so_6, memcmp)
-MEMCMP(m_libc_so_6, bcmp)
+MEMCMP(m_libc_so_star, memcmp)
+MEMCMP(m_libc_so_star, bcmp)
=20
=20
/* Copy SRC to DEST, returning the address of the terminating '\0' in
@@ -444,7 +444,7 @@
return dst; \
}
=20
-STPCPY(m_libc_so_6, stpcpy)
+STPCPY(m_libc_so_star, stpcpy)
STPCPY(m_ld_linux_so_2, stpcpy)
STPCPY(m_ld_linux_x86_64_so_2, stpcpy)
=20
@@ -461,7 +461,7 @@
return s; \
}
=20
-MEMSET(m_libc_so_6, memset)
+MEMSET(m_libc_so_star, memset)
=20
=20
#define MEMMOVE(soname, fnname) \
@@ -483,7 +483,7 @@
return dst; \
}
=20
-MEMMOVE(m_libc_so_6, memmove)
+MEMMOVE(m_libc_so_star, memmove)
=20
=20
/* Find the first occurrence of C in S or the final NUL byte. */
@@ -500,7 +500,7 @@
} \
}
=20
-GLIBC232_STRCHRNUL(m_libc_so_6, strchrnul)
+GLIBC232_STRCHRNUL(m_libc_so_star, strchrnul)
=20
=20
/* Find the first occurrence of C in S. */
@@ -516,7 +516,7 @@
} \
}
=20
-GLIBC232_RAWMEMCHR(m_libc_so_6, rawmemchr)
+GLIBC232_RAWMEMCHR(m_libc_so_star, rawmemchr)
=20
=20
/*--------------------------------------------------------------------*/
|
|
From: <sv...@va...> - 2005-10-13 15:29:54
|
Author: tom
Date: 2005-10-13 16:29:39 +0100 (Thu, 13 Oct 2005)
New Revision: 4915
Log:
We can print native word sized values sensibly now...
Modified:
trunk/memcheck/mac_malloc_wrappers.c
Modified: trunk/memcheck/mac_malloc_wrappers.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/mac_malloc_wrappers.c 2005-10-13 12:41:09 UTC (rev 491=
4)
+++ trunk/memcheck/mac_malloc_wrappers.c 2005-10-13 15:29:39 UTC (rev 491=
5)
@@ -158,15 +158,8 @@
// assuming here that the size asked for is not greater than 2^31 byt=
es
// (for 32-bit platforms) or 2^63 bytes (for 64-bit platforms).
if ((SSizeT)sizeB < 0) {
-#if VG_WORDSIZE =3D=3D 4
- VG_(message)(Vg_UserMsg, "Warning: silly arg (%d) to %s()",
- (Int)sizeB, fn );
-#elif VG_WORDSIZE =3D=3D 8
- VG_(message)(Vg_UserMsg, "Warning: silly arg (%lld) to %s()",
- (Long)sizeB, fn );
-#else
-# error Unexpected word size
-#endif
+ VG_(message)(Vg_UserMsg, "Warning: silly arg (%ld) to %s()",
+ (SSizeT)sizeB, fn );
return True;
}
return False;
@@ -175,15 +168,8 @@
static Bool complain_about_silly_args2(SizeT n, SizeT sizeB)
{
if ((SSizeT)n < 0 || (SSizeT)sizeB < 0) {
-#if VG_WORDSIZE =3D=3D 4
- VG_(message)(Vg_UserMsg, "Warning: silly args (%d,%d) to calloc()"=
,
- (Int)n, (Int)sizeB);
-#elif VG_WORDSIZE =3D=3D 8
- VG_(message)(Vg_UserMsg, "Warning: silly args (%lld,%lld) to callo=
c()",
- (Long)n, (Long)sizeB);
-#else
-# error Unexpected word size
-#endif
+ VG_(message)(Vg_UserMsg, "Warning: silly args (%ld,%ld) to calloc(=
)",
+ (SSizeT)n, (SSizeT)sizeB);
return True;
}
return False;
|
|
From: Nicholas N. <nj...@cs...> - 2005-10-13 12:53:13
|
On Thu, 13 Oct 2005, Josef Weidendorfer wrote: > On Thursday 13 October 2005 03:21, Paul Mackerras wrote: >> The multi-way set associative caches that I have seen actually use a >> pseudo-LRU scheme that uses a binary tree, with 1 bit per node, where >> [...] > > So you wouldn't shuffle around the tags in the set, but update > a bit field? I suppose these needs an additional indirection for > the most common case (checking MRU), but it could be worth it as > only the bitfield has to be updated. > Another problem is how to do this bit shuffling with a variable > associativity. If this part of the simulation is taking a lot of time (and I'd like to see profiling evidence) I'd suggest keeping the current algorithm and having several specialised versions, for associativities of 1, 2, 4, and 8. It should be ugly but doable with some macro magic. Nick |
|
From: <sv...@va...> - 2005-10-13 12:41:18
|
Author: sewardj
Date: 2005-10-13 13:41:09 +0100 (Thu, 13 Oct 2005)
New Revision: 4914
Log:
C90 fixes.
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-10-12 16:45:17 U=
TC (rev 4913)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-10-13 12:41:09 U=
TC (rev 4914)
@@ -106,7 +106,10 @@
*/
static void run_a_thread_NORETURN ( Word tidW )
{
- ThreadId tid =3D (ThreadId)tidW;
+ Int c;
+ VgSchedReturnCode src;
+ ThreadState* tst;
+ ThreadId tid =3D (ThreadId)tidW;
=20
VG_(debugLog)(1, "syswrap-ppc32-linux",=20
"run_a_thread_NORETURN(tid=3D%lld): "
@@ -114,14 +117,14 @@
(ULong)tidW);
=20
/* Run the thread all the way through. */
- VgSchedReturnCode src =3D ML_(thread_wrapper)(tid); =20
+ src =3D ML_(thread_wrapper)(tid); =20
=20
VG_(debugLog)(1, "syswrap-ppc32-linux",=20
"run_a_thread_NORETURN(tid=3D%lld): "
"ML_(thread_wrapper) done\n",
(ULong)tidW);
=20
- Int c =3D VG_(count_living_threads)();
+ c =3D VG_(count_living_threads)();
vg_assert(c >=3D 1); /* stay sane */
=20
if (c =3D=3D 1) {
@@ -144,7 +147,7 @@
(ULong)tidW);
=20
/* OK, thread is dead, but others still exist. Just exit. */
- ThreadState *tst =3D VG_(get_ThreadState)(tid);
+ tst =3D VG_(get_ThreadState)(tid);
=20
/* This releases the run lock */
VG_(exit_thread)(tid);
@@ -237,10 +240,11 @@
*/
void VG_(main_thread_wrapper_NORETURN)(ThreadId tid)
{
+ Addr sp;
VG_(debugLog)(1, "syswrap-ppc32-linux",=20
"entering VG_(main_thread_wrapper_NORETURN)\n");
=20
- Addr sp =3D allocstack(tid);
+ sp =3D allocstack(tid);
=20
/* make a stack frame */
sp -=3D 16;
|
|
From: Josef W. <Jos...@gm...> - 2005-10-13 08:59:40
|
On Thursday 13 October 2005 03:21, Paul Mackerras wrote: > The multi-way set associative caches that I have seen actually use a > pseudo-LRU scheme that uses a binary tree, with 1 bit per node, where > the ways are the leaves of the tree (so the tree has lg(N)+1 levels > for an N-way cache). Updating the tree for an access (i.e. marking > one way as most recently used) involves setting 1 bit at level of the > tree (except for the leaves). Finding the "LRU" element involves > traversing the tree from the top down; the bit on each interior node > tells you whether to go left or right from that node. The MRU update > involves setting each of the bits on the path from the root to the > leaf being accessed to point away from the path down to the leaf. It > doesn't do exactly LRU but it does a good approximation and it is easy > to implement. So you wouldn't shuffle around the tags in the set, but update a bit field? I suppose these needs an additional indirection for the most common case (checking MRU), but it could be worth it as only the bitfield has to be updated. Another problem is how to do this bit shuffling with a variable associativity. Still, if we do this, we have to make it clear to cachegrind users that we use another replacement strategy, i.e. hit/miss numbers change slightly. Josef |
|
From: <sv...@va...> - 2005-10-13 04:54:41
|
Author: njn Date: 2005-10-13 05:54:32 +0100 (Thu, 13 Oct 2005) New Revision: 216 Log: Update info about 3.0 line and PPC32. Modified: trunk/devel/cvs_svn.html Modified: trunk/devel/cvs_svn.html =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/devel/cvs_svn.html 2005-10-10 11:42:08 UTC (rev 215) +++ trunk/devel/cvs_svn.html 2005-10-13 04:54:32 UTC (rev 216) @@ -36,20 +36,13 @@ To build the checked out code, follow the instructions in the <code>README</code> file that the checkout should give you.</p> =20 -<p><b>Note:</b> as of late June 2005, the 3.0 line has seen great -upheaval. Nonetheless, it builds and works well on x86/Linux <b>and -AMD64/Linux</b> and is eminently usable. It also has some functional -improvements over the current 2.4.0 release, mostly in Memcheck's handli= ng -of SSE/SSE2 code. +<p><b>Note:</b> as of October 2005, the 3.0 line works well on x86/Linux +<b>and AMD64/Linux</b>. On <b>PPC32/Linux</b> it works reasonably well +and is under active development. If you are interested in PPC32/Linux, +the code should be stable enough to be worth trying out. </p> =20 -<p>On PPC32/Linux it is just coming to life, but cannot run anything mor= e -than tiny programs. We expect this will improve rapidly. For the time -being, however, don't bother to try building on PPC32/Linux unless you a= re a -die-hard developer and are prepared for serious breakage. -</p> =20 - <div class=3D"hr_brown"><hr/></div> <h2>The old Valgrind-2.4 line</h2> =20 |
|
From: <js...@ac...> - 2005-10-13 02:51:53
|
Nightly build on phoenix ( SuSE 9.1 ) started at 2005-10-13 03:30:00 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 190 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <to...@co...> - 2005-10-13 02:40:13
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2005-10-13 03:30:06 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 == 192 tests, 11 stderr failures, 4 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/map_unmap (stdout) none/tests/map_unmap (stderr) none/tests/mremap2 (stdout) none/tests/sigstackgrowth (stdout) none/tests/sigstackgrowth (stderr) none/tests/stackgrowth (stdout) none/tests/stackgrowth (stderr) none/tests/syscall-restart2 (stderr) none/tests/x86/int (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 == 192 tests, 12 stderr failures, 5 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/map_unmap (stdout) none/tests/map_unmap (stderr) none/tests/mremap2 (stdout) none/tests/pth_atfork1 (stdout) none/tests/pth_atfork1 (stderr) none/tests/sigstackgrowth (stdout) none/tests/sigstackgrowth (stderr) none/tests/stackgrowth (stdout) none/tests/stackgrowth (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Oct 13 03:35:09 2005 --- new.short Thu Oct 13 03:40:05 2005 *************** *** 8,13 **** ! == 192 tests, 12 stderr failures, 5 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) - memcheck/tests/pointer-trace (stderr) memcheck/tests/weirdioctl (stderr) --- 8,12 ---- ! == 192 tests, 11 stderr failures, 4 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/weirdioctl (stderr) *************** *** 19,22 **** none/tests/mremap2 (stdout) - none/tests/pth_atfork1 (stdout) - none/tests/pth_atfork1 (stderr) none/tests/sigstackgrowth (stdout) --- 18,19 ---- *************** *** 25,26 **** --- 22,24 ---- none/tests/stackgrowth (stderr) + none/tests/syscall-restart2 (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-10-13 02:28:21
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-10-13 03:15:04 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 == 191 tests, 16 stderr failures, 0 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/mempool (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-10-13 02:26:26
|
Nightly build on ginetta ( i686, Red Hat 8.0 ) started at 2005-10-13 03:10:12 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 == 191 tests, 4 stderr failures, 0 stdout failures ================= memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-10-13 02:21:54
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2005-10-13 03:10:12 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 == 166 tests, 7 stderr failures, 2 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/as_mmap (stderr) none/tests/as_shm (stdout) none/tests/as_shm (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2005-10-13 02:19:40
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2005-10-13 03:05: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 == 166 tests, 7 stderr failures, 2 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/as_mmap (stderr) none/tests/as_shm (stdout) none/tests/as_shm (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2005-10-13 02:14:59
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-10-13 03:00:04 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 == 166 tests, 8 stderr failures, 1 stdout failure ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/as_mmap (stderr) none/tests/as_shm (stdout) none/tests/as_shm (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) |
|
From: Paul M. <pa...@sa...> - 2005-10-13 01:24:25
|
Nicholas Nethercote writes: > On Wed, 12 Oct 2005, Julian Seward wrote: > > > I did have a different speedup idea however. I don't know if it > > is valid, but might be worth looking into. > > > > cg_sim.c simulates general 2^n-way associative caches. Doing > > that involves endlessly rearranging entries in this set[] array > > when a tag matches set[i] for i > 0. In that case (which > > is the second most common case after matching set[0]) the > > section set[0 .. i] is rotated to put set[i] at the start. > > > > This seems expensive, and it could be that simply swapping > > set[i] and set[i-1] would be cheaper -- it would remove the > > loop setup/control overhead whilst still bringing a popular > > line to the top quickly given a sequence of references to it. > > > > What I can't figure out is if this would change the actual > > simulated behaviour or not. > > Sounds like it would -- it wouldn't be LRU any more. Well, it depends on how the code chooses a line to cast out. If the algorithm is to pick set[N-1], then maybe the change to the algorithm would change the actual simulated behaviour. If the cast-out algorithm doesn't depend on the order of the entries, then moving them around is just an optimization. The multi-way set associative caches that I have seen actually use a pseudo-LRU scheme that uses a binary tree, with 1 bit per node, where the ways are the leaves of the tree (so the tree has lg(N)+1 levels for an N-way cache). Updating the tree for an access (i.e. marking one way as most recently used) involves setting 1 bit at level of the tree (except for the leaves). Finding the "LRU" element involves traversing the tree from the top down; the bit on each interior node tells you whether to go left or right from that node. The MRU update involves setting each of the bits on the path from the root to the leaf being accessed to point away from the path down to the leaf. It doesn't do exactly LRU but it does a good approximation and it is easy to implement. Regards, Paul. |