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
(9) |
2
(7) |
3
(15) |
4
(14) |
|
5
(12) |
6
(18) |
7
(16) |
8
(13) |
9
(14) |
10
(20) |
11
(26) |
|
12
(14) |
13
(25) |
14
(20) |
15
(15) |
16
(14) |
17
(13) |
18
(12) |
|
19
(8) |
20
(16) |
21
(15) |
22
(37) |
23
(15) |
24
(18) |
25
(12) |
|
26
(8) |
27
(13) |
28
(12) |
|
|
|
|
|
From: Bryan M. <om...@br...> - 2006-02-17 23:34:59
|
Chaps,
finally got some time to work on Omega again and found what stops it
from working with optimised code (debug code is fine for some reason):
Index: priv/guest-x86/toIR.c
===================================================================
--- priv/guest-x86/toIR.c (revision 1574)
+++ priv/guest-x86/toIR.c (working copy)
@@ -11330,8 +11330,8 @@
t1 = newTemp(szToITy(sz)); t2 = newTemp(Ity_I32);
assign(t2, getIReg(4, R_ESP));
assign(t1, loadLE(szToITy(sz),mkexpr(t2)));
+ putIReg(sz, opc-0x58, mkexpr(t1));
putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(t2), mkU32(sz)));
- putIReg(sz, opc-0x58, mkexpr(t1));
DIP("pop%c %s\n", nameISize(sz), nameIReg(sz,opc-0x58));
break;
That little patch reverses the order of assignments to sim cpu registers
so that when you do a pop this happens:
ESP -> temp2
popped value -> temp1
temp1 -> sim cpu register
(calc new stack value from temp 2) -> ESP
instead of:
ESP -> temp2
popped value -> temp1
(calc new stack value from temp 2) -> ESP
temp1 -> sim cpu register
Is this an acceptable change? Is there another way of doing this? Does
this break anyone else?
The reason I need this for omega is that the value is read from the
stack but the stack content is invalidated (causing the "last pointer"
that was on the stack to die, generating a false leak report) before the
"last pointer" becomes visible in a client register. This way around,
the "last pointer" gets a new reference (a client register) before the
old one on the stack dies.
I would also need this for the other architectures but only have x86 to
play on at home and won't be at work until Monday.
Comments welcome!
Bryan "Brain Murders" Meredith
|
|
From: Julian S. <js...@ac...> - 2006-02-17 13:36:38
|
On Friday 17 February 2006 06:24, Xin Shen wrote: > Looks like valgrind doesn't check if a variable in stack is initialized > except passing into a system call. Even we define a variable inside main() > function, the variable should exist in the > stack, Not really. On ppc and other cpus with lots of registers, local variables often live in registers. So whether memcheck complains about them being undefined really depends on what the previous status of the register was. Fortunately gcc is good at pointing out local scalars which might be used uninitialised, so in practice this is not much of a problem. J > so if we pass this varible to the return of main(), the > uninitialized error will be reported. > > Right? > Xin > > > Message: 1 > > > Date: Wed, 15 Feb 2006 17:14:49 -0800 > > From: John Reiser <jreiser@BitWagon.com> > > Organization: - > > To: val...@li... > > Subject: Re: [Valgrind-developers] missing unitialized error or > > misunderstanding? > > > > Dave Nomura wrote: > > > I was creating an example for a valgrind ppc demo and was surprised to > > > see that a dereference of an uninitialized global data variable did not > > > result in an error from valgrind, but when the same variable was > > > propagated to exit() via the return value of main() the error was > > > detected. Is this a bug or am I misunderstanding what should be > > > happening? > > > > Global data is always initialized; it can never be uninitialized > > except via explicit copying from some other uninitialized data. > > > > If the source code contains no explicit initialization: > > int foo; /* at top level (file scope) */ > > then as far as guaranteed values are concerned it is equivalent to: > > int foo = 0; > > The first case (no explicit initialization) resides in .bss > > which is cleared to zero upon instantiation by the kernel or by > > the runtime module loader ld-linux.so. The second case (explicit > > initialization) resides in .data, except that some recent compiler > > tools put explicit initialization to 0 into .bss because in many > > cases it is an optimization (of space in the filesystem). However, > > the behavior with respect to data caches at runtime might be different. > > > > -- > > > > > > --__--__-- > > > > Message: 2 > > Date: Thu, 16 Feb 2006 13:52:34 +1100 (EST) > > From: Nicholas Nethercote <nj...@cs...> > > To: John Reiser <jreiser@BitWagon.com> > > cc: val...@li... > > Subject: Re: [Valgrind-developers] missing unitialized error or > > misunderstanding? > > > > On Wed, 15 Feb 2006, John Reiser wrote: > > >> I was creating an example for a valgrind ppc demo and was surprised to > > >> see that a dereference of an uninitialized global data variable did > > >> not result in an error from valgrind, but when the same variable was > > >> propagated to exit() via the return value of main() the error was > > >> detected. Is this a bug or am I misunderstanding what should be > > >> happening? > > > > > > Global data is always initialized; it can never be uninitialized > > > except via explicit copying from some other uninitialized data. > > > > John is right. Also, if the global variable became uninitialized > > somehow, it's possible that the dereference wasn't complained about > > because it didn't > > affect the program's behaviour -- ie. it wasn't used as a pointer, or as > > input to a system call, or in a conditional branch. For example, just > > copying around uninitialized data doesn't elicit complaints from > > Memcheck. See http://www.valgrind.org/docs/memcheck2005.pdf for details. > > > > Nick |
|
From: <sv...@va...> - 2006-02-17 11:42:25
|
Author: njn
Date: 2006-02-17 11:42:18 +0000 (Fri, 17 Feb 2006)
New Revision: 5655
Log:
Minor change in where a variable is assigned.
Modified:
branches/COMPVBITS/memcheck/mc_main.c
Modified: branches/COMPVBITS/memcheck/mc_main.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
--- branches/COMPVBITS/memcheck/mc_main.c 2006-02-17 10:56:34 UTC (rev 56=
54)
+++ branches/COMPVBITS/memcheck/mc_main.c 2006-02-17 11:42:18 UTC (rev 56=
55)
@@ -910,7 +910,8 @@
static void set_address_range_perms ( Addr a, SizeT lenT, UWord vabits16=
,
UWord dsm_num )
{
- UWord vabits2, sm_off, sm_off16;
+ UWord sm_off, sm_off16;
+ UWord vabits2 =3D vabits16 & 0x3;
SizeT lenA, lenB, len_to_next_secmap;
Addr aNext;
SecMap* sm;
@@ -943,7 +944,6 @@
{
// Endianness doesn't matter here because all bytes are being set =
to
// the same value.
- UWord vabits2 =3D vabits16 & 0x3;
SizeT i;
for (i =3D 0; i < lenT; i++) {
set_vabits2(a + i, vabits2);
@@ -958,8 +958,6 @@
to use (part of the space-compression scheme). */
example_dsm =3D &sm_distinguished[dsm_num];
=20
- vabits2 =3D vabits16 & 0x3;
- =20
// We have to handle ranges covering various combinations of partial =
and
// whole sec-maps. Here is how parts 1, 2 and 3 are used in each cas=
e.
// Cases marked with a '*' are common.
|
|
From: <sv...@va...> - 2006-02-17 10:56:48
|
Author: njn
Date: 2006-02-17 10:56:34 +0000 (Fri, 17 Feb 2006)
New Revision: 5654
Log:
Rename V_BITS*_{VALID,INVALID} as V_BITS*_{DEFINED,UNDEFINED}, which is
clearer.
Modified:
branches/COMPVBITS/memcheck/mc_include.h
branches/COMPVBITS/memcheck/mc_main.c
branches/COMPVBITS/memcheck/mc_translate.c
Modified: branches/COMPVBITS/memcheck/mc_include.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/COMPVBITS/memcheck/mc_include.h 2006-02-15 10:45:18 UTC (rev=
5653)
+++ branches/COMPVBITS/memcheck/mc_include.h 2006-02-17 10:56:34 UTC (rev=
5654)
@@ -177,20 +177,20 @@
#define SM_SIZE 65536 /* DO NOT CHANGE */
#define SM_MASK (SM_SIZE-1) /* DO NOT CHANGE */
=20
-#define V_BIT_VALID 0
-#define V_BIT_INVALID 1
+#define V_BIT_DEFINED 0
+#define V_BIT_UNDEFINED 1
=20
-#define V_BITS8_VALID 0
-#define V_BITS8_INVALID 0xFF
+#define V_BITS8_DEFINED 0
+#define V_BITS8_UNDEFINED 0xFF
=20
-#define V_BITS16_VALID 0
-#define V_BITS16_INVALID 0xFFFF
+#define V_BITS16_DEFINED 0
+#define V_BITS16_UNDEFINED 0xFFFF
=20
-#define V_BITS32_VALID 0
-#define V_BITS32_INVALID 0xFFFFFFFF
+#define V_BITS32_DEFINED 0
+#define V_BITS32_UNDEFINED 0xFFFFFFFF
=20
-#define V_BITS64_VALID 0ULL
-#define V_BITS64_INVALID 0xFFFFFFFFFFFFFFFFULL
+#define V_BITS64_DEFINED 0ULL
+#define V_BITS64_UNDEFINED 0xFFFFFFFFFFFFFFFFULL
=20
=20
/*------------------------------------------------------------*/
Modified: branches/COMPVBITS/memcheck/mc_main.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
--- branches/COMPVBITS/memcheck/mc_main.c 2006-02-15 10:45:18 UTC (rev 56=
53)
+++ branches/COMPVBITS/memcheck/mc_main.c 2006-02-17 10:56:34 UTC (rev 56=
54)
@@ -566,10 +566,10 @@
// Addressable. Convert in-register format to in-memory format.
// Also remove any existing sec V bit entry for the byte if no
// longer necessary.
- if ( V_BITS8_VALID =3D=3D vbits8 ) { vabits2 =3D VA_BITS2_R=
EADABLE; }
- else if ( V_BITS8_INVALID =3D=3D vbits8 ) { vabits2 =3D VA_BITS2_W=
RITABLE; }
- else { vabits2 =3D VA_BITS2_OTHER=
;
- set_sec_vbits8(a, vbits8);=
}
+ if ( V_BITS8_DEFINED =3D=3D vbits8 ) { vabits2 =3D VA_BITS2=
_READABLE; }
+ else if ( V_BITS8_UNDEFINED =3D=3D vbits8 ) { vabits2 =3D VA_BITS2=
_WRITABLE; }
+ else { vabits2 =3D VA_BITS2_OTH=
ER;
+ set_sec_vbits8(a, vbits8=
); }
set_vabits2(a, vabits2);
=20
} else {
@@ -590,10 +590,10 @@
UChar vabits2 =3D get_vabits2(a);
=20
// Convert the in-memory format to in-register format.
- if ( VA_BITS2_READABLE =3D=3D vabits2 ) { *vbits8 =3D V_BITS8_VA=
LID; }
- else if ( VA_BITS2_WRITABLE =3D=3D vabits2 ) { *vbits8 =3D V_BITS8_IN=
VALID; }
+ if ( VA_BITS2_READABLE =3D=3D vabits2 ) { *vbits8 =3D V_BITS8_DE=
FINED; }
+ else if ( VA_BITS2_WRITABLE =3D=3D vabits2 ) { *vbits8 =3D V_BITS8_UN=
DEFINED; }
else if ( VA_BITS2_NOACCESS =3D=3D vabits2 ) {
- *vbits8 =3D V_BITS8_VALID; // Make V bits defined!
+ *vbits8 =3D V_BITS8_DEFINED; // Make V bits defined!
ok =3D False;
} else {
tl_assert( VA_BITS2_OTHER =3D=3D vabits2 );
@@ -758,7 +758,7 @@
// Shouldn't be fully defined or fully undefined -- those cases shoul=
dn't
// make it to the secondary V bits table.
vbits8 =3D n->vbits8[amod];
- tl_assert(V_BITS8_VALID !=3D vbits8 && V_BITS8_INVALID !=3D vbits8);
+ tl_assert(V_BITS8_DEFINED !=3D vbits8 && V_BITS8_UNDEFINED !=3D vbits=
8);
return vbits8;
}
=20
@@ -769,7 +769,7 @@
SecVBitNode* n =3D VG_(OSet_Lookup)(secVBitTable, &aAligned);
// Shouldn't be fully defined or fully undefined -- those cases shoul=
dn't
// make it to the secondary V bits table.
- tl_assert(V_BITS8_VALID !=3D vbits8 && V_BITS8_INVALID !=3D vbits8);
+ tl_assert(V_BITS8_DEFINED !=3D vbits8 && V_BITS8_UNDEFINED !=3D vbits=
8);
if (n) {
n->vbits8[amod] =3D vbits8; // update
n->last_touched =3D GCs_done;
@@ -780,7 +780,7 @@
n =3D VG_(OSet_AllocNode)(secVBitTable, sizeof(SecVBitNode));
n->a =3D aAligned;
for (i =3D 0; i < BYTES_PER_SEC_VBIT_NODE; i++) {
- n->vbits8[i] =3D V_BITS8_INVALID;
+ n->vbits8[i] =3D V_BITS8_UNDEFINED;
}
n->vbits8[amod] =3D vbits8;
n->last_touched =3D GCs_done;
@@ -826,7 +826,7 @@
valid addresses and Defined for invalid addresses. Iterate over
the bytes in the word, from the most significant down to the
least. */
- ULong vbits64 =3D V_BITS64_INVALID;
+ ULong vbits64 =3D V_BITS64_UNDEFINED;
SSizeT i =3D szB-1; // Must be signed
SizeT n_addrs_bad =3D 0;
Addr ai;
@@ -1793,7 +1793,7 @@
{
UChar area[1024];
tl_assert(size <=3D 1024);
- VG_(memset)(area, V_BITS8_VALID, size);
+ VG_(memset)(area, V_BITS8_DEFINED, size);
VG_(set_shadow_regs_area)( tid, offset, size, area );
}
=20
@@ -1822,7 +1822,7 @@
=20
bad =3D False;
for (i =3D 0; i < size; i++) {
- if (area[i] !=3D V_BITS8_VALID) {
+ if (area[i] !=3D V_BITS8_DEFINED) {
bad =3D True;
break;
}
@@ -2728,9 +2728,9 @@
// addressible.
// Convert V bits from compact memory form to expanded register form.
if (EXPECTED_TAKEN(vabits16 =3D=3D VA_BITS16_READABLE)) {
- return V_BITS64_VALID;
+ return V_BITS64_DEFINED;
} else if (EXPECTED_TAKEN(vabits16 =3D=3D VA_BITS16_WRITABLE)) {
- return V_BITS64_INVALID;
+ return V_BITS64_UNDEFINED;
} else {
/* Slow case: the 8 bytes are not all-readable or all-writable. */
PROF_EVENT(202, "mc_LOADV8-slow2");
@@ -2779,9 +2779,9 @@
/* Handle common case quickly: a is suitably aligned, */
/* is mapped, and is addressible. */
// Convert full V-bits in register to compact 2-bit form.
- if (V_BITS64_VALID =3D=3D vbytes) {
+ if (V_BITS64_DEFINED =3D=3D vbytes) {
((UShort*)(sm->vabits8))[sm_off16] =3D (UShort)VA_BITS16_READAB=
LE;
- } else if (V_BITS64_INVALID =3D=3D vbytes) {
+ } else if (V_BITS64_UNDEFINED =3D=3D vbytes) {
((UShort*)(sm->vabits8))[sm_off16] =3D (UShort)VA_BITS16_WRITAB=
LE;
} else {
/* Slow but general case -- writing partially defined bytes. */
@@ -2834,9 +2834,9 @@
// For 64-bit platforms, set the high 32 bits of retval to 1 (undefin=
ed).
// Almost certainly not necessary, but be paranoid.
if (EXPECTED_TAKEN(vabits8 =3D=3D VA_BITS8_READABLE)) {
- return ((UWord)0xFFFFFFFF00000000ULL | (UWord)V_BITS32_VALID);
+ return ((UWord)0xFFFFFFFF00000000ULL | (UWord)V_BITS32_DEFINED);
} else if (EXPECTED_TAKEN(vabits8 =3D=3D VA_BITS8_WRITABLE)) {
- return ((UWord)0xFFFFFFFF00000000ULL | (UWord)V_BITS32_INVALID);
+ return ((UWord)0xFFFFFFFF00000000ULL | (UWord)V_BITS32_UNDEFINED);
} else {
/* Slow case: the 4 bytes are not all-readable or all-writable. */
PROF_EVENT(222, "mc_LOADV4-slow2");
@@ -2881,7 +2881,7 @@
// Cleverness: sometimes we don't have to write the shadow memory at
// all, if we can tell that what we want to write is the same as what=
is
// already there.
- if (V_BITS32_VALID =3D=3D vbytes) {
+ if (V_BITS32_DEFINED =3D=3D vbytes) {
if (vabits8 =3D=3D (UInt)VA_BITS8_READABLE) {
return;
} else if (!is_distinguished_sm(sm) && VA_BITS8_WRITABLE =3D=3D va=
bits8) {
@@ -2891,7 +2891,7 @@
PROF_EVENT(232, "mc_STOREV4-slow2");
mc_STOREVn_slow( a, 4, (ULong)vbytes, isBigEndian );
}
- } else if (V_BITS32_INVALID =3D=3D vbytes) {
+ } else if (V_BITS32_UNDEFINED =3D=3D vbytes) {
if (vabits8 =3D=3D (UInt)VA_BITS8_WRITABLE) {
return;
} else if (!is_distinguished_sm(sm) && VA_BITS8_READABLE =3D=3D va=
bits8) {
@@ -2915,9 +2915,9 @@
/* Handle common case quickly: a is suitably aligned, */
/* is mapped, and is addressible. */
// Convert full V-bits in register to compact 2-bit form.
- if (V_BITS32_VALID =3D=3D vbytes) {
+ if (V_BITS32_DEFINED =3D=3D vbytes) {
sm->vabits8[sm_off] =3D VA_BITS8_READABLE;
- } else if (V_BITS32_INVALID =3D=3D vbytes) {
+ } else if (V_BITS32_UNDEFINED =3D=3D vbytes) {
sm->vabits8[sm_off] =3D VA_BITS8_WRITABLE;
} else {
/* Slow but general case -- writing partially defined bytes. */
@@ -2969,14 +2969,14 @@
// addressible.
// Convert V bits from compact memory form to expanded register form
// XXX: set the high 16/48 bits of retval to 1 for 64-bit paranoia?
- if (vabits8 =3D=3D VA_BITS8_READABLE) { return V_BITS16_VALID; =
}
- else if (vabits8 =3D=3D VA_BITS8_WRITABLE) { return V_BITS16_INVALID;=
}
+ if (vabits8 =3D=3D VA_BITS8_READABLE) { return V_BITS16_DEFINED;=
}
+ else if (vabits8 =3D=3D VA_BITS8_WRITABLE) { return V_BITS16_UNDEFINE=
D; }
else {
// The 4 (yes, 4) bytes are not all-readable or all-writable, chec=
k
// the two sub-bytes.
UChar vabits4 =3D extract_vabits4_from_vabits8(a, vabits8);
- if (vabits4 =3D=3D VA_BITS4_READABLE) { return V_BITS16_VALID=
; }
- else if (vabits4 =3D=3D VA_BITS4_WRITABLE) { return V_BITS16_INVAL=
ID; }
+ if (vabits4 =3D=3D VA_BITS4_READABLE) { return V_BITS16_DEFIN=
ED; }
+ else if (vabits4 =3D=3D VA_BITS4_WRITABLE) { return V_BITS16_UNDEF=
INED; }
else {
/* Slow case: the two bytes are not all-readable or all-writabl=
e. */
PROF_EVENT(242, "mc_LOADV2-slow2");
@@ -3023,10 +3023,10 @@
/* Handle common case quickly: a is suitably aligned, */
/* is mapped, and is addressible. */
// Convert full V-bits in register to compact 2-bit form.
- if (V_BITS16_VALID =3D=3D vbytes) {
+ if (V_BITS16_DEFINED =3D=3D vbytes) {
insert_vabits4_into_vabits8( a, VA_BITS4_READABLE,
&(sm->vabits8[sm_off]) );
- } else if (V_BITS16_INVALID =3D=3D vbytes) {
+ } else if (V_BITS16_UNDEFINED =3D=3D vbytes) {
insert_vabits4_into_vabits8( a, VA_BITS4_WRITABLE,
&(sm->vabits8[sm_off]) );
} else {
@@ -3078,14 +3078,14 @@
// Handle common case quickly: a is mapped, and the entire
// word32 it lives in is addressible.
// XXX: set the high 24/56 bits of retval to 1 for 64-bit paranoia?
- if (vabits8 =3D=3D VA_BITS8_READABLE) { return V_BITS8_VALID; =
}
- else if (vabits8 =3D=3D VA_BITS8_WRITABLE) { return V_BITS8_INVALID; =
}
+ if (vabits8 =3D=3D VA_BITS8_READABLE) { return V_BITS8_DEFINED; =
}
+ else if (vabits8 =3D=3D VA_BITS8_WRITABLE) { return V_BITS8_UNDEFINED=
; }
else {
// The 4 (yes, 4) bytes are not all-readable or all-writable, chec=
k
// the single byte.
UChar vabits2 =3D extract_vabits2_from_vabits8(a, vabits8);
- if (vabits2 =3D=3D VA_BITS2_READABLE) { return V_BITS8_VALID;=
}
- else if (vabits2 =3D=3D VA_BITS2_WRITABLE) { return V_BITS8_INVALI=
D; }
+ if (vabits2 =3D=3D VA_BITS2_READABLE) { return V_BITS8_DEFINE=
D; }
+ else if (vabits2 =3D=3D VA_BITS2_WRITABLE) { return V_BITS8_UNDEFI=
NED; }
else {
/* Slow case: the byte is not all-readable or all-writable. */
PROF_EVENT(262, "mc_LOADV1-slow2");
@@ -3123,10 +3123,10 @@
/* Handle common case quickly: a is mapped, the entire word32 it
lives in is addressible. */
// Convert full V-bits in register to compact 2-bit form.
- if (V_BITS8_VALID =3D=3D vbyte) {
+ if (V_BITS8_DEFINED =3D=3D vbyte) {
insert_vabits2_into_vabits8( a, VA_BITS2_READABLE,
&(sm->vabits8[sm_off]) );
- } else if (V_BITS8_INVALID =3D=3D vbyte) {
+ } else if (V_BITS8_UNDEFINED =3D=3D vbyte) {
insert_vabits2_into_vabits8( a, VA_BITS2_WRITABLE,
&(sm->vabits8[sm_off]) );
} else {
@@ -3228,7 +3228,7 @@
ok =3D get_vbits8(a + i, &vbits8);
tl_assert(ok);
// XXX: used to do this, but it's a pain
-// if (V_BITS8_VALID !=3D vbits8)
+// if (V_BITS8_DEFINED !=3D vbits8)
// mc_record_value_error(tid, 1);
((UChar*)vbits)[i] =3D vbits8;
}
@@ -3303,10 +3303,10 @@
Int i;
SecMap* sm;
=20
- tl_assert(V_BIT_INVALID =3D=3D 1);
- tl_assert(V_BIT_VALID =3D=3D 0);
- tl_assert(V_BITS8_INVALID =3D=3D 0xFF);
- tl_assert(V_BITS8_VALID =3D=3D 0);
+ tl_assert(V_BIT_UNDEFINED =3D=3D 1);
+ tl_assert(V_BIT_DEFINED =3D=3D 0);
+ tl_assert(V_BITS8_UNDEFINED =3D=3D 0xFF);
+ tl_assert(V_BITS8_DEFINED =3D=3D 0);
=20
/* Build the 3 distinguished secondaries */
sm =3D &sm_distinguished[SM_DIST_NOACCESS];
Modified: branches/COMPVBITS/memcheck/mc_translate.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
--- branches/COMPVBITS/memcheck/mc_translate.c 2006-02-15 10:45:18 UTC (r=
ev 5653)
+++ branches/COMPVBITS/memcheck/mc_translate.c 2006-02-17 10:56:34 UTC (r=
ev 5654)
@@ -2528,11 +2528,11 @@
// shadow computation ops that precede it.
if (!MC_(clo_undef_value_errors)) {
switch (ty) {
- case Ity_V128: c =3D IRConst_V128(V_BITS16_VALID); break; // V1=
28 weirdness
- case Ity_I64: c =3D IRConst_U64 (V_BITS64_VALID); break;
- case Ity_I32: c =3D IRConst_U32 (V_BITS32_VALID); break;
- case Ity_I16: c =3D IRConst_U16 (V_BITS16_VALID); break;
- case Ity_I8: c =3D IRConst_U8 (V_BITS8_VALID); break;
+ case Ity_V128: c =3D IRConst_V128(V_BITS16_DEFINED); break; // =
V128 weirdness
+ case Ity_I64: c =3D IRConst_U64 (V_BITS64_DEFINED); break;
+ case Ity_I32: c =3D IRConst_U32 (V_BITS32_DEFINED); break;
+ case Ity_I16: c =3D IRConst_U16 (V_BITS16_DEFINED); break;
+ case Ity_I8: c =3D IRConst_U8 (V_BITS8_DEFINED); break;
default: VG_(tool_panic)("memcheck:do_shadow_Store(LE)");
}
vdata =3D IRExpr_Const( c );
|
|
From: <js...@ac...> - 2006-02-17 09:29:41
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-02-17 02:00:01 GMT 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 == 192 tests, 11 stderr failures, 5 stdout failures ================= memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/stack_changes (stdout) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: Xin S. <sh...@gm...> - 2006-02-17 06:24:06
|
Looks like valgrind doesn't check if a variable in stack is initialized except passing into a system call. Even we define a variable inside main() function, the variable should exist in the stack, so if we pass this varible to the return of main(), the uninitialize= d error will be reported. Right? Xin Message: 1 > Date: Wed, 15 Feb 2006 17:14:49 -0800 > From: John Reiser <jreiser@BitWagon.com> > Organization: - > To: val...@li... > Subject: Re: [Valgrind-developers] missing unitialized error or > misunderstanding? > > Dave Nomura wrote: > > I was creating an example for a valgrind ppc demo and was surprised to > > see that a dereference of an uninitialized global data variable did not > > result in an error from valgrind, but when the same variable was > > propagated to exit() via the return value of main() the error was > > detected. Is this a bug or am I misunderstanding what should be > > happening? > > Global data is always initialized; it can never be uninitialized > except via explicit copying from some other uninitialized data. > > If the source code contains no explicit initialization: > int foo; /* at top level (file scope) */ > then as far as guaranteed values are concerned it is equivalent to: > int foo =3D 0; > The first case (no explicit initialization) resides in .bss > which is cleared to zero upon instantiation by the kernel or by > the runtime module loader ld-linux.so. The second case (explicit > initialization) resides in .data, except that some recent compiler > tools put explicit initialization to 0 into .bss because in many > cases it is an optimization (of space in the filesystem). However, > the behavior with respect to data caches at runtime might be different. > > -- > > > --__--__-- > > Message: 2 > Date: Thu, 16 Feb 2006 13:52:34 +1100 (EST) > From: Nicholas Nethercote <nj...@cs...> > To: John Reiser <jreiser@BitWagon.com> > cc: val...@li... > Subject: Re: [Valgrind-developers] missing unitialized error or > misunderstanding? > > On Wed, 15 Feb 2006, John Reiser wrote: > > >> I was creating an example for a valgrind ppc demo and was surprised to > >> see that a dereference of an uninitialized global data variable did no= t > >> result in an error from valgrind, but when the same variable was > >> propagated to exit() via the return value of main() the error was > >> detected. Is this a bug or am I misunderstanding what should be > >> happening? > > > > Global data is always initialized; it can never be uninitialized > > except via explicit copying from some other uninitialized data. > > John is right. Also, if the global variable became uninitialized somehow= , > it's possible that the dereference wasn't complained about because it > didn't > affect the program's behaviour -- ie. it wasn't used as a pointer, or as > input to a system call, or in a conditional branch. For example, just > copying around uninitialized data doesn't elicit complaints from Memcheck= . > See http://www.valgrind.org/docs/memcheck2005.pdf for details. > > Nick > > |
|
From: <js...@ac...> - 2006-02-17 03:57:36
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2006-02-17 04:40:00 CET 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 == 197 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) |
|
From: <js...@ac...> - 2006-02-17 03:57:31
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-02-17 03:30:01 GMT 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 == 223 tests, 7 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <to...@co...> - 2006-02-17 03:44:11
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2006-02-17 03:30:06 GMT 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 == 225 tests, 8 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-02-17 03:30:50
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-02-17 03:15:03 GMT 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 == 224 tests, 21 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) memcheck/tests/badjump (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/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) memcheck/tests/xml1 (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-02-17 03:24:03
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2006-02-17 03:10:08 GMT 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 == 245 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-02-17 03:21:14
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2006-02-17 03:05:13 GMT 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 == 245 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-02-17 03:19:16
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-02-17 03:00:03 GMT 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 == 245 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |