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
(10) |
2
(22) |
3
(15) |
4
(14) |
5
(8) |
6
(10) |
7
(14) |
|
8
(9) |
9
(10) |
10
(21) |
11
(16) |
12
(17) |
13
(15) |
14
(8) |
|
15
(12) |
16
(8) |
17
(44) |
18
(24) |
19
(29) |
20
(29) |
21
(17) |
|
22
(17) |
23
(16) |
24
(18) |
25
(16) |
26
(15) |
27
(16) |
28
(11) |
|
29
(11) |
30
(10) |
31
(12) |
|
|
|
|
|
From: Stephen M.
|
>>>>> "CA-B" == Cerion Armour-Brown <ce...@op...> writes: CA-B> On Wednesday 11 January 2006 19:24, Uttam Pawar wrote: UP> This is little off-topic question but, how did you decode UP> 0x7c0048ce into lvx v0,r0,r9? Is there any general receipe for UP> doing this for ppc platform? CA-B> I don't know how others do it, but i did this: CA-B> create xyz.s: CA-B> gcc -c xyz.s CA-B> hexedit xyz.o CA-B> objdump -d zzz.o CA-B> Anyone else out there got an easier way? Along the same lines, but more automated: % ./dump-insn-ppc.zsh 7c0048ce 0: 7c 00 48 ce lvx v0,r0,r9 % cat dump-insn-ppc.zsh #!/bin/zsh objdump -b binary -m powerpc -EB -D \ =(perl -e 'print pack "N", hex $ARGV[0]' $1) | tail +7 The version of objdump I'm using doesn't like to read from a pipe for some reason, but =(...) is a handy zsh feature that automatically creates and removes a temporary file. The "-EB" (big endian) is needed because I'm actually running this on an x86 (using the Debian "binutils-multiarch" package, a version compiled with support for a whole bunch of architectures besides your native one). -- Stephen |
|
From: <sv...@va...> - 2006-01-11 21:58:49
|
Author: njn
Date: 2006-01-11 21:58:39 +0000 (Wed, 11 Jan 2006)
New Revision: 5517
Log:
Add a thorough test of the LOADV*/STOREV* shadow memory access functions.
Added:
branches/COMPVBITS/memcheck/tests/sh-mem.c
branches/COMPVBITS/memcheck/tests/sh-mem.stderr.exp
branches/COMPVBITS/memcheck/tests/sh-mem.vgtest
Modified:
branches/COMPVBITS/memcheck/tests/Makefile.am
Modified: branches/COMPVBITS/memcheck/tests/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/tests/Makefile.am 2006-01-11 21:56:19 UTC=
(rev 5516)
+++ branches/COMPVBITS/memcheck/tests/Makefile.am 2006-01-11 21:58:39 UTC=
(rev 5517)
@@ -82,6 +82,7 @@
realloc1.stderr.exp realloc1.vgtest \
realloc2.stderr.exp realloc2.vgtest \
realloc3.stderr.exp realloc3.vgtest \
+ sh-mem.stderr.exp sh-mem.vgtest \
sigaltstack.stderr.exp sigaltstack.vgtest \
sigkill.stderr.exp sigkill.stderr.exp2 sigkill.stderr.exp3 sigkill.vgte=
st \
signal2.stderr.exp signal2.stdout.exp signal2.vgtest \
@@ -126,6 +127,7 @@
pipe pointer-trace \
post-syscall \
realloc1 realloc2 realloc3 \
+ sh-mem \
sigaltstack signal2 sigprocmask sigkill \
stack_changes stack_switch strchr str_tester \
supp_unknown supp1 supp2 suppfree \
Added: branches/COMPVBITS/memcheck/tests/sh-mem.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/tests/sh-mem.c (r=
ev 0)
+++ branches/COMPVBITS/memcheck/tests/sh-mem.c 2006-01-11 21:58:39 UTC (r=
ev 5517)
@@ -0,0 +1,193 @@
+// This program is a thorough test of the LOADVn/STOREVn shadow memory
+// operations.
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "memcheck/memcheck.h"
+
+// All the sizes here are in *bytes*, not bits.
+
+typedef unsigned char U1;
+typedef unsigned short U2;
+typedef unsigned int U4;
+typedef unsigned long long U8;
+
+typedef float F4;
+typedef double F8;
+
+#define SZB_OF_a 64
+
+// a[] is the array in which we do our loads and stores. =20
+// b[] is another one in which we do some copying.
+U8 a [SZB_OF_a / 8]; // Type is U8 to ensure it's 8-aligned
+U8 b [SZB_OF_a / 8]; // same size as a[]
+
+// XXX: should check the error cases for SET/GET_VBITS also
+
+// For the byte 'x', build a value of 'size' bytes from that byte, eg:
+// size 1 --> x
+// size 2 --> xx
+// size 4 --> xxxx
+// size 8 --> xxxxxxxx
+// where the 0 bits are seen by Memcheck as defined, and the 1 bits are
+// seen as undefined (ie. the value of each bit matches its V bit, ie. t=
he
+// resulting value is the same as its metavalue).
+//
+U8 build(int size, U1 byte)
+{
+ int i;
+ U8 mask =3D 0;
+ U8 shres;
+ U8 res =3D 0xffffffffffffffffULL, res2;
+ VALGRIND_MAKE_WRITABLE(&res, 8);
+ assert(1 =3D=3D size || 2 =3D=3D size || 4 =3D=3D size || 8 =3D=3D si=
ze);
+
+ for (i =3D 0; i < size; i++) {
+ mask <<=3D 8;
+ mask |=3D (U8)byte;
+ }
+
+ res &=3D mask; =20
+ =20
+ // res is now considered partially defined, but we know exactly what =
its
+ // value is (it happens to be the same as its metavalue).
+ =20
+ VALGRIND_GET_VBITS(&res, &shres, 8);
+ res2 =3D res;
+ VALGRIND_MAKE_READABLE(&res2, 8); // avoid the 'undefined' warni=
ng
+ assert(res2 =3D=3D shres);
+ return res;
+}
+
+// Check that all the bytes in a[x..y-1] have their V byte equal to 'byt=
e'.
+// 'str' and 'offset' are only used for printing an error message if
+// something goes wrong.
+void check_all(U4 x, U4 y, U1 byte, char* str, int offset)
+{
+ U1 sh[SZB_OF_a]; // Used for getting a[]'s V bits
+ int i;
+
+ VALGRIND_GET_VBITS(a, sh, sizeof(a));
+ for (i =3D x; i < y; i++) {
+ if ( byte !=3D sh[i] ) {
+ fprintf(stderr, "\n\nFAILURE: %s, offset %d, byte %d -- "
+ "is 0x%x, should be 0x%x\n\n",
+ str, offset, i, sh[i], byte);
+ exit(1);
+ }
+ }
+}
+
+int main(void)
+{
+ int h, i, j;
+ U1 *undefA;
+
+ if (0 =3D=3D RUNNING_ON_VALGRIND) {
+ fprintf(stderr, "error: this program only works when run under Val=
grind\n");
+ exit(1);
+ }
+
+ // Check a[] has the expected alignment, and that it's not too high i=
n
+ // the address space (which would trigger the slow cases in
+ // LOADVn/STOREVn) on 64-bit platforms).
+ assert( 0 =3D=3D (long)a % 8);
+ assert((U1*)a < (U1*)0xefffffff);
+
+ // Check basic types have the expected sizes.
+ assert(1 =3D=3D sizeof(U1));
+ assert(2 =3D=3D sizeof(U2));
+ assert(4 =3D=3D sizeof(U4));
+ assert(8 =3D=3D sizeof(U8));
+
+ // Create an array of values that has all the possible V bit metavalu=
es.
+ // Because 0 represents a defined bit, and because undefA[] is initia=
lly
+ // zeroed, we have the nice property that:
+ //
+ // i =3D=3D undefA[i] =3D=3D V_bits_of(undefA[i])
+ //
+ // which is useful for testing below.
+ undefA =3D calloc(1, 256); // one for each possible undefined=
ness value
+ VALGRIND_MAKE_WRITABLE(undefA, 256);
+ for (i =3D 0; i < 256; i++) {
+ undefA[i] &=3D i;=20
+ }
+
+ // This code does a whole lot of reads and writes of a particular siz=
e
+ // (NNN =3D 1, 2, 4 or 8), with varying alignments, of values with
+ // different not/partially/fully defined metavalues, and checks that =
the
+ // V bits are set in a[] as expected using GET_VBITS.
+ //
+ // 'Ty' is the type of the thing we are copying. It can be an intege=
r
+ // type or an FP type. 'ITy' is the same-sized integer type (and thu=
s
+ // will be the same as 'Ty' if 'ITy' is an integer type). 'ITy' is u=
sed
+ // when doing shifting/masking and stuff like that.
+
+#define DO(NNN, Ty, ITy) \
+ fprintf(stderr, "-- NNN: %d %s %s ------------------------\n", NNN, #=
Ty, #ITy); \
+ /* For all of the alignments from (0..NNN-1), eg. if NNN=3D=3D4, we d=
o */ \
+ /* alignments of 0, 1, 2, 3. */ \
+ for (h =3D 0; h < NNN; h++) { \
+ \
+ size_t n =3D sizeof(a); \
+ size_t nN =3D n / sizeof(Ty); \
+ Ty* aN =3D (Ty*)a; \
+ Ty* bN =3D (Ty*)b; \
+ Ty* aNb =3D (Ty*)(((U1*)aN) + h); /* set offset from a[] */ \
+ Ty* bNb =3D (Ty*)(((U1*)bN) + h); /* set offset from b[] */ \
+ \
+ fprintf(stderr, "h =3D %d (checking %d..%d) ", h, h, n-NNN+h); \
+ \
+ /* For each of the 256 possible V byte values... */ \
+ for (j =3D 0; j < 256; j++) { \
+ /* build the value for i (one of: i, ii, iiii, iiiiiiii) */ \
+ U8 tmp =3D build(NNN, j); \
+ ITy undefN_ITy =3D (ITy)tmp; \
+ Ty* undefN_Ty; \
+ { /* This just checks that no overflow occurred when squeezing =
*/ \
+ /* the output of build() into a variable of type 'Ty'. */ \
+ U8 tmpDef =3D tmp; \
+ ITy undefN_ITyDef =3D undefN_ITy; \
+ VALGRIND_MAKE_READABLE(&tmpDef, 8 ); \
+ VALGRIND_MAKE_READABLE(&undefN_ITyDef, NNN); \
+ assert(tmpDef =3D=3D (U8)undefN_ITyDef); \
+ } \
+ \
+ /* We have to use an array for undefN_Ty -- because if we try t=
o
+ * convert an integer type from build into an FP type with a
+ * straight cast -- eg "float f =3D (float)i" -- the value gets
+ * converted. With this pointer/array nonsense the exact bit
+ * pattern gets used as an FP value unchanged (that FP value is
+ * undoubtedly nonsense, but that's not a problem here). */ \
+ undefN_Ty =3D (Ty*)&undefN_ITy; \
+ if (0 =3D=3D j % 32) fprintf(stderr, "%d...", j); /* progress m=
eter */ \
+ \
+ /* STOREVn. Note that we use the first element of the undefN_T=
y
+ * array, as explained above. */ \
+ for (i =3D 0; i < nN-1; i++) { aNb[i] =3D undefN_Ty[0]; } \
+ check_all(h, n-NNN+h, j, "STOREVn", h); \
+ \
+ /* LOADVn -- by copying the values to one place and then back,=20
+ * we ensure that LOADVn gets exercised. */ \
+ for (i =3D 0; i < nN-1; i++) { bNb[i] =3D aNb[i]; } \
+ for (i =3D 0; i < nN-1; i++) { aNb[i] =3D bNb[i]; } \
+ check_all(h, n-NNN+h, j, "LOADVn", h); \
+ } \
+ fprintf(stderr, "\n"); \
+ }
+
+ // For sizes 4 and 8 we do both integer and floating-point types. Th=
e
+ // reason being that on 32-bit machines just using integer types neve=
r
+ // exercises LOADV8/STOREV8 -- for integer types these loads/stores g=
et
+ // broken into two 32-bit loads/stores.
+ DO(1, U1, U1);
+ DO(2, U2, U2);
+ DO(4, U4, U4);
+ DO(4, F4, U4);
+ DO(8, U8, U8);
+ DO(8, F8, U8);
+ =20
+ return 0;
+}
Added: branches/COMPVBITS/memcheck/tests/sh-mem.stderr.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/tests/sh-mem.stderr.exp =
(rev 0)
+++ branches/COMPVBITS/memcheck/tests/sh-mem.stderr.exp 2006-01-11 21:58:=
39 UTC (rev 5517)
@@ -0,0 +1,33 @@
+-- NNN: 1 U1 U1 ------------------------
+h =3D 0 (checking 0..63) 0...32...64...96...128...160...192...224...
+-- NNN: 2 U2 U2 ------------------------
+h =3D 0 (checking 0..62) 0...32...64...96...128...160...192...224...
+h =3D 1 (checking 1..63) 0...32...64...96...128...160...192...224...
+-- NNN: 4 U4 U4 ------------------------
+h =3D 0 (checking 0..60) 0...32...64...96...128...160...192...224...
+h =3D 1 (checking 1..61) 0...32...64...96...128...160...192...224...
+h =3D 2 (checking 2..62) 0...32...64...96...128...160...192...224...
+h =3D 3 (checking 3..63) 0...32...64...96...128...160...192...224...
+-- NNN: 4 F4 U4 ------------------------
+h =3D 0 (checking 0..60) 0...32...64...96...128...160...192...224...
+h =3D 1 (checking 1..61) 0...32...64...96...128...160...192...224...
+h =3D 2 (checking 2..62) 0...32...64...96...128...160...192...224...
+h =3D 3 (checking 3..63) 0...32...64...96...128...160...192...224...
+-- NNN: 8 U8 U8 ------------------------
+h =3D 0 (checking 0..56) 0...32...64...96...128...160...192...224...
+h =3D 1 (checking 1..57) 0...32...64...96...128...160...192...224...
+h =3D 2 (checking 2..58) 0...32...64...96...128...160...192...224...
+h =3D 3 (checking 3..59) 0...32...64...96...128...160...192...224...
+h =3D 4 (checking 4..60) 0...32...64...96...128...160...192...224...
+h =3D 5 (checking 5..61) 0...32...64...96...128...160...192...224...
+h =3D 6 (checking 6..62) 0...32...64...96...128...160...192...224...
+h =3D 7 (checking 7..63) 0...32...64...96...128...160...192...224...
+-- NNN: 8 F8 U8 ------------------------
+h =3D 0 (checking 0..56) 0...32...64...96...128...160...192...224...
+h =3D 1 (checking 1..57) 0...32...64...96...128...160...192...224...
+h =3D 2 (checking 2..58) 0...32...64...96...128...160...192...224...
+h =3D 3 (checking 3..59) 0...32...64...96...128...160...192...224...
+h =3D 4 (checking 4..60) 0...32...64...96...128...160...192...224...
+h =3D 5 (checking 5..61) 0...32...64...96...128...160...192...224...
+h =3D 6 (checking 6..62) 0...32...64...96...128...160...192...224...
+h =3D 7 (checking 7..63) 0...32...64...96...128...160...192...224...
Added: branches/COMPVBITS/memcheck/tests/sh-mem.vgtest
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/tests/sh-mem.vgtest =
(rev 0)
+++ branches/COMPVBITS/memcheck/tests/sh-mem.vgtest 2006-01-11 21:58:39 U=
TC (rev 5517)
@@ -0,0 +1,2 @@
+prog: sh-mem
+vgopts: -q
|
|
From: <sv...@va...> - 2006-01-11 21:56:24
|
Author: njn
Date: 2006-01-11 21:56:19 +0000 (Wed, 11 Jan 2006)
New Revision: 5516
Log:
Reinstated the SET_VBITS/GET_VBITS client requests.
Modified:
branches/COMPVBITS/memcheck/docs/mc-manual.xml
branches/COMPVBITS/memcheck/mc_main.c
branches/COMPVBITS/memcheck/memcheck.h
Modified: branches/COMPVBITS/memcheck/docs/mc-manual.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/docs/mc-manual.xml 2006-01-11 21:54:19 UT=
C (rev 5515)
+++ branches/COMPVBITS/memcheck/docs/mc-manual.xml 2006-01-11 21:56:19 UT=
C (rev 5516)
@@ -1074,8 +1074,7 @@
you to get and set the V (validity) bits for an address
range. You should probably only set V bits that you have got
with <computeroutput>VALGRIND_GET_VBITS</computeroutput>.
- Only for those who really know what they are doing. Note: currently
- disabled in Valgrind 3.1.0.</para>
+ Only for those who really know what they are doing.</para>
</listitem>
=20
</itemizedlist>
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-01-11 21:54:19 UTC (rev 55=
15)
+++ branches/COMPVBITS/memcheck/mc_main.c 2006-01-11 21:56:19 UTC (rev 55=
16)
@@ -521,7 +521,7 @@
return 0xf & vabits32; // mask out the rest
}
=20
-// Note that these two are only used in slow cases. The fast cases do
+// Note that these four are only used in slow cases. The fast cases do
// clever things like combine the auxmap check (in
// get_secmap_{read,writ}able) with alignment checks.
=20
@@ -542,7 +542,57 @@
return extract_vabits8_from_vabits32(a, vabits32);
}
=20
+// Forward declarations
+static UWord get_sec_vbits8(Addr a);
+static void set_sec_vbits8(Addr a, UWord vbits8);
=20
+// Returns False if there was an addressability error.
+static inline
+Bool set_vbits8 ( Addr a, UChar vbits8 )
+{
+ Bool ok =3D True;
+ UChar vabits8 =3D get_vabits8(a);
+ if ( VA_BITS8_NOACCESS !=3D vabits8 ) {
+ // 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 ) { vabits8 =3D VA_BITS8_R=
EADABLE; }
+ else if ( V_BITS8_INVALID =3D=3D vbits8 ) { vabits8 =3D VA_BITS8_W=
RITABLE; }
+ else { vabits8 =3D VA_BITS8_OTHER=
;
+ set_sec_vbits8(a, vbits8);=
}
+ set_vabits8(a, vabits8);
+
+ } else {
+ // Unaddressable! Do nothing -- when writing to unaddressable
+ // memory it acts as a black hole, and the V bits can never be see=
n
+ // again. So we don't have to write them at all.
+ ok =3D False;
+ }
+ return ok;
+}
+
+// Returns False if there was an addressability error. In that case, we=
put
+// all defined bits into vbits8.
+static inline
+Bool get_vbits8 ( Addr a, UChar* vbits8 )
+{
+ Bool ok =3D True;
+ UChar vabits8 =3D get_vabits8(a);
+
+ // Convert the in-memory format to in-register format.
+ if ( VA_BITS8_READABLE =3D=3D vabits8 ) { *vbits8 =3D V_BITS8_VA=
LID; }
+ else if ( VA_BITS8_WRITABLE =3D=3D vabits8 ) { *vbits8 =3D V_BITS8_IN=
VALID; }
+ else if ( VA_BITS8_NOACCESS =3D=3D vabits8 ) {
+ *vbits8 =3D V_BITS8_VALID; // Make V bits defined!
+ ok =3D False;
+ } else {
+ tl_assert( VA_BITS8_OTHER =3D=3D vabits8 );
+ *vbits8 =3D get_sec_vbits8(a);
+ }
+ return ok;
+}
+
+
/* --------------- Secondary V bit table ------------ */
=20
// This table holds the full V bit pattern for partially-defined bytes
@@ -768,7 +818,8 @@
SizeT n_addrs_bad =3D 0;
Addr ai;
Bool partial_load_exemption_applies;
- UWord vbits8, vabits8;
+ UChar vbits8;
+ Bool ok;
=20
PROF_EVENT(30, "mc_LOADVn_slow");
tl_assert(szB =3D=3D 8 || szB =3D=3D 4 || szB =3D=3D 2 || szB =3D=3D =
1);
@@ -776,17 +827,8 @@
for (i =3D szB-1; i >=3D 0; i--) {
PROF_EVENT(31, "mc_LOADVn_slow(loop)");
ai =3D a+byte_offset_w(szB,bigendian,i);
- vabits8 =3D get_vabits8(ai);
- // Convert the in-memory format to in-register format.
- if ( VA_BITS8_READABLE =3D=3D vabits8 ) { vbits8 =3D V_BITS8_=
VALID; }
- else if ( VA_BITS8_WRITABLE =3D=3D vabits8 ) { vbits8 =3D V_BITS8_=
INVALID; }
- else if ( VA_BITS8_NOACCESS =3D=3D vabits8 ) {
- vbits8 =3D V_BITS8_VALID; // Make V bits defined!
- n_addrs_bad++;
- } else {
- tl_assert( VA_BITS8_OTHER =3D=3D vabits8 );
- vbits8 =3D get_sec_vbits8(ai);
- }
+ ok =3D get_vbits8(ai, &vbits8);
+ if (!ok) n_addrs_bad++;
vbits64 <<=3D 8;=20
vbits64 |=3D vbits8;
}
@@ -820,8 +862,9 @@
void mc_STOREVn_slow ( Addr a, SizeT szB, ULong vbytes, Bool bigendian )
{
SizeT i, n_addrs_bad =3D 0;
- UWord vbits8, vabits8;
+ UChar vbits8;
Addr ai;
+ Bool ok;
=20
PROF_EVENT(35, "mc_STOREVn_slow");
tl_assert(szB =3D=3D 8 || szB =3D=3D 4 || szB =3D=3D 2 || szB =3D=3D =
1);
@@ -831,25 +874,10 @@
location. */
for (i =3D 0; i < szB; i++) {
PROF_EVENT(36, "mc_STOREVn_slow(loop)");
- ai =3D a+byte_offset_w(szB,bigendian,i);
- vbits8 =3D vbytes & 0xff;
- vabits8 =3D get_vabits8(ai);
- if ( VA_BITS8_NOACCESS !=3D vabits8 ) {
- // 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 ) { vabits8 =3D VA_BITS=
8_READABLE; }
- else if ( V_BITS8_INVALID =3D=3D vbits8 ) { vabits8 =3D VA_BITS=
8_WRITABLE; }
- else { vabits8 =3D VA_BITS8_OT=
HER;
- set_sec_vbits8(ai, vbit=
s8); }
- set_vabits8(ai, vabits8);
-
- } else {
- // Unaddressable! Do nothing -- when writing to unaddressable
- // memory it acts as a black hole, and the V bits can never be =
seen
- // again. So we don't have to write them at all.
- n_addrs_bad++;
- }
+ ai =3D a+byte_offset_w(szB,bigendian,i);
+ vbits8 =3D vbytes & 0xff;
+ ok =3D set_vbits8(ai, vbits8);
+ if (!ok) n_addrs_bad++;
vbytes >>=3D 8;
}
=20
@@ -859,52 +887,6 @@
}
=20
=20
-//zz /* Reading/writing of the bitmaps, for aligned word-sized accesses.=
*/
-//zz=20
-//zz static INLINE UChar get_abits4_ALIGNED ( Addr a )
-//zz {
-//zz SecMap* sm;
-//zz UInt sm_off;
-//zz UChar abits8;
-//zz PROF_EVENT(24);
-//zz # ifdef VG_DEBUG_MEMORY
-//zz tl_assert(VG_IS_4_ALIGNED(a));
-//zz # endif
-//zz sm =3D primary_map[PM_IDX(a)];
-//zz sm_off =3D SM_OFF(a);
-//zz abits8 =3D sm->abits[sm_off >> 3];
-//zz abits8 >>=3D (a & 4 /* 100b */); /* a & 4 is either 0 or 4 */
-//zz abits8 &=3D 0x0F;
-//zz return abits8;
-//zz }
-//zz=20
-//zz static UInt INLINE get_vbytes4_ALIGNED ( Addr a )
-//zz {
-//zz SecMap* sm =3D primary_map[PM_IDX(a)];
-//zz UInt sm_off =3D SM_OFF(a);
-//zz PROF_EVENT(25);
-//zz # ifdef VG_DEBUG_MEMORY
-//zz tl_assert(VG_IS_4_ALIGNED(a));
-//zz # endif
-//zz return ((UInt*)(sm->vbyte))[sm_off >> 2];
-//zz }
-//zz=20
-//zz=20
-//zz static void INLINE set_vbytes4_ALIGNED ( Addr a, UInt vbytes )
-//zz {
-//zz SecMap* sm;
-//zz UInt sm_off;
-//zz ENSURE_MAPPABLE(a, "set_vbytes4_ALIGNED");
-//zz sm =3D primary_map[PM_IDX(a)];
-//zz sm_off =3D SM_OFF(a);
-//zz PROF_EVENT(23);
-//zz # ifdef VG_DEBUG_MEMORY
-//zz tl_assert(VG_IS_4_ALIGNED(a));
-//zz # endif
-//zz ((UInt*)(sm->vbyte))[sm_off >> 2] =3D vbytes;
-//zz }
-
-
/*------------------------------------------------------------*/
/*--- Setting permissions over address ranges. ---*/
/*------------------------------------------------------------*/
@@ -3191,79 +3173,72 @@
}
=20
=20
-//zz /*------------------------------------------------------------*/
-//zz /*--- Metadata get/set functions, for client requests. ---*/
-//zz /*------------------------------------------------------------*/
-//zz=20
-//zz /* Copy Vbits for src into vbits. Returns: 1 =3D=3D OK, 2 =3D=3D al=
ignment
-//zz error, 3 =3D=3D addressing error. */
-//zz static Int mc_get_or_set_vbits_for_client (=20
-//zz ThreadId tid,
-//zz Addr dataV,=20
-//zz Addr vbitsV,=20
-//zz SizeT size,=20
-//zz Bool setting /* True <=3D> set vbits, False <=3D> get vbits */=20
-//zz )
-//zz {
-//zz Bool addressibleD =3D True;
-//zz Bool addressibleV =3D True;
-//zz UInt* data =3D (UInt*)dataV;
-//zz UInt* vbits =3D (UInt*)vbitsV;
-//zz SizeT szW =3D size / 4; /* sigh */
-//zz SizeT i;
-//zz UInt* dataP =3D NULL; /* bogus init to keep gcc happy */
-//zz UInt* vbitsP =3D NULL; /* ditto */
-//zz=20
-//zz /* Check alignment of args. */
-//zz if (!(VG_IS_4_ALIGNED(data) && VG_IS_4_ALIGNED(vbits)))
-//zz return 2;
-//zz if ((size & 3) !=3D 0)
-//zz return 2;
-//zz =20
-//zz /* Check that arrays are addressible. */
-//zz for (i =3D 0; i < szW; i++) {
-//zz dataP =3D &data[i];
-//zz vbitsP =3D &vbits[i];
-//zz if (get_abits4_ALIGNED((Addr)dataP) !=3D V_NIBBLE_VALID) {
-//zz addressibleD =3D False;
-//zz break;
-//zz }
-//zz if (get_abits4_ALIGNED((Addr)vbitsP) !=3D V_NIBBLE_VALID) {
-//zz addressibleV =3D False;
-//zz break;
-//zz }
-//zz }
-//zz if (!addressibleD) {
-//zz mc_record_address_error( tid, (Addr)dataP, 4,=20
-//zz setting ? True : False );
-//zz return 3;
-//zz }
-//zz if (!addressibleV) {
-//zz mc_record_address_error( tid, (Addr)vbitsP, 4,=20
-//zz setting ? False : True );
-//zz return 3;
-//zz }
-//zz =20
-//zz /* Do the copy */
-//zz if (setting) {
-//zz /* setting */
-//zz for (i =3D 0; i < szW; i++) {
-//zz if (get_vbytes4_ALIGNED( (Addr)&vbits[i] ) !=3D V_WORD_VAL=
ID)
-//zz mc_record_value_error(tid, 4);
-//zz set_vbytes4_ALIGNED( (Addr)&data[i], vbits[i] );
-//zz }
-//zz } else {
-//zz /* getting */
-//zz for (i =3D 0; i < szW; i++) {
-//zz vbits[i] =3D get_vbytes4_ALIGNED( (Addr)&data[i] );
-//zz set_vbytes4_ALIGNED( (Addr)&vbits[i], V_WORD_VALID );
-//zz }
-//zz }
-//zz=20
-//zz return 1;
-//zz }
+/*------------------------------------------------------------*/
+/*--- Metadata get/set functions, for client requests. ---*/
+/*------------------------------------------------------------*/
=20
+// Nb: this expands the V+A bits out into register-form V bits, even tho=
ugh
+// they're in memory. This is for backward compatibility, and because i=
t's
+// probably what the user wants.
=20
+/* Copy Vbits from/to address 'a'. Returns: 1 =3D=3D OK, 2 =3D=3D alignm=
ent
+ error [no longer used], 3 =3D=3D addressing error. */
+static Int mc_get_or_set_vbits_for_client (=20
+ ThreadId tid,
+ Addr a,=20
+ Addr vbits,=20
+ SizeT szB,=20
+ Bool setting /* True <=3D> set vbits, False <=3D> get vbits */=20
+)
+{
+ SizeT i;
+ Bool ok;
+ UChar vbits8;
+
+ /* Check that arrays are addressible before doing any getting/setting=
. */
+ for (i =3D 0; i < szB; i++) {
+ if (VA_BITS8_NOACCESS =3D=3D get_vabits8(a + i)) {
+ mc_record_address_error( tid, a + i, 1, setting ? True : Fa=
lse );
+ return 3;
+ }
+ if (VA_BITS8_NOACCESS =3D=3D get_vabits8(vbits + i)) {
+ mc_record_address_error( tid, vbits + i, 1, setting ? False : T=
rue );
+ return 3;
+ }
+ }
+
+ /* Do the copy */
+ if (setting) {
+
+ // It's actually a tool ClientReq, but Vg_CoreClientReq is the clo=
sest
+ // thing we have... XXX: actually, mc_check_is_readable() can't ha=
ndle
+ // that...
+ mc_check_is_readable(Vg_CoreClientReq, tid, "SET_VBITS(vbits)",
+ vbits, szB);
+ =20
+ /* setting */
+ for (i =3D 0; i < szB; i++) {
+ ok =3D set_vbits8(a + i, ((UChar*)vbits)[i]);
+ tl_assert(ok);
+ }
+ } else {
+ /* getting */
+ for (i =3D 0; i < szB; i++) {
+ 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)
+// mc_record_value_error(tid, 1);
+ ((UChar*)vbits)[i] =3D vbits8;
+ }
+ // The bytes in vbits[] have now been set, so mark them as such.
+ MC_(make_readable)(vbits, szB);
+ }
+
+ return 1;
+}
+
+
/*------------------------------------------------------------*/
/*--- Detecting leaked (unreachable) malloc'd blocks. ---*/
/*------------------------------------------------------------*/
@@ -3745,22 +3720,22 @@
}
break;
=20
-//zz case VG_USERREQ__GET_VBITS:
-//zz /* Returns: 1 =3D=3D OK, 2 =3D=3D alignment error, 3 =3D=3D=
addressing
-//zz error. */
-//zz /* VG_(printf)("get_vbits %p %p %d\n", arg[1], arg[2], arg=
[3] ); */
-//zz *ret =3D mc_get_or_set_vbits_for_client
-//zz ( tid, arg[1], arg[2], arg[3], False /* get them=
*/ );
-//zz break;
-//zz=20
-//zz case VG_USERREQ__SET_VBITS:
-//zz /* Returns: 1 =3D=3D OK, 2 =3D=3D alignment error, 3 =3D=3D=
addressing
-//zz error. */
-//zz /* VG_(printf)("set_vbits %p %p %d\n", arg[1], arg[2], arg=
[3] ); */
-//zz *ret =3D mc_get_or_set_vbits_for_client
-//zz ( tid, arg[1], arg[2], arg[3], True /* set them =
*/ );
-//zz break;
+ case VG_USERREQ__GET_VBITS:
+ /* Returns: 1 =3D=3D OK, 2 =3D=3D alignment error, 3 =3D=3D add=
ressing
+ error. */
+ /* VG_(printf)("get_vbits %p %p %d\n", arg[1], arg[2], arg[3] )=
; */
+ *ret =3D mc_get_or_set_vbits_for_client
+ ( tid, arg[1], arg[2], arg[3], False /* get them */ )=
;
+ break;
=20
+ case VG_USERREQ__SET_VBITS:
+ /* Returns: 1 =3D=3D OK, 2 =3D=3D alignment error, 3 =3D=3D add=
ressing
+ error. */
+ /* VG_(printf)("set_vbits %p %p %d\n", arg[1], arg[2], arg[3] )=
; */
+ *ret =3D mc_get_or_set_vbits_for_client
+ ( tid, arg[1], arg[2], arg[3], True /* set them */ );
+ break;
+
case VG_USERREQ__COUNT_LEAKS: { /* count leaked bytes */
UWord** argp =3D (UWord**)arg;
// MC_(bytes_leaked) et al were set by the last leak check (or =
zero
@@ -4089,3 +4064,4 @@
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
+
Modified: branches/COMPVBITS/memcheck/memcheck.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/memcheck.h 2006-01-11 21:54:19 UTC (rev 5=
515)
+++ branches/COMPVBITS/memcheck/memcheck.h 2006-01-11 21:56:19 UTC (rev 5=
516)
@@ -211,43 +211,41 @@
}
=20
=20
-/* Get in zzvbits the validity data for the zznbytes starting at
- zzsrc. Return values:
+/* Get the validity data for addresses [zza..zza+zznbytes-1] and copy it
+ into the provided zzvbits array. Return values:
0 if not running on valgrind
1 success
- 2 if zzsrc/zzvbits arrays are not aligned 0 % 4, or
- zznbytes is not 0 % 4.
+ 2 [previously indicated unaligned arrays; these are now allowed=
]
3 if any parts of zzsrc/zzvbits are not addressible.
The metadata is not copied in cases 0, 2 or 3 so it should be
impossible to segfault your system by using this call.
*/
-#define VALGRIND_GET_VBITS(zzsrc,zzvbits,zznbytes) \
+#define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes) \
(__extension__({unsigned int _qzz_res; \
- char* czzsrc =3D (char*)zzsrc; \
+ char* czza =3D (char*)zza; \
char* czzvbits =3D (char*)zzvbits; \
VALGRIND_MAGIC_SEQUENCE(_qzz_res, 0, \
VG_USERREQ__GET_VBITS, \
- czzsrc, czzvbits, zznbytes,0 ); \
+ czza, czzvbits, zznbytes,0 ); \
_qzz_res; \
}))
=20
-/* Apply the validity data in zzvbits to the zznbytes starting at
- zzdst. Return values:
+/* Set the validity data for addresses [zza..zza+zznbytes-1], copying it
+ from the provided zzvbits array. Return values:
0 if not running on valgrind
1 success
- 2 if zzdst/zzvbits arrays are not aligned 0 % 4, or
- zznbytes is not 0 % 4.
- 3 if any parts of zzdst/zzvbits are not addressible.
+ 2 [previously indicated unaligned arrays; these are now allowed=
]
+ 3 if any parts of zza/zzvbits are not addressible.
The metadata is not copied in cases 0, 2 or 3 so it should be
impossible to segfault your system by using this call.
*/
-#define VALGRIND_SET_VBITS(zzdst,zzvbits,zznbytes) \
+#define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes) \
(__extension__({unsigned int _qzz_res; \
- char* czzdst =3D (char*)zzdst; \
+ char* czza =3D (char*)zza; \
char* czzvbits =3D (char*)zzvbits; \
VALGRIND_MAGIC_SEQUENCE(_qzz_res, 0, \
VG_USERREQ__SET_VBITS, \
- czzdst, czzvbits, zznbytes,0 ); \
+ czza, czzvbits, zznbytes,0 ); \
_qzz_res; \
}))
=20
|
|
From: <sv...@va...> - 2006-01-11 21:54:25
|
Author: njn
Date: 2006-01-11 21:54:19 +0000 (Wed, 11 Jan 2006)
New Revision: 5515
Log:
Merge r5500 (obscure LOADV8 bugfix) from trunk.
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-01-11 13:16:35 UTC (rev 55=
14)
+++ branches/COMPVBITS/memcheck/mc_main.c 2006-01-11 21:54:19 UTC (rev 55=
15)
@@ -2721,7 +2721,7 @@
=20
if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,8) )) {
PROF_EVENT(201, "mc_LOADV8-slow1");
- return (UWord)mc_LOADVn_slow( a, 8, isBigEndian );
+ return (ULong)mc_LOADVn_slow( a, 8, isBigEndian );
}
=20
sm =3D get_secmap_readable_low(a);
|
|
From: Cerion Armour-B. <ce...@op...> - 2006-01-11 18:43:53
|
On Wednesday 11 January 2006 19:24, Uttam Pawar wrote: > Hi Cerion, > > > Ok, so 2080393422 == 0x7c0048ce == lvx v0,r0,r9 == altivec load > > This is little off-topic question but, how did you decode 0x7c0048ce > into lvx v0,r0,r9? Is there any general receipe for doing this for ppc > platform? I don't know how others do it, but i did this: create xyz.s: .text nop nop gcc -c xyz.s hexedit xyz.o - replace first 600000 (ppc nop) with 7c0048ce objdump -d zzz.o ... 00000000 <.text>: 0: 7c 00 48 ce lvx v0,r0,r9 Anyone else out there got an easier way? Cerion |
|
From: Cerion Armour-B. <ce...@op...> - 2006-01-11 13:21:13
|
On Tuesday 10 January 2006 22:00, Uttam Pawar wrote: ... > + Process terminating with default action of signal 4 (SIGILL) > + Illegal opcode at address 0x........ > + at 0x........: build_viargs_table (in Cancel those last requests - I missed this. This is a problem of jm-insns, not of valgrind - the test always gets built with HAS_ALTIVEC defined, so we get altivec insns in the executable... will add to my todo list... > Also, I noticed that, after making the change to toIR.c file, I'd to clean > the directory with make clean to rebuild libvex.a (toIR.o). Without that, > toIR.o wouldn't get rebuild. And the test result would be same as the > previous one. Is it the known problem? Yes, the build system is not quite there... Cheers, Cerion |
|
From: <sv...@va...> - 2006-01-11 13:16:54
|
Author: tom
Date: 2006-01-11 13:16:35 +0000 (Wed, 11 Jan 2006)
New Revision: 5514
Log:
Handle the <<=3D and >>=3D operators in stabs. Fixes bug #119914.
Modified:
trunk/coregrind/m_debuginfo/stabs.c
Modified: trunk/coregrind/m_debuginfo/stabs.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_debuginfo/stabs.c 2006-01-10 20:58:43 UTC (rev 5513=
)
+++ trunk/coregrind/m_debuginfo/stabs.c 2006-01-11 13:16:35 UTC (rev 5514=
)
@@ -863,6 +863,8 @@
VG_(strncmp)(p, "operator>=3D::", 12) =3D=3D 0 ||
VG_(strncmp)(p, "operator<<::", 12) =3D=3D 0 ||
VG_(strncmp)(p, "operator>>::", 12) =3D=3D 0 ||
+ VG_(strncmp)(p, "operator<<=3D::", 13) =3D=3D 0 ||
+ VG_(strncmp)(p, "operator>>=3D::", 13) =3D=3D 0 ||
VG_(strncmp)(p, "operator->::", 12) =3D=3D 0) {
p =3D SKIPPAST(p, ':', "member name");
} else {
|
|
From: Cerion Armour-B. <ce...@op...> - 2006-01-11 12:51:28
|
On Tuesday 10 January 2006 22:00, Uttam Pawar wrote:
> Hi Cerion,
>
> > Not so strange - we developed on a ppc970 :-)
> >
> >
> > Ok, it's a missing instruction.
> > Hmm - you're not getting the hex printouts...
> > Can you change VEX/priv/guest-ppc/toIR.c thusly:
> >
> > vex_printf("disInstr(ppc): unhandled instruction: "
> > - "0x%x\n", theInstr);
> > + "%u\n", theInstr);
> >
> > Rebuild, run the test, and repost none/tests/ppc32/jm-insns.stderr.diff
> > - To run just that one test (from dir valgrind-3.1.0):
> > $ perl ./tests/vg_regtest ./none/tests/ppc32/jm-insns
>
> With the suggested change (in file VEX/priv/guest-ppc32/toIR.c),
> building and re-running that one test we get following
> (jm-insns.stderr.diff output)
> $ cat none/tests/ppc32/jm-insns.stderr.diff
> *** jm-insns.stderr.exp 2005-11-25 04:36:08.000000000 -0800
> --- jm-insns.stderr.out 2006-01-10 12:47:26.000000000 -0800
> ***************
> *** 1 ****
> --- 2,22 ----
> + disInstr(ppc32): unhandled instruction: 2080393422
Ok, so 2080393422 == 0x7c0048ce == lvx v0,r0,r9 == altivec load
I though altivec wasn't generated on these platforms...
Can you post cat /proc/cpuinfo please?
Can you also run valgrind on the test with -d:
$ path_to_valgrind3_1_0 -d ./none/tests/ppc32/jm_insns
and post the debug line after ":main Get hardware capabilities ..."
Thanks,
Cerion
|
|
From: <js...@ac...> - 2006-01-11 12:19:45
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2006-01-11 04:40:00 CET Results differ from 24 hours ago Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2006-01-11T04:40:00} valgrind svn: Unknown hostname 'svn.valgrind.org' ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2006-01-10T04:40:00} valgrind svn: Unknown hostname 'svn.valgrind.org' ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 11 04:40:21 2006 --- new.short Wed Jan 11 04:40:41 2006 *************** *** 5,7 **** ! Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2006-01-10T04:40:00} valgrind svn: Unknown hostname 'svn.valgrind.org' --- 5,7 ---- ! Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2006-01-11T04:40:00} valgrind svn: Unknown hostname 'svn.valgrind.org' |
|
From: <js...@ac...> - 2006-01-11 09:26:42
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-01-11 05:00:02 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 == 176 tests, 16 stderr failures, 2 stdout failures ================= memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/stack_changes (stdout) memcheck/tests/stack_changes (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) |
|
From: <js...@ac...> - 2006-01-11 03:55:46
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-01-11 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 == 209 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <to...@co...> - 2006-01-11 03:42:53
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2006-01-11 03:30:05 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 == 211 tests, 7 stderr failures, 2 stdout failures ================= 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/sse1_memory (stdout) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-11 03:30:29
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-01-11 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 == 230 tests, 4 stderr failures, 1 stdout failure ================= 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) |
|
From: Tom H. <th...@cy...> - 2006-01-11 03:22:54
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2006-01-11 03:10:07 GMT 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 == 230 tests, 5 stderr failures, 3 stdout failures ================= memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (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 == 230 tests, 6 stderr failures, 3 stdout failures ================= memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 11 03:17:05 2006 --- new.short Wed Jan 11 03:22:48 2006 *************** *** 8,12 **** ! == 230 tests, 6 stderr failures, 3 stdout failures ================= memcheck/tests/leakotron (stdout) - memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) --- 8,11 ---- ! == 230 tests, 5 stderr failures, 3 stdout failures ================= memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-11 03:18:38
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2006-01-11 03:05:11 GMT 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 == 230 tests, 6 stderr failures, 2 stdout failures ================= memcheck/tests/pointer-trace (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/mremap2 (stdout) none/tests/x86/faultstatus (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 == 230 tests, 5 stderr failures, 2 stdout failures ================= memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 11 03:12:20 2006 --- new.short Wed Jan 11 03:18:31 2006 *************** *** 8,10 **** ! == 230 tests, 5 stderr failures, 2 stdout failures ================= memcheck/tests/x86/scalar (stderr) --- 8,11 ---- ! == 230 tests, 6 stderr failures, 2 stdout failures ================= ! memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-11 03:18:15
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-01-11 03:15:03 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... failed
Last 20 lines of verbose log follow echo
A valgrind/VEX/Makefile-icc
A valgrind/VEX/Makefile
A valgrind/VEX/LICENSE.README
U valgrind/VEX
Checked out external at revision 1535.
Checked out revision 5513.
Configuring valgrind ... cd valgrind && ./autogen.sh && ./configure --prefix=/tmp/valgrind.21083/Inst
running: aclocal
running: autoheader
running: automake -a
configure.in: installing `./install-sh'
configure.in: installing `./mkinstalldirs'
configure.in: installing `./missing'
configure.in:112: installing `./config.guess'
configure.in:112: installing `./config.sub'
addrcheck/Makefile.am: installing `./depcomp'
auxprogs/Makefile.am: installing `./compile'
DIST_SUBDIRS: variable `VG_ARCH_ALL' is used but `VG_ARCH_ALL' is undefined
error: while running 'automake -a'
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... failed
Last 20 lines of verbose log follow echo
A valgrind/VEX/Makefile-icc
A valgrind/VEX/Makefile
A valgrind/VEX/LICENSE.README
U valgrind/VEX
Checked out external at revision 1535.
Checked out revision 5506.
Configuring valgrind ... cd valgrind && ./autogen.sh && ./configure --prefix=/tmp/valgrind.21083/Inst
running: aclocal
running: autoheader
running: automake -a
configure.in: installing `./install-sh'
configure.in: installing `./mkinstalldirs'
configure.in: installing `./missing'
configure.in:112: installing `./config.guess'
configure.in:112: installing `./config.sub'
addrcheck/Makefile.am: installing `./depcomp'
auxprogs/Makefile.am: installing `./compile'
DIST_SUBDIRS: variable `VG_ARCH_ALL' is used but `VG_ARCH_ALL' is undefined
error: while running 'automake -a'
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Wed Jan 11 03:16:42 2006
--- new.short Wed Jan 11 03:18:08 2006
***************
*** 11,13 ****
! Checked out revision 5506.
Configuring valgrind ... cd valgrind && ./autogen.sh && ./configure --prefix=/tmp/valgrind.21083/Inst
--- 11,13 ----
! Checked out revision 5513.
Configuring valgrind ... cd valgrind && ./autogen.sh && ./configure --prefix=/tmp/valgrind.21083/Inst
|