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
(10) |
3
(10) |
4
(14) |
5
(10) |
|
6
|
7
(1) |
8
(14) |
9
(10) |
10
(4) |
11
(2) |
12
(4) |
|
13
|
14
(2) |
15
(11) |
16
(10) |
17
|
18
|
19
(18) |
|
20
(14) |
21
(10) |
22
(1) |
23
(11) |
24
(14) |
25
(10) |
26
(6) |
|
27
(13) |
28
(13) |
29
(12) |
30
(13) |
|
|
|
|
From: Tom H. <to...@co...> - 2014-04-05 02:37:05
|
valgrind revision: 13891 VEX revision: 2846 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora 7.5.1-42.fc18 Assembler: GNU assembler version 2.23.51.0.1-10.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.13.6-200.fc20.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2014-04-05 02:41:26 BST Ended at 2014-04-05 03:36:51 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 == 674 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Rich C. <rc...@wi...> - 2014-04-05 02:25:56
|
valgrind revision: 13891
VEX revision: 2846
C compiler: gcc (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
GDB: GNU gdb (GDB; openSUSE Factory) 7.6.50.20130731-cvs
Assembler: GNU assembler (GNU Binutils; openSUSE Factory) 2.23.2
C library: GNU C Library (GNU libc) stable release version 2.18 (git )
uname -mrs: Linux 3.11.4-3-desktop x86_64
Vendor version: Welcome to openSUSE 13.1 "Bottle" Beta 1 - Kernel %r (%t).
Nightly build on rodan ( Linux 3.11.4-3-desktop x86_64 )
Started at 2014-04-04 19:22:01 CDT
Ended at 2014-04-04 21:25:42 CDT
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
== 589 tests, 5 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/threadname (stderr)
memcheck/tests/threadname_xml (stderr)
exp-sgcheck/tests/hackedbz2 (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
== 589 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/dw4 (stderr)
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/threadname (stderr)
memcheck/tests/threadname_xml (stderr)
exp-sgcheck/tests/hackedbz2 (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Fri Apr 4 20:23:53 2014
--- new.short Fri Apr 4 21:25:42 2014
***************
*** 8,11 ****
! == 589 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
! memcheck/tests/dw4 (stderr)
memcheck/tests/err_disable3 (stderr)
--- 8,10 ----
! == 589 tests, 5 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/err_disable3 (stderr)
=================================================
./valgrind-new/exp-sgcheck/tests/hackedbz2.stderr.diff-glibc28-amd64
=================================================
--- hackedbz2.stderr.exp-glibc28-amd64 2014-04-04 20:24:16.648092083 -0500
+++ hackedbz2.stderr.out 2014-04-04 21:24:23.620934601 -0500
@@ -1,7 +1,6 @@
Invalid read of size 1
- at 0x........: vex_strlen (hackedbz2.c:1006)
- by 0x........: add_to_myprintf_buf (hackedbz2.c:1284)
+ at 0x........: add_to_myprintf_buf (hackedbz2.c:1006)
by 0x........: vex_printf (hackedbz2.c:1155)
by 0x........: BZ2_compressBlock (hackedbz2.c:4039)
by 0x........: handle_compress (hackedbz2.c:4761)
=================================================
./valgrind-new/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2014-04-04 20:24:30.572253609 -0500
+++ err_disable3.stderr.out 2014-04-04 20:42:34.056822521 -0500
@@ -10,8 +10,6 @@
Thread 2:
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
- by 0x........: child_fn (err_disable3.c:31)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-new/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2014-04-04 20:24:31.301262066 -0500
+++ err_disable4.stderr.out 2014-04-04 20:42:38.196870547 -0500
@@ -1501,8 +1501,6 @@
Thread x:
Invalid read of size 1
at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
=================================================
./valgrind-new/memcheck/tests/threadname.stderr.diff
=================================================
--- threadname.stderr.exp 2014-04-04 20:24:23.754174516 -0500
+++ threadname.stderr.out 2014-04-04 20:48:26.374909570 -0500
@@ -9,36 +9,12 @@
Thread 2:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_0 (threadname.c:53)
- ...
Address 0x........ is 0 bytes after a block of size 2 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:15)
by 0x........: child_fn_0 (threadname.c:53)
...
-Thread 3 try1:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
- Address 0x........ is 0 bytes after a block of size 3 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
-
-Thread 4 012345678901234:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
- Address 0x........ is 0 bytes after a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
-
Thread 1:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
=================================================
./valgrind-new/memcheck/tests/threadname_xml.stderr.diff
=================================================
--- threadname_xml.stderr.exp 2014-04-04 20:24:30.606254004 -0500
+++ threadname_xml.stderr.out 2014-04-04 20:48:28.390932957 -0500
@@ -94,14 +94,6 @@
<file>threadname.c</file>
<line>...</line>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_0</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
</stack>
<auxwhat>Address 0x........ is 0 bytes after a block of size 2 alloc'd</auxwhat>
<stack>
@@ -135,112 +127,6 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
- <threadname>try1</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 3 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>malloc</fn>
- <dir>...</dir>
- <file>vg_replace_malloc.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
-</error>
-
-<error>
- <unique>0x........</unique>
- <tid>...</tid>
- <threadname>012345678901234</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_2</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 4 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
<truncated beyond 100 lines>
=================================================
./valgrind-old/exp-sgcheck/tests/hackedbz2.stderr.diff-glibc28-amd64
=================================================
--- hackedbz2.stderr.exp-glibc28-amd64 2014-04-04 19:22:32.265119563 -0500
+++ hackedbz2.stderr.out 2014-04-04 20:22:36.097925655 -0500
@@ -1,7 +1,6 @@
Invalid read of size 1
- at 0x........: vex_strlen (hackedbz2.c:1006)
- by 0x........: add_to_myprintf_buf (hackedbz2.c:1284)
+ at 0x........: add_to_myprintf_buf (hackedbz2.c:1006)
by 0x........: vex_printf (hackedbz2.c:1155)
by 0x........: BZ2_compressBlock (hackedbz2.c:4039)
by 0x........: handle_compress (hackedbz2.c:4761)
=================================================
./valgrind-old/memcheck/tests/dw4.stderr.diff
=================================================
--- dw4.stderr.exp 2014-04-04 19:22:35.204153657 -0500
+++ dw4.stderr.out 2014-04-04 19:40:34.770677117 -0500
@@ -1,3 +1,11 @@
+
+parse_type_DIE: confused by:
+ <1><492>: DW_TAG_structure_type
+ DW_AT_signature : 8 byte signature: 9b d0 55 13 bb 1e e9 37
+
+WARNING: Serious error when reading debug info
+When reading debug info from /usr/local/src/valgrind/nightly/valgrind-old/memcheck/tests/dw4:
+parse_type_DIE: confused by the above DIE
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:49)
@@ -8,12 +16,10 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:51)
- Location 0x........ is 0 bytes inside S2[0].i,
- a global variable declared at dw4.c:42
+ Address 0x........ is 4 bytes inside data symbol "S2"
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:52)
- Location 0x........ is 0 bytes inside local.i,
- declared at dw4.c:46, in frame #1 of thread 1
+ Address 0x........ is on thread 1's stack
=================================================
./valgrind-old/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2014-04-04 19:22:34.691147706 -0500
+++ err_disable3.stderr.out 2014-04-04 19:40:41.488755050 -0500
@@ -10,8 +10,6 @@
Thread 2:
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
- by 0x........: child_fn (err_disable3.c:31)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-old/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2014-04-04 19:22:35.380155698 -0500
+++ err_disable4.stderr.out 2014-04-04 19:40:45.659803436 -0500
@@ -1501,8 +1501,6 @@
Thread x:
Invalid read of size 1
at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
=================================================
./valgrind-old/memcheck/tests/threadname.stderr.diff
=================================================
--- threadname.stderr.exp 2014-04-04 19:22:34.693147729 -0500
+++ threadname.stderr.out 2014-04-04 19:46:34.564850893 -0500
@@ -9,36 +9,12 @@
Thread 2:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_0 (threadname.c:53)
- ...
Address 0x........ is 0 bytes after a block of size 2 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:15)
by 0x........: child_fn_0 (threadname.c:53)
...
-Thread 3 try1:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
- Address 0x........ is 0 bytes after a block of size 3 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
-
-Thread 4 012345678901234:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
- Address 0x........ is 0 bytes after a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
-
Thread 1:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
=================================================
./valgrind-old/memcheck/tests/threadname_xml.stderr.diff
=================================================
--- threadname_xml.stderr.exp 2014-04-04 19:22:35.804160617 -0500
+++ threadname_xml.stderr.out 2014-04-04 19:46:36.599874500 -0500
@@ -94,14 +94,6 @@
<file>threadname.c</file>
<line>...</line>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_0</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
</stack>
<auxwhat>Address 0x........ is 0 bytes after a block of size 2 alloc'd</auxwhat>
<stack>
@@ -135,112 +127,6 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
- <threadname>try1</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 3 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>malloc</fn>
- <dir>...</dir>
- <file>vg_replace_malloc.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
-</error>
-
-<error>
- <unique>0x........</unique>
- <tid>...</tid>
- <threadname>012345678901234</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_2</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 4 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2014-04-05 02:16:23
|
valgrind revision: 13891 VEX revision: 2846 C compiler: gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7) GDB: GNU gdb (GDB) Fedora 7.6.1-46.fc19 Assembler: GNU assembler version 2.23.52.0.1-9.fc19 20130226 C library: GNU C Library (GNU libc) stable release version 2.17 uname -mrs: Linux 3.13.6-200.fc20.x86_64 x86_64 Vendor version: Fedora release 19 (Schrödingerâs Cat) Nightly build on bristol ( x86_64, Fedora 19 (Schrödingerâs Cat) ) Started at 2014-04-05 02:32:02 BST Ended at 2014-04-05 03:16:02 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 == 674 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/hackedbz2 (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 == 674 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2014-04-05 02:51:10.227739295 +0100 --- new.short 2014-04-05 03:16:02.614567968 +0100 *************** *** 8,11 **** ! == 674 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == ! memcheck/tests/dw4 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) --- 8,10 ---- ! == 674 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/hackedbz2 (stderr) |
|
From: Julian S. <js...@ac...> - 2014-04-04 20:04:04
|
> ==11785== Conditional jump or move depends on uninitialised value(s) > ==11785== at 0x40CA0D8: pthread_join > (in /usr/lib64/libpthread-2.18.90.so) > ==11785== by 0x10000847: main (hg05_race2.c:31) > ==11785== Uninitialised value was created by a stack allocation > ==11785== at 0x4002754: dl_main (in /usr/lib64/ld-2.18.90.so) I've chased around these apparently-mysterious startup kinds of problems before. They tend to be something simple in the end, for example the thread-state register isn't marked as defined at startup. Peering at machine code might help, but it might also be an idea to install the debuginfo packages for libc so that you can get exact source locations in libpthread and ld. Then, look at the libpthread/ld sources to see what they are doing. In particular the fact that the uninitialised value is stack allocated in dl_main (allegedly, at least) might be a clue. J |
|
From: Carl E. L. <ce...@li...> - 2014-04-04 17:05:04
|
On Fri, 2014-04-04 at 00:49 +0200, Julian Seward wrote:
> > also get warning from other window
> >
> > ==25684== Conditional jump or move depends on uninitialised value(s)
> > ==25684== at 0x40CA0D8: pthread_join (in /usr/lib64/libpthread-2.18.90.so)
> > ==25684== by 0x10000847: main (hg05_race2.c:31)
>
> Try running your test cases again with --track-origins=yes. That might shed
> some light on the issue.
>
> J
>
I have tried the --track-origins=yes option. It gives the following
==11785== Conditional jump or move depends on uninitialised value(s)
==11785== at 0x40CA0D8: pthread_join
(in /usr/lib64/libpthread-2.18.90.so)
==11785== by 0x10000847: main (hg05_race2.c:31)
==11785== Uninitialised value was created by a stack allocation
==11785== at 0x4002754: dl_main (in /usr/lib64/ld-2.18.90.so)
I stopped at the beginning of the stack allocation code and printed the
registers;
(gdb) info reg
r0 0x4020d30 67243312
r1 0xfff00eea0 68702760608
r2 0x4048000 67403776
r3 0x10000040 268435520
r4 0x9 9
r5 0xfff00eec0 68702760640
r6 0xfff00f600 68702762496
r7 0x7f7f7f7f7f7f7f7f 9187201950435737471
r8 0x65776f70002b3772 7311435046889142130
r9 0x0 0
r10 0xc 12
r11 0x8080808080808080 9259542123273814144
r12 0x40026f0 67118832
r13 0x0 0
r14 0x0 0
r15 0x0 0
r16 0x0 0
r17 0x7fff9000 2147454976
r18 0xffffffff 4294967295
r19 0xfff00ef90 68702760848
r20 0x80001000 2147487744
r21 0x4000390 67109776
r22 0x1 1
r23 0x1 1
r24 0x4038000 67338240
r25 0x10000 65536
r26 0x100005a0 268436896
r27 0x0 0
r28 0x10000040 268435520
r29 0x9 9
r30 0x40026f0 67118832
r31 0x403f9d8 67369432
pc 0x0 0x0
msr 0x0 0
cr 0x0 0
lr 0x0 0x0
ctr 0x0 0
xer 0x0 0
orig_r3 0x0 0
trap 0x0 0
r0s1 0x0 0
r1s1 0x0 0
r2s1 0x0 0
r3s1 0x0 0
r4s1 0x0 0
r5s1 0x0 0
r6s1 0x0 0followed by the address and a length.
r7s1 0x0 0
r8s1 0x0 0
r9s1 0x0 0
r10s1 0x0 0
r11s1 0x0 0
r12s1 0x0 0
r13s1 0x0 0
pcs1 0x0 0x0
msrs1 0x0 0
crs1 0x0 0
lrs1 0x0 0x0
ctrs1 0x0 0
xers1 0x0 0
r0s2 0x0 0
r1s2 0x0 0
r2s2 0x0 0
r3s2 0x0 0
r4s2 0x0 0
r5s2 0x0 0
r6s2 0x0 0
r7s2 0x0 0
r8s2 0x0 0
r9s2 0x0 0
r10s2 0x0 0
r11s2 0x0 0
r12s2 0x0 0
r13s2 0x0 0
r14s2 0x0 0
r15s2 0x0 0
r16s2 0x0 0
r17s2 0x0 0
r18s2 0x0 0
r19s2 0x0 0
r20s2 0x0 0
r21s2 0x0 0
r22s2 0x0 0
r23s2 0x0 0
r24s2 0x0 0
r25s2 0x0 0
r26s2 0x0 0
r27s2 0x0 0
r28s2 0x0 0
r29s2 0x0 0
r30s2 0x0 0
r31s2 0x0 0
pcs2 0x0 0x0
msrs2 0x0 0followed by the address and a length.
crs2 0x0 0
lrs2 0x0 0x0
ctrs2 0x0 0
xers2 0x0 0
The contents of the registers all appear to be valid. Here is the code
from gdb (edited to make it easier to read)
0x40026f0 <dl_main>: addis r2,r12,4
=> 0x40026f4 <dl_main+4>: addi r2,r2,22800
=> 0x40026f8 <dl_main+8>: mflr r0
=> 0x40026fc <dl_main+12>: addis r7,r2,-1
=> 0x4002700 <dl_main+16>: mfcr r12
=> 0x4002704 <dl_main+20>: std r14,-144(r1)
=> 0x4002708 <dl_main+24>: std r15,-136(r1)
=> 0x400270c <dl_main+28>: std r16,-128(r1)
=> 0x4002710 <dl_main+32>: std r17,-120(r1)
=> 0x4002714 <dl_main+36>: std r18,-112(r1)
=> 0x4002718 <dl_main+40>: std r19,-104(r1)
=> 0x400271c <dl_main+44>: std r20,-96(r1)
=> 0x4002720 <dl_main+48>: std r21,-88(r1)
=> 0x4002724 <dl_main+52>: std r0,16(r1)
=> 0x4002728 <dl_main+56>: std r22,-80(r1)
=> 0x400272c <dl_main+60>: std r23,-72(r1)
=> 0x4002730 <dl_main+64>: std r24,-64(r1)
=> 0x4002734 <dl_main+68>: std r26,-48(r1)
=> 0x4002738 <dl_main+72>: std r27,-40(r1)
=> 0x400273c <dl_main+76>: std r28,-32(r1)
=> 0x4002740 <dl_main+80>: std r29,-24(r1)
=> 0x4002744 <dl_main+84>: std r30,-16(r1)
=> 0x4002748 <dl_main+88>: std r31,-8(r1)
=> 0x400274c <dl_main+92>: std r25,-56(r1)
=> 0x4002750 <dl_main+96>: stw r12,8(r1)
=> 0x4002754 <dl_main+100>: stdu r1,-480(r1)
=> 0x4002758 <dl_main+104>: lwz r9,32328(r7)
I double checked the registers (s1 and s2) right before executing the stdu
instruction at 0x4002754 The registers were still are all zeros. I verified
the correct values were in r1 and in the memory location.
1: x/i $pc
=> 0x4002754 <dl_main+100>: stdu r1,-480(r1)
we have in r1
r1 0xfff00eea0 68702760608
The address to store at is
-480(r1) = -xfff00ecc0
x 0xfff00ecc0
0xfff00ecc0: 0xff00eea0
gdb) si
0x0000000004002758 in dl_main () from /lib64/ld64.so.2
1: x/i $pc
=> 0x4002758 <dl_main+104>: lwz r9,32328(r7)
the updated value in r1 is
r1 0xfff00ecc0 68702760128
r1s1 0x0 0
r1s2 0x0 0
the stdu instruction calculates the effective address and stores r1 in the
effective address then updates r1 to the effective address. Looks like r1
was correctly updated and the value in memory is correctly updated.
I tried to print the V bits for the memory location using the command
"get_vbits <addr> [<len>]". GDB just says "unknown command". I don't see
anything about having to use an additional command line option to enable
the get_vbits. Don't see anything in the documentation about having to do
something to enable it. Is there another way to print the V-bits of memory?
I spent some more time trying to locate where the check of the vbits occurs
when the instruction at address 0x40CA0D8 executes and thus triggers the
warning message. It looks like complainIfUndefined() in mc_translate.c might
be where the check gets done. It appears the routine gets the vbits and sets fn
to a helper function. The helper function calls MC_(record_cond_error) in
mc_main.c which appears to decide if the error is to be reported. But I still
seem to be missing exactly where the check is done that triggers the generation
of the error message. It might be helpful if I could find where the vbit check
detects the issue.
Thanks for your time and help.
Carl Love
|
|
From: <sv...@va...> - 2014-04-04 10:20:28
|
Author: dejanj
Date: Fri Apr 4 10:20:03 2014
New Revision: 13891
Log:
mips32/64: According to DWARF version 4 in DW_TAG_structure_type we can
have DW_AT_signature attribute. That wasn't the case in DWARF version 3.
>From DWARF version 4:
If the complete declaration of a type has been placed in a separate type unit,
an incomplete declaration of that type in the compilation unit may provide the
unique 64-bit signature of the type using a DW_AT_signature attribute.
This patch adds an extra field in TyStOrUn structure (typeR). This field is
reference to other TyEnt that is placed in separate type unit. Because of the new
field in TyStOrUn structure we need to add an extra case in parse_type_DIE
that will put the right reference to other TyEnt and an extra case in
ML_(describe_type) that will describe type when the ty->Te.TyStOrUn.typeR field
is used.
This patch is resolving the problem with memcheck/tests/dw4 test when it's
compiled with compiler that will emit DW_AT_signature under the DW_TAG_structure_type.
Modified:
trunk/coregrind/m_debuginfo/priv_tytypes.h
trunk/coregrind/m_debuginfo/readdwarf3.c
trunk/coregrind/m_debuginfo/tytypes.c
Modified: trunk/coregrind/m_debuginfo/priv_tytypes.h
==============================================================================
--- trunk/coregrind/m_debuginfo/priv_tytypes.h (original)
+++ trunk/coregrind/m_debuginfo/priv_tytypes.h Fri Apr 4 10:20:03 2014
@@ -116,6 +116,7 @@
struct {
HChar* name; /* in mallocville */
UWord szB;
+ UWord typeR;
XArray* /* of UWord */ fieldRs;
Bool complete;
Bool isStruct;
Modified: trunk/coregrind/m_debuginfo/readdwarf3.c
==============================================================================
--- trunk/coregrind/m_debuginfo/readdwarf3.c (original)
+++ trunk/coregrind/m_debuginfo/readdwarf3.c Fri Apr 4 10:20:03 2014
@@ -2632,6 +2632,7 @@
typeE.cuOff = posn;
typeE.tag = Te_TyStOrUn;
typeE.Te.TyStOrUn.name = NULL;
+ typeE.Te.TyStOrUn.typeR = D3_INVALID_CUOFF;
typeE.Te.TyStOrUn.fieldRs
= VG_(newXA)( ML_(dinfo_zalloc), "di.readdwarf3.pTD.struct_type.1",
ML_(dinfo_free),
@@ -2659,6 +2660,13 @@
if (attr == DW_AT_specification && cts.szB > 0 && cts.u.val > 0) {
is_spec = True;
}
+ if (attr == DW_AT_signature && form == DW_FORM_ref_sig8
+ && cts.szB > 0) {
+ have_szB = True;
+ typeE.Te.TyStOrUn.szB = 8;
+ typeE.Te.TyStOrUn.typeR
+ = cook_die_using_form( cc, (UWord)cts.u.val, form );
+ }
}
/* Do we have something that looks sane? */
if (is_decl && (!is_spec)) {
Modified: trunk/coregrind/m_debuginfo/tytypes.c
==============================================================================
--- trunk/coregrind/m_debuginfo/tytypes.c (original)
+++ trunk/coregrind/m_debuginfo/tytypes.c Fri Apr 4 10:20:03 2014
@@ -785,7 +785,8 @@
PtrdiffT offMin = 0, offMax1 = 0;
if (!ty->Te.TyStOrUn.isStruct) goto done;
fieldRs = ty->Te.TyStOrUn.fieldRs;
- if ((!fieldRs) || VG_(sizeXA)(fieldRs) == 0) goto done;
+ if (((!fieldRs) || VG_(sizeXA)(fieldRs) == 0)
+ && (ty->Te.TyStOrUn.typeR == 0)) goto done;
for (i = 0; i < VG_(sizeXA)( fieldRs ); i++ ) {
fieldR = *(UWord*)VG_(indexXA)( fieldRs, i );
field = ML_(TyEnts__index_by_cuOff)(tyents, NULL, fieldR);
@@ -831,8 +832,14 @@
}
/* Did we find a suitable field? */
vg_assert(i >= 0 && i <= VG_(sizeXA)( fieldRs ));
- if (i == VG_(sizeXA)( fieldRs ))
- goto done; /* No. Give up. */
+ if (i == VG_(sizeXA)( fieldRs )) {
+ ty = ML_(TyEnts__index_by_cuOff)(tyents, NULL,
+ ty->Te.TyStOrUn.typeR);
+ vg_assert(ty);
+ if (ty->tag == Te_UNKNOWN) goto done;
+ vg_assert(ML_(TyEnt__is_type)(ty));
+ continue;
+ }
/* Yes. 'field' is it. */
vg_assert(field);
if (!field->Te.Field.name) goto done;
|
|
From: <sv...@va...> - 2014-04-04 10:02:12
|
Author: dejanj
Date: Fri Apr 4 10:02:03 2014
New Revision: 13890
Log:
mips32: Add an extra case for mips32 in ML_(get_CFA) in witch Valgrind will call
compute_cfa to get the call frame address.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
==============================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c (original)
+++ trunk/coregrind/m_debuginfo/debuginfo.c Fri Apr 4 10:02:03 2014
@@ -2426,6 +2426,14 @@
return compute_cfa(&uregs,
min_accessible, max_accessible, di, cfsi);
}
+#elif defined(VGA_mips32)
+ { D3UnwindRegs uregs;
+ uregs.pc = ip;
+ uregs.sp = sp;
+ uregs.fp = fp;
+ return compute_cfa(&uregs,
+ min_accessible, max_accessible, di, cfsi);
+ }
# else
return 0; /* indicates failure */
|
|
From: Philippe W. <phi...@sk...> - 2014-04-04 05:02:41
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-37.fc18) Assembler: GNU assembler version 2.23.51.0.1-7.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.8.8-202.fc18.ppc64p7 ppc64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on gcc110 ( Fedora release 18 (Spherical Cow), ppc64 ) Started at 2014-04-03 20:00:07 PDT Ended at 2014-04-03 21:59:32 PDT 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 == 576 tests, 36 stderr failures, 7 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/jm-vmx (stderr) none/tests/ppc32/test_isa_2_06_part2 (stdout) none/tests/ppc32/test_isa_2_06_part2 (stderr) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/jm-vmx (stderr) none/tests/ppc64/test_isa_2_06_part2 (stdout) none/tests/ppc64/test_isa_2_06_part2 (stderr) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_cond_destroy_busy (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) --tools=none,memcheck,callgrind,helgrind,cachegrind,drd,massif --reps=3 --vg=../valgrind-new --vg=../valgrind-old -- Running tests in perf ---------------------------------------------- -- bigcode1 -- bigcode1 valgrind-new:0.23s no: 1.6s ( 6.9x, -----) me: 2.8s (12.3x, -----) ca:18.9s (82.2x, -----) he: 1.8s ( 7.6x, -----) ca: 5.5s (24.0x, -----) dr: 1.7s ( 7.4x, -----) ma: 2.1s ( 9.2x, -----) bigcode1 valgrind-old:0.23s no: 1.7s ( 7.2x, -5.1%) me: 2.9s (12.5x, -2.1%) ca:18.1s (78.7x, 4.3%) he: 1.7s ( 7.6x, 0.6%) ca: 5.3s (23.2x, 3.1%) dr: 1.7s ( 7.2x, 2.4%) ma: 2.1s ( 9.3x, -1.4%) -- bigcode2 -- bigcode2 valgrind-new:0.23s no: 1.5s ( 6.7x, -----) me: 2.9s (12.7x, -----) ca:18.9s (82.2x, -----) he: 2.2s ( 9.7x, -----) ca: 5.6s (24.2x, -----) dr: 1.8s ( 8.0x, -----) ma: 2.1s ( 9.2x, -----) bigcode2 valgrind-old:0.23s no: 1.5s ( 6.7x, -0.7%) me: 3.0s (12.9x, -1.7%) ca:18.1s (78.9x, 4.0%) he: 2.1s ( 9.1x, 6.3%) ca: 5.4s (23.5x, 2.9%) dr: 1.8s ( 8.0x, -0.5%) ma: 2.1s ( 9.2x, -0.5%) -- bz2 -- bz2 valgrind-new:0.72s no: 4.7s ( 6.5x, -----) me:12.0s (16.6x, -----) ca:26.4s (36.6x, -----) he:14.7s (20.4x, -----) ca:24.3s (33.8x, -----) dr:20.4s (28.3x, -----) ma: 4.8s ( 6.7x, -----) bz2 valgrind-old:0.72s no: 4.7s ( 6.6x, -1.7%) me:12.0s (16.7x, -0.5%) ca:25.9s (36.0x, 1.6%) he:14.6s (20.3x, 0.3%) ca:24.3s (33.8x, -0.1%) dr:20.3s (28.2x, 0.4%) ma: 4.7s ( 6.5x, 2.5%) -- fbench -- fbench valgrind-new:0.34s no: 2.1s ( 6.2x, -----) me: 5.2s (15.4x, -----) ca: 8.6s (25.2x, -----) he: 5.2s (15.3x, -----) ca: 7.4s (21.9x, -----) dr: 4.9s (14.5x, -----) ma: 2.1s ( 6.3x, -----) fbench valgrind-old:0.34s no: 2.1s ( 6.3x, -1.4%) me: 5.3s (15.6x, -1.1%) ca: 8.5s (24.9x, 1.2%) he: 5.2s (15.4x, -0.6%) ca: 7.5s (22.2x, -1.3%) dr: 4.9s (14.4x, 1.0%) ma: 2.1s ( 6.3x, 0.5%) -- ffbench -- ffbench valgrind-new:0.44s no: 1.3s ( 3.0x, -----) me: 2.6s ( 5.8x, -----) ca: 2.5s ( 5.8x, -----) he: 7.0s (15.8x, -----) ca: 7.0s (16.0x, -----) dr: 5.1s (11.5x, -----) ma: 1.0s ( 2.4x, -----) ffbench valgrind-old:0.44s no: 1.3s ( 3.0x, 0.0%) me: 2.5s ( 5.7x, 2.3%) ca: 2.5s ( 5.6x, 2.4%) he: 7.2s (16.4x, -3.6%) ca: 7.3s (16.7x, -4.0%) dr: 5.0s (11.3x, 2.0%) ma: 1.1s ( 2.5x, -4.8%) -- heap -- heap valgrind-new:0.41s no: 2.4s ( 5.9x, -----) me: 9.8s (23.9x, -----) ca:13.6s (33.2x, -----) he:11.8s (28.9x, -----) ca:12.1s (29.5x, -----) dr: 8.5s (20.6x, -----) ma: 8.7s (21.1x, -----) heap valgrind-old:0.41s no: 2.4s ( 5.9x, -0.4%) me: 9.8s (23.9x, -0.2%) ca:13.2s (32.3x, 2.7%) he:11.9s (29.0x, -0.5%) ca:12.1s (29.5x, 0.0%) dr: 8.3s (20.1x, 2.4%) ma: 8.4s (20.6x, 2.4%) -- heap_pdb4 -- heap_pdb4 valgrind-new:0.43s no: 2.6s ( 6.0x, -----) me:13.9s (32.4x, -----) ca:14.5s (33.8x, -----) he:13.1s (30.4x, -----) ca:13.1s (30.5x, -----) dr: 9.4s (22.0x, -----) ma: 8.8s (20.6x, -----) heap_pdb4 valgrind-old:0.43s no: 2.6s ( 6.0x, 0.0%) me:14.0s (32.6x, -0.6%) ca:14.1s (32.9x, 2.8%) he:13.3s (31.0x, -1.9%) ca:13.1s (30.4x, 0.4%) dr: 9.1s (21.2x, 3.4%) ma: 8.6s (19.9x, 3.1%) -- many-loss-records -- many-loss-records valgrind-new:0.04s no: 0.5s (13.0x, -----) me: 2.1s (53.8x, -----) ca: 1.9s (48.0x, -----) he: 1.8s (45.2x, -----) ca: 1.9s (46.5x, -----) dr: 1.6s (39.2x, -----) ma: 1.6s (39.5x, -----) many-loss-records valgrind-old:0.04s no: 0.5s (13.0x, 0.0%) me: 2.2s (54.0x, -0.5%) ca: 1.9s (47.2x, 1.6%) he: 1.8s (44.8x, 1.1%) ca: 1.9s (46.5x, 0.0%) dr: 1.5s (38.2x, 2.5%) ma: 1.6s (39.0x, 1.3%) -- many-xpts -- many-xpts valgrind-new:0.07s no: 0.7s (10.6x, -----) me: 3.4s (47.9x, -----) ca: 4.8s (68.1x, -----) he: 4.8s (68.7x, -----) ca: 2.9s (41.4x, -----) dr: 2.3s (33.4x, -----) ma: 2.3s (32.3x, -----) many-xpts valgrind-old:0.07s no: 0.7s (10.4x, 1.4%) me: 3.4s (48.1x, -0.6%) ca: 4.7s (67.0x, 1.7%) he: 4.8s (68.7x, 0.0%) ca: 2.9s (41.4x, 0.0%) dr: 2.3s (32.3x, 3.4%) ma: 2.3s (32.3x, 0.0%) -- sarp -- sarp valgrind-new:0.02s no: 0.4s (20.0x, -----) me: 3.2s (159.5x, -----) ca: 3.0s (148.0x, -----) he:11.0s (548.0x, -----) ca: 1.7s (86.0x, -----) dr: 1.1s (55.5x, -----) ma: 0.4s (21.0x, -----) sarp valgrind-old:0.02s no: 0.4s (19.5x, 2.5%) me: 3.1s (157.0x, 1.6%) ca: 2.9s (147.0x, 0.7%) he:11.0s (550.5x, -0.5%) ca: 1.8s (92.0x, -7.0%) dr: 1.1s (55.0x, 0.9%) ma: 0.4s (21.0x, 0.0%) -- tinycc -- tinycc valgrind-new:0.28s no: 3.0s (10.6x, -----) me:14.0s (50.1x, -----) ca:17.8s (63.5x, -----) he:19.0s (68.0x, -----) ca:15.7s (56.0x, -----) dr:12.5s (44.5x, -----) ma: 3.8s (13.6x, -----) tinycc valgrind-old:0.28s no: 3.0s (10.6x, -0.3%) me:14.0s (50.0x, 0.2%) ca:17.3s (61.9x, 2.5%) he:19.0s (67.9x, 0.1%) ca:15.7s (56.2x, -0.3%) dr:12.4s (44.2x, 0.6%) ma: 3.8s (13.7x, -0.5%) -- Finished tests in perf ---------------------------------------------- == 11 programs, 154 timings ================= real 54m36.563s user 52m42.483s sys 0m22.352s |
|
From: Christian B. <bor...@de...> - 2014-04-04 04:12:43
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] GDB: GNU gdb (GDB) SUSE (7.5.1-0.7.29) Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.23.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.101-0.15-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP3 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP3 gcc 4.3.4 on z196 (s390x) ) Started at 2014-04-04 03:45:01 CEST Ended at 2014-04-04 06:12:32 CEST 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 == 643 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_cond_destroy_busy (stderr) --tools=none,memcheck,callgrind,helgrind,cachegrind,drd,massif --reps=3 --vg=../valgrind-new --vg=../valgrind-old -- Running tests in perf ---------------------------------------------- -- bigcode1 -- bigcode1 valgrind-new:0.23s no: 4.3s (18.9x, -----) me: 6.8s (29.5x, -----) ca:26.4s (115.0x, -----) he: 5.2s (22.4x, -----) ca: 9.2s (39.8x, -----) dr: 5.5s (23.9x, -----) ma: 4.7s (20.4x, -----) bigcode1 valgrind-old:0.23s no: 4.3s (18.8x, 0.2%) me: 6.8s (29.6x, -0.1%) ca:26.4s (114.6x, 0.3%) he: 5.1s (22.0x, 1.7%) ca: 9.1s (39.6x, 0.5%) dr: 5.5s (23.9x, 0.2%) ma: 4.7s (20.4x, 0.2%) -- bigcode2 -- bigcode2 valgrind-new:0.25s no: 7.3s (29.4x, -----) me:13.8s (55.0x, -----) ca:39.5s (158.2x, -----) he:10.1s (40.2x, -----) ca:14.3s (57.2x, -----) dr: 9.6s (38.4x, -----) ma: 8.1s (32.3x, -----) bigcode2 valgrind-old:0.25s no: 7.3s (29.2x, 0.7%) me:13.8s (55.1x, -0.1%) ca:39.5s (157.9x, 0.2%) he:10.0s (40.2x, 0.2%) ca:14.2s (56.8x, 0.8%) dr: 9.6s (38.3x, 0.3%) ma: 8.1s (32.3x, 0.1%) -- bz2 -- bz2 valgrind-new:0.70s no: 5.0s ( 7.1x, -----) me:13.2s (18.9x, -----) ca:30.7s (43.9x, -----) he:19.6s (28.0x, -----) ca:34.3s (49.0x, -----) dr:29.4s (42.0x, -----) ma: 3.6s ( 5.2x, -----) bz2 valgrind-old:0.70s no: 5.0s ( 7.1x, 0.2%) me:13.2s (18.9x, 0.1%) ca:30.8s (43.9x, -0.0%) he:19.6s (28.0x, 0.0%) ca:34.3s (48.9x, 0.0%) dr:29.4s (42.0x, 0.0%) ma: 3.6s ( 5.2x, 0.3%) -- fbench -- fbench valgrind-new:0.41s no: 1.6s ( 3.9x, -----) me: 4.2s (10.3x, -----) ca: 9.2s (22.5x, -----) he: 6.2s (15.0x, -----) ca: 7.2s (17.5x, -----) dr: 5.5s (13.3x, -----) ma: 1.7s ( 4.1x, -----) fbench valgrind-old:0.41s no: 1.6s ( 3.9x, -0.6%) me: 4.3s (10.4x, -0.7%) ca: 9.3s (22.7x, -0.6%) he: 6.2s (15.0x, 0.2%) ca: 7.2s (17.5x, 0.0%) dr: 5.4s (13.2x, 0.6%) ma: 1.7s ( 4.1x, -0.0%) -- ffbench -- ffbench valgrind-new:0.20s no: 1.0s ( 5.2x, -----) me: 3.1s (15.5x, -----) ca: 3.0s (15.2x, -----) he:43.6s (218.0x, -----) ca: 9.6s (48.1x, -----) dr: 6.8s (34.1x, -----) ma: 1.0s ( 4.8x, -----) ffbench valgrind-old:0.20s no: 1.1s ( 5.2x, -1.0%) me: 3.1s (15.6x, -0.3%) ca: 3.0s (15.1x, 1.0%) he:43.6s (217.8x, 0.1%) ca: 9.6s (48.0x, 0.3%) dr: 7.0s (35.1x, -2.9%) ma: 1.0s ( 4.8x, 0.0%) -- heap -- heap valgrind-new:0.23s no: 1.8s ( 7.7x, -----) me: 9.0s (39.3x, -----) ca:13.2s (57.4x, -----) he:12.9s (56.0x, -----) ca:11.2s (48.8x, -----) dr: 8.2s (35.9x, -----) ma: 7.8s (33.8x, -----) heap valgrind-old:0.23s no: 1.8s ( 7.8x, -0.6%) me: 9.0s (39.1x, 0.3%) ca:13.3s (57.8x, -0.7%) he:12.9s (56.0x, 0.1%) ca:11.2s (48.6x, 0.5%) dr: 7.7s (33.5x, 6.5%) ma: 7.8s (34.0x, -0.5%) -- heap_pdb4 -- heap_pdb4 valgrind-new:0.22s no: 2.0s ( 8.9x, -----) me:13.2s (60.2x, -----) ca:14.2s (64.7x, -----) he:14.3s (64.8x, -----) ca:12.4s (56.4x, -----) dr: 9.6s (43.5x, -----) ma: 7.9s (35.8x, -----) heap_pdb4 valgrind-old:0.22s no: 2.0s ( 8.9x, 0.0%) me:13.3s (60.4x, -0.2%) ca:14.3s (64.8x, -0.1%) he:14.2s (64.7x, 0.1%) ca:12.4s (56.2x, 0.3%) dr: 8.7s (39.6x, 9.1%) ma: 7.9s (36.0x, -0.5%) -- many-loss-records -- many-loss-records valgrind-new:0.02s no: 0.5s (23.5x, -----) me: 2.1s (106.0x, -----) ca: 1.9s (96.5x, -----) he: 2.2s (108.5x, -----) ca: 1.9s (95.0x, -----) dr: 1.9s (92.5x, -----) ma: 1.6s (82.5x, -----) many-loss-records valgrind-old:0.02s no: 0.5s (23.5x, 0.0%) me: 2.1s (106.0x, 0.0%) ca: 1.9s (97.0x, -0.5%) he: 2.2s (108.0x, 0.5%) ca: 1.9s (95.0x, 0.0%) dr: 1.8s (89.5x, 3.2%) ma: 1.6s (82.0x, 0.6%) -- many-xpts -- many-xpts valgrind-new:0.07s no: 0.6s ( 8.6x, -----) me: 3.2s (45.6x, -----) ca:371.2s (5302.9x, -----) he: 6.5s (93.4x, -----) ca: 2.8s (39.7x, -----) dr: 2.7s (38.6x, -----) ma: 2.6s (36.9x, -----) many-xpts valgrind-old:0.07s no: 0.6s ( 8.6x, 0.0%) me: 3.2s (45.9x, -0.6%) ca:369.3s (5275.1x, 0.5%) he: 6.5s (93.4x, 0.0%) ca: 2.8s (39.7x, 0.0%) dr: 2.5s (36.1x, 6.3%) ma: 2.6s (36.9x, 0.0%) -- sarp -- sarp valgrind-new:0.02s no: 0.6s (28.5x, -----) me: 3.9s (196.5x, -----) ca: 3.2s (159.5x, -----) he:16.7s (833.0x, -----) ca: 2.0s (102.0x, -----) dr: 1.6s (78.5x, -----) ma: 0.5s (24.5x, -----) sarp valgrind-old:0.02s no: 0.6s (28.5x, 0.0%) me: 3.9s (196.5x, 0.0%) ca: 3.4s (171.5x, -7.5%) he:16.7s (835.0x, -0.2%) ca: 2.0s (102.0x, 0.0%) dr: 1.4s (67.5x, 14.0%) ma: 0.5s (24.5x, 0.0%) -- tinycc -- tinycc valgrind-new:0.22s no: 2.7s (12.1x, -----) me:15.0s (68.1x, -----) ca:30.0s (136.2x, -----) he:27.8s (126.4x, -----) ca:21.4s (97.2x, -----) dr:20.1s (91.6x, -----) ma: 4.0s (18.1x, -----) tinycc valgrind-old:0.22s no: 2.7s (12.1x, 0.0%) me:15.0s (68.0x, 0.1%) ca:30.0s (136.2x, 0.0%) he:27.7s (126.0x, 0.3%) ca:21.3s (97.0x, 0.3%) dr:20.2s (91.6x, -0.0%) ma: 4.0s (18.0x, 0.3%) -- Finished tests in perf ---------------------------------------------- == 11 programs, 154 timings ================= real 110m53.468s user 110m13.440s sys 0m32.838s |
|
From: Tom H. <to...@co...> - 2014-04-04 03:23:27
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) GDB: Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.13.6-200.fc20.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2014-04-04 03:51:14 BST Ended at 2014-04-04 04:23: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 == 646 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Rich C. <rc...@wi...> - 2014-04-04 03:02:08
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012] GDB: GNU gdb (GDB) SUSE (7.5.1-2.1.1) Assembler: GNU assembler (GNU Binutils; openSUSE 12.3) 2.23.1 C library: GNU C Library (GNU libc) stable release version 2.17 (git c758a6861537) uname -mrs: Linux 3.7.9-1.1-desktop x86_64 Vendor version: Welcome to openSUSE 12.3 "Dartmouth" Beta 1 - Kernel %r (%t). Nightly build on ultra ( gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012] Linux 3.7.9-1.1-desktop x86_64 ) Started at 2014-04-03 21:30:01 CDT Ended at 2014-04-03 22:01:59 CDT 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 == 667 tests, 0 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures == gdbserver_tests/mssnapshot (stderrB) ================================================= ./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff ================================================= --- mssnapshot.stderrB.exp 2014-04-03 21:46:29.535553665 -0500 +++ mssnapshot.stderrB.out 2014-04-03 21:51:09.876792736 -0500 @@ -1,5 +1,11 @@ relaying data between gdb and process .... +Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2 +Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158" vgdb-error value changed from 0 to 999999 +Missing separate debuginfo for /lib64/libpthread.so.0 +Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef" +Missing separate debuginfo for /lib64/libc.so.6 +Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7" general valgrind monitor commands: help [debug] : monitor command help. With debug: + debugging commands v.wait [<ms>] : sleep <ms> (default 0) then continue ================================================= ./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff ================================================= --- mssnapshot.stderrB.exp 2014-04-03 21:30:52.770469106 -0500 +++ mssnapshot.stderrB.out 2014-04-03 21:35:27.042885393 -0500 @@ -1,5 +1,11 @@ relaying data between gdb and process .... +Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2 +Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158" vgdb-error value changed from 0 to 999999 +Missing separate debuginfo for /lib64/libpthread.so.0 +Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef" +Missing separate debuginfo for /lib64/libc.so.6 +Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7" general valgrind monitor commands: help [debug] : monitor command help. With debug: + debugging commands v.wait [<ms>] : sleep <ms> (default 0) then continue |
|
From: Tom H. <to...@co...> - 2014-04-04 02:49:27
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.1-48.fc15) Assembler: GNU assembler version 2.21.51.0.6-6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.13.6-200.fc20.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2014-04-04 03:13:45 BST Ended at 2014-04-04 03:49:12 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 674 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Tom H. <to...@co...> - 2014-04-04 02:41:47
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.50.20110722-16.fc16) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.13.6-200.fc20.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2014-04-04 03:02:14 BST Ended at 2014-04-04 03:41:36 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 674 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Rich C. <rc...@wi...> - 2014-04-04 02:34:26
|
valgrind revision: 13889
VEX revision: 2846
C compiler: gcc (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
GDB: GNU gdb (GDB; openSUSE Factory) 7.6.50.20130731-cvs
Assembler: GNU assembler (GNU Binutils; openSUSE Factory) 2.23.2
C library: GNU C Library (GNU libc) stable release version 2.18 (git )
uname -mrs: Linux 3.11.4-3-desktop x86_64
Vendor version: Welcome to openSUSE 13.1 "Bottle" Beta 1 - Kernel %r (%t).
Nightly build on rodan ( Linux 3.11.4-3-desktop x86_64 )
Started at 2014-04-03 19:22:01 CDT
Ended at 2014-04-03 21:34:17 CDT
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
== 589 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/dw4 (stderr)
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/threadname (stderr)
memcheck/tests/threadname_xml (stderr)
exp-sgcheck/tests/hackedbz2 (stderr)
=================================================
./valgrind-new/exp-sgcheck/tests/hackedbz2.stderr.diff-glibc28-amd64
=================================================
--- hackedbz2.stderr.exp-glibc28-amd64 2014-04-03 20:24:49.247191122 -0500
+++ hackedbz2.stderr.out 2014-04-03 21:32:58.010622630 -0500
@@ -1,7 +1,6 @@
Invalid read of size 1
- at 0x........: vex_strlen (hackedbz2.c:1006)
- by 0x........: add_to_myprintf_buf (hackedbz2.c:1284)
+ at 0x........: add_to_myprintf_buf (hackedbz2.c:1006)
by 0x........: vex_printf (hackedbz2.c:1155)
by 0x........: BZ2_compressBlock (hackedbz2.c:4039)
by 0x........: handle_compress (hackedbz2.c:4761)
=================================================
./valgrind-new/memcheck/tests/dw4.stderr.diff
=================================================
--- dw4.stderr.exp 2014-04-03 20:29:58.950783824 -0500
+++ dw4.stderr.out 2014-04-03 20:50:58.284392664 -0500
@@ -1,3 +1,11 @@
+
+parse_type_DIE: confused by:
+ <1><492>: DW_TAG_structure_type
+ DW_AT_signature : 8 byte signature: 9b d0 55 13 bb 1e e9 37
+
+WARNING: Serious error when reading debug info
+When reading debug info from /usr/local/src/valgrind/nightly/valgrind-new/memcheck/tests/dw4:
+parse_type_DIE: confused by the above DIE
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:49)
@@ -8,12 +16,10 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:51)
- Location 0x........ is 0 bytes inside S2[0].i,
- a global variable declared at dw4.c:42
+ Address 0x........ is 4 bytes inside data symbol "S2"
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:52)
- Location 0x........ is 0 bytes inside local.i,
- declared at dw4.c:46, in frame #1 of thread 1
+ Address 0x........ is on thread 1's stack
=================================================
./valgrind-new/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2014-04-03 20:31:21.939746534 -0500
+++ err_disable3.stderr.out 2014-04-03 20:51:04.967470191 -0500
@@ -10,8 +10,6 @@
Thread 2:
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
- by 0x........: child_fn (err_disable3.c:31)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-new/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2014-04-03 20:30:47.794350432 -0500
+++ err_disable4.stderr.out 2014-04-03 20:51:09.304520503 -0500
@@ -1501,8 +1501,6 @@
Thread x:
Invalid read of size 1
at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
=================================================
./valgrind-new/memcheck/tests/threadname.stderr.diff
=================================================
--- threadname.stderr.exp 2014-04-03 20:30:39.172250412 -0500
+++ threadname.stderr.out 2014-04-03 20:56:57.677561788 -0500
@@ -9,36 +9,12 @@
Thread 2:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_0 (threadname.c:53)
- ...
Address 0x........ is 0 bytes after a block of size 2 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:15)
by 0x........: child_fn_0 (threadname.c:53)
...
-Thread 3 try1:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
- Address 0x........ is 0 bytes after a block of size 3 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
-
-Thread 4 012345678901234:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
- Address 0x........ is 0 bytes after a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
-
Thread 1:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
=================================================
./valgrind-new/memcheck/tests/threadname_xml.stderr.diff
=================================================
--- threadname_xml.stderr.exp 2014-04-03 20:30:23.364067029 -0500
+++ threadname_xml.stderr.out 2014-04-03 20:56:59.706585326 -0500
@@ -94,14 +94,6 @@
<file>threadname.c</file>
<line>...</line>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_0</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
</stack>
<auxwhat>Address 0x........ is 0 bytes after a block of size 2 alloc'd</auxwhat>
<stack>
@@ -135,112 +127,6 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
- <threadname>try1</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 3 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>malloc</fn>
- <dir>...</dir>
- <file>vg_replace_malloc.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
-</error>
-
-<error>
- <unique>0x........</unique>
- <tid>...</tid>
- <threadname>012345678901234</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_2</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 4 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
<truncated beyond 100 lines>
=================================================
./valgrind-old/exp-sgcheck/tests/hackedbz2.stderr.diff-glibc28-amd64
=================================================
--- hackedbz2.stderr.exp-glibc28-amd64 2014-04-03 19:22:16.709659988 -0500
+++ hackedbz2.stderr.out 2014-04-03 20:23:11.564057954 -0500
@@ -1,7 +1,6 @@
Invalid read of size 1
- at 0x........: vex_strlen (hackedbz2.c:1006)
- by 0x........: add_to_myprintf_buf (hackedbz2.c:1284)
+ at 0x........: add_to_myprintf_buf (hackedbz2.c:1006)
by 0x........: vex_printf (hackedbz2.c:1155)
by 0x........: BZ2_compressBlock (hackedbz2.c:4039)
by 0x........: handle_compress (hackedbz2.c:4761)
=================================================
./valgrind-old/memcheck/tests/dw4.stderr.diff
=================================================
--- dw4.stderr.exp 2014-04-03 19:22:43.416969805 -0500
+++ dw4.stderr.out 2014-04-03 19:41:06.602767259 -0500
@@ -1,3 +1,11 @@
+
+parse_type_DIE: confused by:
+ <1><492>: DW_TAG_structure_type
+ DW_AT_signature : 8 byte signature: 9b d0 55 13 bb 1e e9 37
+
+WARNING: Serious error when reading debug info
+When reading debug info from /usr/local/src/valgrind/nightly/valgrind-old/memcheck/tests/dw4:
+parse_type_DIE: confused by the above DIE
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:49)
@@ -8,12 +16,10 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:51)
- Location 0x........ is 0 bytes inside S2[0].i,
- a global variable declared at dw4.c:42
+ Address 0x........ is 4 bytes inside data symbol "S2"
Uninitialised byte(s) found during client check request
at 0x........: croak (dw4.c:27)
by 0x........: main (dw4.c:52)
- Location 0x........ is 0 bytes inside local.i,
- declared at dw4.c:46, in frame #1 of thread 1
+ Address 0x........ is on thread 1's stack
=================================================
./valgrind-old/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2014-04-03 19:22:43.433970002 -0500
+++ err_disable3.stderr.out 2014-04-03 19:41:13.344845471 -0500
@@ -10,8 +10,6 @@
Thread 2:
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
- by 0x........: child_fn (err_disable3.c:31)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-old/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2014-04-03 19:22:44.221979143 -0500
+++ err_disable4.stderr.out 2014-04-03 19:41:19.625918334 -0500
@@ -1501,8 +1501,6 @@
Thread x:
Invalid read of size 1
at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
=================================================
./valgrind-old/memcheck/tests/threadname.stderr.diff
=================================================
--- threadname.stderr.exp 2014-04-03 19:22:42.931964178 -0500
+++ threadname.stderr.out 2014-04-03 19:47:09.188973424 -0500
@@ -9,36 +9,12 @@
Thread 2:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_0 (threadname.c:53)
- ...
Address 0x........ is 0 bytes after a block of size 2 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:15)
by 0x........: child_fn_0 (threadname.c:53)
...
-Thread 3 try1:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
- Address 0x........ is 0 bytes after a block of size 3 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
-
-Thread 4 012345678901234:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
- Address 0x........ is 0 bytes after a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
-
Thread 1:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
=================================================
./valgrind-old/memcheck/tests/threadname_xml.stderr.diff
=================================================
--- threadname_xml.stderr.exp 2014-04-03 19:22:42.168955327 -0500
+++ threadname_xml.stderr.out 2014-04-03 19:47:11.326998226 -0500
@@ -94,14 +94,6 @@
<file>threadname.c</file>
<line>...</line>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_0</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
</stack>
<auxwhat>Address 0x........ is 0 bytes after a block of size 2 alloc'd</auxwhat>
<stack>
@@ -135,112 +127,6 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
- <threadname>try1</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 3 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>malloc</fn>
- <dir>...</dir>
- <file>vg_replace_malloc.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
-</error>
-
-<error>
- <unique>0x........</unique>
- <tid>...</tid>
- <threadname>012345678901234</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_2</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 4 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2014-04-04 02:30:50
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) GDB: GNU gdb (GDB) Fedora (7.4.50.20120120-54.fc17) Assembler: GNU assembler version 2.22.52.0.1-10.fc17 20120131 C library: GNU C Library stable release version 2.15 uname -mrs: Linux 3.13.6-200.fc20.x86_64 x86_64 Vendor version: Fedora release 17 (Beefy Miracle) Nightly build on bristol ( x86_64, Fedora 17 (Beefy Miracle) ) Started at 2014-04-04 02:51:52 BST Ended at 2014-04-04 03:30:39 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 == 674 tests, 4 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Tom H. <to...@co...> - 2014-04-04 02:26:02
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora 7.5.1-42.fc18 Assembler: GNU assembler version 2.23.51.0.1-10.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.13.6-200.fc20.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2014-04-04 02:41:29 BST Ended at 2014-04-04 03:25:49 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 == 674 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Tom H. <to...@co...> - 2014-04-04 02:12:27
|
valgrind revision: 13889 VEX revision: 2846 C compiler: gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7) GDB: GNU gdb (GDB) Fedora 7.6.1-46.fc19 Assembler: GNU assembler version 2.23.52.0.1-9.fc19 20130226 C library: GNU C Library (GNU libc) stable release version 2.17 uname -mrs: Linux 3.13.6-200.fc20.x86_64 x86_64 Vendor version: Fedora release 19 (Schrödingerâs Cat) Nightly build on bristol ( x86_64, Fedora 19 (Schrödingerâs Cat) ) Started at 2014-04-04 02:31:53 BST Ended at 2014-04-04 03:12:11 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 674 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) |
|
From: <sv...@va...> - 2014-04-03 23:03:43
|
Author: sewardj
Date: Thu Apr 3 23:03:32 2014
New Revision: 2846
Log:
Implement
LD2/ST2 (multiple structures, post index) (some cases)
LD1/ST1 (multiple structures, no offset) (some cases)
Modified:
trunk/priv/guest_arm64_toIR.c
trunk/priv/host_arm64_defs.c
trunk/priv/host_arm64_isel.c
Modified: trunk/priv/guest_arm64_toIR.c
==============================================================================
--- trunk/priv/guest_arm64_toIR.c (original)
+++ trunk/priv/guest_arm64_toIR.c Thu Apr 3 23:03:32 2014
@@ -4139,15 +4139,22 @@
return True;
}
- /*
+ /* 31 23
+ 0000 1100 1001 1111 0111 11 N T ST1 {vT.1d}, [xN|SP], #8
+ 0000 1100 1101 1111 0111 11 N T LD1 {vT.1d}, [xN|SP], #8
0000 1100 1001 1111 0111 10 N T ST1 {vT.2s}, [xN|SP], #8
+ 0000 1100 1101 1111 0111 10 N T LD1 {vT.2s}, [xN|SP], #8
0000 1100 1001 1111 0111 01 N T ST1 {vT.4h}, [xN|SP], #8
+ 0000 1100 1101 1111 0111 01 N T LD1 {vT.4h}, [xN|SP], #8
+ 0000 1100 1001 1111 0111 00 N T ST1 {vT.8b}, [xN|SP], #8
+ 0000 1100 1101 1111 0111 00 N T LD1 {vT.8b}, [xN|SP], #8
Note that #8 is implied and cannot be any other value.
FIXME does this assume that the host is little endian?
*/
- if ( (insn & 0xFFFFFC00) == 0x0C9F7800 // st1 {vT.2s}, [xN|SP], #8
- || (insn & 0xFFFFFC00) == 0x0C9F7400 // st1 {vT.4h}, [xN|SP], #8
+ if ( (insn & 0xFFFFF000) == 0x0CDF7000 // LD1 cases
+ || (insn & 0xFFFFF000) == 0x0C9F7000 // ST1 cases
) {
+ Bool isLD = INSN(22,22) == 1;
UInt rN = INSN(9,5);
UInt vT = INSN(4,0);
IRTemp tEA = newTemp(Ity_I64);
@@ -4155,9 +4162,120 @@
const HChar* name = names[INSN(11,10)];
assign(tEA, getIReg64orSP(rN));
if (rN == 31) { /* FIXME generate stack alignment check */ }
- storeLE(mkexpr(tEA), getQRegLane(vT, 0, Ity_I64));
+ if (isLD) {
+ putQRegLane(vT, 0, loadLE(Ity_I64, mkexpr(tEA)));
+ putQRegLane(vT, 1, mkU64(0));
+ } else {
+ storeLE(mkexpr(tEA), getQRegLane(vT, 0, Ity_I64));
+ }
putIReg64orSP(rN, binop(Iop_Add64, mkexpr(tEA), mkU64(8)));
- DIP("st1 {v%u.%s}, [%s], #8\n", vT, name, nameIReg64orSP(rN));
+ DIP("%s {v%u.%s}, [%s], #8\n", isLD ? "ld1" : "st1",
+ vT, name, nameIReg64orSP(rN));
+ return True;
+ }
+
+ /* ---------- LD2/ST2 (multiple structures, post index) ---------- */
+ /* Only a very few cases. */
+ /* 31 23 11 9 4
+ 0100 1100 1101 1111 1000 11 n t LD2 {Vt.2d, V(t+1)%32.2d}, [Xn|SP], #32
+ 0100 1100 1001 1111 1000 11 n t ST2 {Vt.2d, V(t+1)%32.2d}, [Xn|SP], #32
+ 0100 1100 1101 1111 1000 10 n t LD2 {Vt.4s, V(t+1)%32.4s}, [Xn|SP], #32
+ 0100 1100 1001 1111 1000 10 n t ST2 {Vt.4s, V(t+1)%32.4s}, [Xn|SP], #32
+ */
+ if ( (insn & 0xFFFFFC00) == 0x4CDF8C00 // LD2 .2d
+ || (insn & 0xFFFFFC00) == 0x4C9F8C00 // ST2 .2d
+ || (insn & 0xFFFFFC00) == 0x4CDF8800 // LD2 .4s
+ || (insn & 0xFFFFFC00) == 0x4C9F8800 // ST2 .4s
+ ) {
+ Bool isLD = INSN(22,22) == 1;
+ UInt rN = INSN(9,5);
+ UInt vT = INSN(4,0);
+ IRTemp tEA = newTemp(Ity_I64);
+ UInt sz = INSN(11,10);
+ const HChar* name = "??";
+ assign(tEA, getIReg64orSP(rN));
+ if (rN == 31) { /* FIXME generate stack alignment check */ }
+ IRExpr* tEA_0 = binop(Iop_Add64, mkexpr(tEA), mkU64(0));
+ IRExpr* tEA_8 = binop(Iop_Add64, mkexpr(tEA), mkU64(8));
+ IRExpr* tEA_16 = binop(Iop_Add64, mkexpr(tEA), mkU64(16));
+ IRExpr* tEA_24 = binop(Iop_Add64, mkexpr(tEA), mkU64(24));
+ if (sz == BITS2(1,1)) {
+ name = "2d";
+ if (isLD) {
+ putQRegLane((vT+0) % 32, 0, loadLE(Ity_I64, tEA_0));
+ putQRegLane((vT+0) % 32, 1, loadLE(Ity_I64, tEA_16));
+ putQRegLane((vT+1) % 32, 0, loadLE(Ity_I64, tEA_8));
+ putQRegLane((vT+1) % 32, 1, loadLE(Ity_I64, tEA_24));
+ } else {
+ storeLE(tEA_0, getQRegLane((vT+0) % 32, 0, Ity_I64));
+ storeLE(tEA_16, getQRegLane((vT+0) % 32, 1, Ity_I64));
+ storeLE(tEA_8, getQRegLane((vT+1) % 32, 0, Ity_I64));
+ storeLE(tEA_24, getQRegLane((vT+1) % 32, 1, Ity_I64));
+ }
+ }
+ else if (sz == BITS2(1,0)) {
+ /* Uh, this is ugly. TODO: better. */
+ name = "4s";
+ IRExpr* tEA_4 = binop(Iop_Add64, mkexpr(tEA), mkU64(4));
+ IRExpr* tEA_12 = binop(Iop_Add64, mkexpr(tEA), mkU64(12));
+ IRExpr* tEA_20 = binop(Iop_Add64, mkexpr(tEA), mkU64(20));
+ IRExpr* tEA_28 = binop(Iop_Add64, mkexpr(tEA), mkU64(28));
+ if (isLD) {
+ putQRegLane((vT+0) % 32, 0, loadLE(Ity_I32, tEA_0));
+ putQRegLane((vT+0) % 32, 1, loadLE(Ity_I32, tEA_8));
+ putQRegLane((vT+0) % 32, 2, loadLE(Ity_I32, tEA_16));
+ putQRegLane((vT+0) % 32, 3, loadLE(Ity_I32, tEA_24));
+ putQRegLane((vT+1) % 32, 0, loadLE(Ity_I32, tEA_4));
+ putQRegLane((vT+1) % 32, 1, loadLE(Ity_I32, tEA_12));
+ putQRegLane((vT+1) % 32, 2, loadLE(Ity_I32, tEA_20));
+ putQRegLane((vT+1) % 32, 3, loadLE(Ity_I32, tEA_28));
+ } else {
+ storeLE(tEA_0, getQRegLane((vT+0) % 32, 0, Ity_I32));
+ storeLE(tEA_8, getQRegLane((vT+0) % 32, 1, Ity_I32));
+ storeLE(tEA_16, getQRegLane((vT+0) % 32, 2, Ity_I32));
+ storeLE(tEA_24, getQRegLane((vT+0) % 32, 3, Ity_I32));
+ storeLE(tEA_4, getQRegLane((vT+1) % 32, 0, Ity_I32));
+ storeLE(tEA_12, getQRegLane((vT+1) % 32, 1, Ity_I32));
+ storeLE(tEA_20, getQRegLane((vT+1) % 32, 2, Ity_I32));
+ storeLE(tEA_28, getQRegLane((vT+1) % 32, 3, Ity_I32));
+ }
+ }
+ else {
+ vassert(0); // Can't happen.
+ }
+ putIReg64orSP(rN, binop(Iop_Add64, mkexpr(tEA), mkU64(32)));
+ DIP("%s {v%u.%s, v%u.%s}, [%s], #32\n", isLD ? "ld2" : "st2",
+ (vT+0) % 32, name, (vT+1) % 32, name, nameIReg64orSP(rN));
+ return True;
+ }
+
+ /* ---------- LD1/ST1 (multiple structures, no offset) ---------- */
+ /* Only a very few cases. */
+ /* 31 23
+ 0100 1100 0100 0000 1010 00 n t LD1 {Vt.16b, V(t+1)%32.16b}, [Xn|SP]
+ 0100 1100 0000 0000 1010 00 n t ST1 {Vt.16b, V(t+1)%32.16b}, [Xn|SP]
+ */
+ if ( (insn & 0xFFFFFC00) == 0x4C40A000 // LD1
+ || (insn & 0xFFFFFC00) == 0x4C00A000 // ST1
+ ) {
+ Bool isLD = INSN(22,22) == 1;
+ UInt rN = INSN(9,5);
+ UInt vT = INSN(4,0);
+ IRTemp tEA = newTemp(Ity_I64);
+ const HChar* name = "16b";
+ assign(tEA, getIReg64orSP(rN));
+ if (rN == 31) { /* FIXME generate stack alignment check */ }
+ IRExpr* tEA_0 = binop(Iop_Add64, mkexpr(tEA), mkU64(0));
+ IRExpr* tEA_16 = binop(Iop_Add64, mkexpr(tEA), mkU64(16));
+ if (isLD) {
+ putQReg128((vT+0) % 32, loadLE(Ity_V128, tEA_0));
+ putQReg128((vT+1) % 32, loadLE(Ity_V128, tEA_16));
+ } else {
+ storeLE(tEA_0, getQReg128((vT+0) % 32));
+ storeLE(tEA_16, getQReg128((vT+1) % 32));
+ }
+ DIP("%s {v%u.%s, v%u.%s}, [%s], #32\n", isLD ? "ld1" : "st1",
+ (vT+0) % 32, name, (vT+1) % 32, name, nameIReg64orSP(rN));
return True;
}
Modified: trunk/priv/host_arm64_defs.c
==============================================================================
--- trunk/priv/host_arm64_defs.c (original)
+++ trunk/priv/host_arm64_defs.c Thu Apr 3 23:03:32 2014
@@ -5157,6 +5157,9 @@
case ARM64vecu_FNEG64x2:
*p++ = X_3_8_5_6_5_5(X011, X01110111, X00000, X111110, vN, vD);
break;
+ case ARM64vecu_FNEG32x4:
+ *p++ = X_3_8_5_6_5_5(X011, X01110101, X00000, X111110, vN, vD);
+ break;
case ARM64vecu_NOT:
*p++ = X_3_8_5_6_5_5(X011, X01110001, X00000, X010110, vN, vD);
break;
Modified: trunk/priv/host_arm64_isel.c
==============================================================================
--- trunk/priv/host_arm64_isel.c (original)
+++ trunk/priv/host_arm64_isel.c Thu Apr 3 23:03:32 2014
@@ -4402,7 +4402,8 @@
case Iop_NotV128:
case Iop_Abs64Fx2:
case Iop_Abs32Fx4:
- case Iop_Neg64Fx2: {
+ case Iop_Neg64Fx2:
+ case Iop_Neg32Fx4: {
HReg res = newVRegV(env);
HReg arg = iselV128Expr(env, e->Iex.Unop.arg);
ARM64VecUnaryOp op = ARM64vecu_INVALID;
@@ -4411,6 +4412,7 @@
case Iop_Abs64Fx2: op = ARM64vecu_FABS64x2; break;
case Iop_Abs32Fx4: op = ARM64vecu_FABS32x4; break;
case Iop_Neg64Fx2: op = ARM64vecu_FNEG64x2; break;
+ case Iop_Neg32Fx4: op = ARM64vecu_FNEG32x4; break;
default: vassert(0);
}
addInstr(env, ARM64Instr_VUnaryV(op, res, arg));
|
|
From: <sv...@va...> - 2014-04-03 23:01:33
|
Author: sewardj
Date: Thu Apr 3 23:01:24 2014
New Revision: 13889
Log:
Add tests for some variants of LD{1,2}/ST{1,2} that load or
store two registers.
Modified:
trunk/none/tests/arm64/test_arm64_int.c
Modified: trunk/none/tests/arm64/test_arm64_int.c
==============================================================================
--- trunk/none/tests/arm64/test_arm64_int.c (original)
+++ trunk/none/tests/arm64/test_arm64_int.c Thu Apr 3 23:01:24 2014
@@ -10794,18 +10794,18 @@
// Out: memory area, xferred vec regs, xferred int regs, addr reg1, addr reg2
//
// INSN may mention the following regs as containing load/store data:
-// x13 x23 v17 v31
+// x13 x23 v17 v18
// and
// x5 as containing the base address
// x6 as containing an offset, if required
-// A memory area is filled with random data, and x13, x23, v17 and v31
+// A memory area is filled with random data, and x13, x23, v17 and v18
// are loaded with random data too. INSN is then executed, with
// x5 set to the middle of the memory area + AREG1OFF, and x6 set to AREG2VAL.
//
// What is printed out: the XOR of the old and new versions of the
// following:
// the memory area
-// x13 x23 v17 v31
+// x13 x23 v17 v18
// and the new-old values of these
// x5 x6
// If the insn modifies its base register then the x5 version will
@@ -10817,7 +10817,7 @@
UChar* area = memalign16(N); \
UChar area2[N]; \
for (i = 0; i < N; i++) area[i] = area2[i] = randUChar(); \
- ULong block[8]; /* x13 x23 v17.d[0] v17.d[1] v31.d[0] v31.d[1] x5 x6 */ \
+ ULong block[8]; /* x13 x23 v17.d[0] v17.d[1] v18.d[0] v18.d[1] x5 x6 */ \
for (i = 0; i < 6; i++) block[i] = randULong(); \
block[6] = (ULong)(&area[128]) + (Long)(Int)AREG1OFF; \
block[7] = (Long)AREG2VAL; \
@@ -10827,17 +10827,17 @@
"ldr x13, [%0, #0] ; " \
"ldr x23, [%0, #8] ; " \
"ldr q17, [%0, #16] ; " \
- "ldr q31, [%0, #32] ; " \
+ "ldr q18, [%0, #32] ; " \
"ldr x5, [%0, #48] ; " \
"ldr x6, [%0, #56] ; " \
INSN " ; " \
"str x13, [%0, #0] ; " \
"str x23, [%0, #8] ; " \
"str q17, [%0, #16] ; " \
- "str q31, [%0, #32] ; " \
+ "str q18, [%0, #32] ; " \
"str x5, [%0, #48] ; " \
"str x6, [%0, #56] ; " \
- : : "r"(&block[0]) : "x5", "x6", "x13","x23","v17","v31","memory","cc" \
+ : : "r"(&block[0]) : "x5", "x6", "x13","x23","v17","v18","memory","cc" \
); \
printf("%s with x5 = middle_of_block+%lld, x6=%lld\n", \
INSN, (Long)AREG1OFF, (Long)AREG2VAL); \
@@ -10846,8 +10846,8 @@
printf(" %016llx x23 (xfer intreg #2)\n", block[1] ^ block2[1]); \
printf(" %016llx v17.d[0] (xfer vecreg #1)\n", block[2] ^ block2[2]); \
printf(" %016llx v17.d[1] (xfer vecreg #1)\n", block[3] ^ block2[3]); \
- printf(" %016llx v31.d[0] (xfer vecreg #2)\n", block[4] ^ block2[4]); \
- printf(" %016llx v31.d[1] (xfer vecreg #2)\n", block[5] ^ block2[5]); \
+ printf(" %016llx v18.d[0] (xfer vecreg #2)\n", block[4] ^ block2[4]); \
+ printf(" %016llx v18.d[1] (xfer vecreg #2)\n", block[5] ^ block2[5]); \
printf(" %16lld x5 (base reg)\n", block[6] - block2[6]); \
printf(" %16lld x6 (index reg)\n", block[7] - block2[7]); \
printf("\n"); \
@@ -10982,29 +10982,29 @@
////////////////////////////////////////////////////////////////
printf("LDP,STP (immediate, simm7) (FP&VEC)\n");
-MEM_TEST("stp q17, q31, [x5, 32]", -16, 4);
-MEM_TEST("stp q17, q31, [x5, 32]!", -16, 4);
-MEM_TEST("stp q17, q31, [x5], 32", -16, 4);
-
-MEM_TEST("stp d17, d31, [x5, 32]", -16, 4);
-MEM_TEST("stp d17, d31, [x5, 32]!", -16, 4);
-MEM_TEST("stp d17, d31, [x5], 32", -16, 4);
-
-//MEM_TEST("stp s17, s31, [x5, 32]", -16, 4);
-//MEM_TEST("stp s17, s31, [x5, 32]!", -16, 4);
-//MEM_TEST("stp s17, s31, [x5], 32", -16, 4);
-
-MEM_TEST("ldp q17, q31, [x5, 32]", -16, 4);
-MEM_TEST("ldp q17, q31, [x5, 32]!", -16, 4);
-MEM_TEST("ldp q17, q31, [x5], 32", -16, 4);
-
-MEM_TEST("ldp d17, d31, [x5, 32]", -16, 4);
-MEM_TEST("ldp d17, d31, [x5, 32]!", -16, 4);
-MEM_TEST("ldp d17, d31, [x5], 32", -16, 4);
-
-//MEM_TEST("ldp s17, s31, [x5, 32]", -16, 4);
-//MEM_TEST("ldp s17, s31, [x5, 32]!", -16, 4);
-//MEM_TEST("ldp s17, s31, [x5], 32", -16, 4);
+MEM_TEST("stp q17, q18, [x5, 32]", -16, 4);
+MEM_TEST("stp q17, q18, [x5, 32]!", -16, 4);
+MEM_TEST("stp q17, q18, [x5], 32", -16, 4);
+
+MEM_TEST("stp d17, d18, [x5, 32]", -16, 4);
+MEM_TEST("stp d17, d18, [x5, 32]!", -16, 4);
+MEM_TEST("stp d17, d18, [x5], 32", -16, 4);
+
+//MEM_TEST("stp s17, s18, [x5, 32]", -16, 4);
+//MEM_TEST("stp s17, s18, [x5, 32]!", -16, 4);
+//MEM_TEST("stp s17, s18, [x5], 32", -16, 4);
+
+MEM_TEST("ldp q17, q18, [x5, 32]", -16, 4);
+MEM_TEST("ldp q17, q18, [x5, 32]!", -16, 4);
+MEM_TEST("ldp q17, q18, [x5], 32", -16, 4);
+
+MEM_TEST("ldp d17, d18, [x5, 32]", -16, 4);
+MEM_TEST("ldp d17, d18, [x5, 32]!", -16, 4);
+MEM_TEST("ldp d17, d18, [x5], 32", -16, 4);
+
+//MEM_TEST("ldp s17, s18, [x5, 32]", -16, 4);
+//MEM_TEST("ldp s17, s18, [x5, 32]!", -16, 4);
+//MEM_TEST("ldp s17, s18, [x5], 32", -16, 4);
////////////////////////////////////////////////////////////////
printf("{LD,ST}R (vector register)\n");
@@ -11198,19 +11198,36 @@
MEM_TEST("st1 {v17.4s}, [x5], #16", 5, 0)
MEM_TEST("st1 {v17.8h}, [x5], #16", 7, 0)
MEM_TEST("st1 {v17.16b}, [x5], #16", 13, 0)
-//MEM_TEST("st1 {v17.1d}, [x5], #8", 3, 0)
+MEM_TEST("st1 {v17.1d}, [x5], #8", 3, 0)
MEM_TEST("st1 {v17.2s}, [x5], #8", 5, 0)
MEM_TEST("st1 {v17.4h}, [x5], #8", 7, 0)
-//MEM_TEST("st1 {v17.8b}, [x5], #8", 13, 0)
+MEM_TEST("st1 {v17.8b}, [x5], #8", 13, 0)
MEM_TEST("ld1 {v17.2d}, [x5], #16", 3, 0)
MEM_TEST("ld1 {v17.4s}, [x5], #16", 5, 0)
MEM_TEST("ld1 {v17.8h}, [x5], #16", 7, 0)
MEM_TEST("ld1 {v17.16b}, [x5], #16", 13, 0)
-//MEM_TEST("ld1 {v17.1d}, [x5], #8", 3, 0)
-//MEM_TEST("ld1 {v17.2s}, [x5], #8", 5, 0)
-//MEM_TEST("ld1 {v17.4h}, [x5], #8", 7, 0)
-//MEM_TEST("ld1 {v17.8b}, [x5], #8", 13, 0)
+MEM_TEST("ld1 {v17.1d}, [x5], #8", 3, 0)
+MEM_TEST("ld1 {v17.2s}, [x5], #8", 5, 0)
+MEM_TEST("ld1 {v17.4h}, [x5], #8", 7, 0)
+MEM_TEST("ld1 {v17.8b}, [x5], #8", 13, 0)
+
+////////////////////////////////////////////////////////////////
+printf("LD2/ST2 (multiple structures, post index) (VERY INCOMPLETE)\n");
+
+MEM_TEST("ld2 {v17.2d, v18.2d}, [x5], #32", 3, 0)
+MEM_TEST("st2 {v17.2d, v18.2d}, [x5], #32", 7, 0)
+
+MEM_TEST("ld2 {v17.4s, v18.4s}, [x5], #32", 13, 0)
+MEM_TEST("st2 {v17.4s, v18.4s}, [x5], #32", 17, 0)
+
+
+////////////////////////////////////////////////////////////////
+printf("LD1/ST1 (multiple structures, no offset) (VERY INCOMPLETE)\n");
+
+MEM_TEST("ld1 {v17.16b, v18.16b}, [x5]", 3, 0)
+MEM_TEST("st1 {v17.16b, v18.16b}, [x5]", 7, 0)
+
} /* end of test_memory2() */
@@ -11225,6 +11242,6 @@
{
if (1) test_arith();
if (1) test_memory();
- test_memory2();
+ if (1) test_memory2();
return 0;
}
|
|
From: <sv...@va...> - 2014-04-03 23:01:03
|
Author: sewardj
Date: Thu Apr 3 23:00:45 2014
New Revision: 13888
Log:
Add tests for FCMEQ, FCMGE, FCMGT, FACGE, FACGT
(reg-vs-reg variants only)
Add tests for all TBL and TBX variants.
Modified:
trunk/none/tests/arm64/test_arm64_fp_and_simd.c
Modified: trunk/none/tests/arm64/test_arm64_fp_and_simd.c
==============================================================================
--- trunk/none/tests/arm64/test_arm64_fp_and_simd.c (original)
+++ trunk/none/tests/arm64/test_arm64_fp_and_simd.c Thu Apr 3 23:00:45 2014
@@ -1089,7 +1089,8 @@
GEN_BINARY_TEST(fabd, 2s)
/* Generate a test that involves three vector regs,
- with no bias as towards which is input or output. */
+ with no bias as towards which is input or output. It's also OK
+ to use v16, v17, v18 as scratch. */
#define GEN_THREEVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO,VECREG3NO) \
__attribute__((noinline)) \
static void test_##TESTNAME ( void ) { \
@@ -1111,7 +1112,9 @@
"str q"#VECREG1NO", [%0, #48] ; " \
"str q"#VECREG2NO", [%0, #64] ; " \
"str q"#VECREG3NO", [%0, #80] ; " \
- : : "r"(&block[0]) : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "v"#VECREG3NO \
+ : : "r"(&block[0]) \
+ : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "v"#VECREG3NO, \
+ "v16", "v17", "v18" \
); \
printf(INSN " "); \
showV128(&block[0]); printf(" "); \
@@ -1187,6 +1190,98 @@
GEN_UNARY_TEST(fabs, 4s, 4s)
GEN_UNARY_TEST(fabs, 2s, 2s)
+GEN_BINARY_TEST(fcmeq, 2d)
+GEN_BINARY_TEST(fcmeq, 4s)
+GEN_BINARY_TEST(fcmeq, 2s)
+GEN_BINARY_TEST(fcmge, 2d)
+GEN_BINARY_TEST(fcmge, 4s)
+GEN_BINARY_TEST(fcmge, 2s)
+GEN_BINARY_TEST(fcmgt, 2d)
+GEN_BINARY_TEST(fcmgt, 4s)
+GEN_BINARY_TEST(fcmgt, 2s)
+GEN_BINARY_TEST(facge, 2d)
+GEN_BINARY_TEST(facge, 4s)
+GEN_BINARY_TEST(facge, 2s)
+GEN_BINARY_TEST(facgt, 2d)
+GEN_BINARY_TEST(facgt, 4s)
+GEN_BINARY_TEST(facgt, 2s)
+
+// Uses v15 as the first table entry
+GEN_THREEVEC_TEST(
+ tbl_16b_1reg, "tbl v21.16b, {v15.16b}, v23.16b", 21, 15, 23)
+// and v15 ^ v21 as the second table entry
+GEN_THREEVEC_TEST(
+ tbl_16b_2reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "tbl v21.16b, {v15.16b, v16.16b}, v23.16b", 21, 15, 23)
+// and v15 ^ v23 as the third table entry
+GEN_THREEVEC_TEST(
+ tbl_16b_3reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "eor v17.16b, v15.16b, v23.16b ; "
+ "tbl v21.16b, {v15.16b, v16.16b, v17.16b}, v23.16b",
+ 21, 15, 23)
+// and v21 ^ v23 as the fourth table entry
+GEN_THREEVEC_TEST(
+ tbl_16b_4reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "eor v17.16b, v15.16b, v23.16b ; "
+ "eor v18.16b, v21.16b, v23.16b ; "
+ "tbl v21.16b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.16b",
+ 21, 15, 23)
+
+// Same register scheme for tbl .8b, tbx .16b, tbx.8b
+GEN_THREEVEC_TEST(
+ tbl_8b_1reg, "tbl v21.8b, {v15.16b}, v23.8b", 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbl_8b_2reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "tbl v21.8b, {v15.16b, v16.16b}, v23.8b", 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbl_8b_3reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "eor v17.16b, v15.16b, v23.16b ; "
+ "tbl v21.8b, {v15.16b, v16.16b, v17.16b}, v23.8b",
+ 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbl_8b_4reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "eor v17.16b, v15.16b, v23.16b ; "
+ "eor v18.16b, v21.16b, v23.16b ; "
+ "tbl v21.8b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.8b",
+ 21, 15, 23)
+
+GEN_THREEVEC_TEST(
+ tbx_16b_1reg, "tbx v21.16b, {v15.16b}, v23.16b", 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbx_16b_2reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "tbx v21.16b, {v15.16b, v16.16b}, v23.16b", 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbx_16b_3reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "eor v17.16b, v15.16b, v23.16b ; "
+ "tbx v21.16b, {v15.16b, v16.16b, v17.16b}, v23.16b",
+ 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbx_16b_4reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "eor v17.16b, v15.16b, v23.16b ; "
+ "eor v18.16b, v21.16b, v23.16b ; "
+ "tbx v21.16b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.16b",
+ 21, 15, 23)
+
+// Same register scheme for tbx .8b, tbx .16b, tbx.8b
+GEN_THREEVEC_TEST(
+ tbx_8b_1reg, "tbx v21.8b, {v15.16b}, v23.8b", 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbx_8b_2reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "tbx v21.8b, {v15.16b, v16.16b}, v23.8b", 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbx_8b_3reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "eor v17.16b, v15.16b, v23.16b ; "
+ "tbx v21.8b, {v15.16b, v16.16b, v17.16b}, v23.8b",
+ 21, 15, 23)
+GEN_THREEVEC_TEST(
+ tbx_8b_4reg, "eor v16.16b, v15.16b, v21.16b ; "
+ "eor v17.16b, v15.16b, v23.16b ; "
+ "eor v18.16b, v21.16b, v23.16b ; "
+ "tbx v21.8b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.8b",
+ 21, 15, 23)
+
+
+
/* IMPORTANT: keep the tests in here in the same order as the
implementations are in guest_arm64_toIR.c. */
int main ( void )
@@ -1305,6 +1400,24 @@
//test_fabd_2s();
printf("END: F{ADD,SUB,MUL,DIV,MLA,MLS,ABD} (vector) (MISSING fabd 2s/4s)\n\n");
+ printf("BEGIN: FCM{EQ,GE,GT}, FAC{GE,GT} (vector)\n");
+ test_fcmeq_2d();
+ test_fcmeq_4s();
+ test_fcmeq_2s();
+ test_fcmge_2d();
+ test_fcmge_4s();
+ test_fcmge_2s();
+ test_fcmgt_2d();
+ test_fcmgt_4s();
+ test_fcmgt_2s();
+ test_facge_2d();
+ test_facge_4s();
+ test_facge_2s();
+ test_facgt_2d();
+ test_facgt_4s();
+ test_facgt_2s();
+ printf("END: FCM{EQ,GE,GT}, FAC{GE,GT} (vector)\n");
+
printf("BEGIN: FCVTN (MISSING 16F <- 32F cases)\n");
test_fcvtn_01();
test_fcvtn_02();
@@ -1316,16 +1429,16 @@
test_add_2s();
test_add_8h();
test_add_4h();
- //test_add_16b();
- //test_add_8b();
+ test_add_16b();
+ test_add_8b();
test_sub_2d();
test_sub_4s();
test_sub_2s();
test_sub_8h();
test_sub_4h();
- //test_sub_16b();
- //test_sub_8b();
- printf("END: ADD/SUB (vector) (MISSING b16/b8 cases)\n\n");
+ test_sub_16b();
+ test_sub_8b();
+ printf("END: ADD/SUB (vector)\n\n");
printf("BEGIN: ADD/SUB (scalar)\n");
test_add_d_d_d();
@@ -1586,5 +1699,24 @@
//test_neg_8b_8b();
printf("END: NEG (vector) (MISSING 8b/16b)\n\n");
+ printf("BEGIN: TBL, TBX\n");
+ test_tbl_16b_1reg();
+ test_tbl_16b_2reg();
+ test_tbl_16b_3reg();
+ test_tbl_16b_4reg();
+ test_tbl_8b_1reg();
+ test_tbl_8b_2reg();
+ test_tbl_8b_3reg();
+ test_tbl_8b_4reg();
+ test_tbx_16b_1reg();
+ test_tbx_16b_2reg();
+ test_tbx_16b_3reg();
+ test_tbx_16b_4reg();
+ test_tbx_8b_1reg();
+ test_tbx_8b_2reg();
+ test_tbx_8b_3reg();
+ test_tbx_8b_4reg();
+ printf("END: TBL, TBX\n");
+
return 0;
}
|
|
From: Julian S. <js...@ac...> - 2014-04-03 22:49:40
|
> also get warning from other window > > ==25684== Conditional jump or move depends on uninitialised value(s) > ==25684== at 0x40CA0D8: pthread_join (in /usr/lib64/libpthread-2.18.90.so) > ==25684== by 0x10000847: main (hg05_race2.c:31) Try running your test cases again with --track-origins=yes. That might shed some light on the issue. J |
|
From: Philippe W. <phi...@sk...> - 2014-04-03 19:27:48
|
On Thu, 2014-04-03 at 11:23 -0700, Carl E. Love wrote: Hello Carl, I am giving here and there below some comments. I am not at all sure what I give can help, but it will not do damage in any case :). > I working on porting the current Valgrind Power PC Big Endian code to > also support Power PC Little Endian code. I have seen numerous messages > where Valgrind says "Conditional jump or move depends on uninitialised > value". I am running gdb on the guest code trying to examine the V-bits > to see what bits/bytes are not valid. Unfortunately, from what I get > from Valgrind, it shows the bytes are all valid yet I get an error > message. I have put debug print statements thoughout the various > routines that fetch the V-bits to verify the endianess mode is Little > Endian. That seems to be fine. I am still trying to sort out how the > V-bit checking works, where and how it is done. Here is what I have done > to check the state of the bytes at the location of the conditional > branch. Please let me know if I am not accessing the V-bits correctly > or I am miss interpreting the output. Assuming I am doing things > correctly, where exactly in Valgrind does the Vbit test occur? I would > like to step through the code. I have found routines for > reading/writing the shadow bits in mc_translate.c but am still trying to > find where the actual test is done that generates the error. Thanks for > your help. > > Code > > x40ca0c4 <pthread_join+116> addi r26,r30,-30512 │ > │0x40ca0c8 <pthread_join+120> bl 0x40d2308 <__pthread_enable_asynccancel+8>│ > │0x40ca0cc <pthread_join+124> nop │ > B+>│0x40ca0d0 <pthread_join+128> cmpld cr7,r31,r26 │ > │0x40ca0d4 <pthread_join+132> mtlr r3 │ > │0x40ca0d8 <pthread_join+136> beq cr7,0x40ca1bc <pthread_join+364> │ > > > running with > valgrind --vgdb=yes --vgdb-shadow-registers=yes --vgdb-error=0 ./hg05_race2 When doing really lowlevel debugging, you might use --vgdb=full (which automatically activates -vex-iropt-register-updates=allregs-at-each-insn). It might maybe also help to disable all or most of the VEX optimisations using the various --vex-.... options. When you are stopped on a breakpoint with gdb+vgdb, you might maybe look at the generated code (containing the VA bits helper calls) by using monitor v.translate <addr> [<traceflags>] (same as vex tracing, but can be used interactively on precisely what you want when you want). > > When I give gdb "info reg" it shows the register, registers1 and registers2. Not sure what the resgisters2 > is all about I only see registers1 discussed in http://valgrind.org/docs/manual/mc-manual.html#mc-manual.machine > but we will print both for completeness. I believe that the register set shadow1 is used for V bits, while the register set shadow2 is used for origin tracking. BTW, have you tried with --track-origins=yes ? This might maybe give a hint ? > > Run to address 0x40ca0d0 and start poking around. Note, we get the error about > "Conditional jump or move depends on uninitialised value" at 0x40ca0d8. > > (gdb) p $r31 > $4 = 78508480 > (gdb) p $r31s1 > $5 = 0 > (gdb) p $r31s2 > $6 = 0 > (gdb) p $r26 > $7 = 67386896 > (gdb) p $r26s1 > $8 = 0 > (gdb) p $r26s2 > $9 = 0 > (gdb) p $r3 > $10 = 0 > (gdb) p $r3s1 > $11 = 0 > (gdb) p $r3s2 > $12 = 0 > > (gdb) p $cr > $14 = 0 > (gdb) p $crs1 > $15 = 0 > (gdb) p $crs2 > $16 = 0 > > So, it appeard that r26, r31 and the condition code register are > completely defined. > > 0x00000000040ca0d4 in pthread_join () from /lib64/libpthread.so.0 > 1: x/i $pc > => 0x40ca0d4 <pthread_join+132>: mtlr r3 > > (gdb) p $r3 > $17 = 0 > (gdb) p $r3s1 > $18 = 0 > (gdb) p $r3s2 > $19 = 0 > (gdb) p $lr > $20 = (void (*)()) 0x0 > (gdb) p $lrs1 > $21 = (void (*)()) 0x0 > (gdb) p $lrs2 > $22 = (void (*)()) 0x0 > (gdb) > > (gdb) si > 0x00000000040ca0d8 in pthread_join () from /lib64/libpthread.so.0 > 1: x/i $pc > => 0x40ca0d8 <pthread_join+136>: beq cr7,0x40ca1bc <pthread_join+364> > > (gdb) p $cr > $24 = 0 > (gdb) p $crs1s > $25 = 0 > (gdb) p $crs2 > $26 = 0 > > condition register bits are all zero so eq is not true > > 0x00000000040ca0d8 in pthread_join () from /lib64/libpthread.so.0 > 1: x/i $pc > => 0x40ca0d8 <pthread_join+136>: beq cr7,0x40ca1bc > <pthread_join+364> > > also get warning from other window > > ==25684== Conditional jump or move depends on uninitialised value(s) > ==25684== at 0x40CA0D8: pthread_join (in /usr/lib64/libpthread-2.18.90.so) > ==25684== by 0x10000847: main (hg05_race2.c:31) > ==25684== > ==25684== (action on error) vgdb me ... > > (gdb) p $cr > $27 = 0 > (gdb) p $crs1 > $28 = 0 > (gdb) p $crs2 > $29 = 0 > > So, if I understand this, the zero in crs1 and crs2 says all bytes (particularly byte 7) > are all defined yet I get an error?? So, where in Valgrind does the test happen? Need to > debug the code I guess. I think your understanding about the above is correct (i.e. that all bits are initiatialised and that no error should be reported). So, looks like a nasty bug. Philippe |
|
From: Carl E. L. <ce...@li...> - 2014-04-03 18:23:16
|
I working on porting the current Valgrind Power PC Big Endian code to also support Power PC Little Endian code. I have seen numerous messages where Valgrind says "Conditional jump or move depends on uninitialised value". I am running gdb on the guest code trying to examine the V-bits to see what bits/bytes are not valid. Unfortunately, from what I get from Valgrind, it shows the bytes are all valid yet I get an error message. I have put debug print statements thoughout the various routines that fetch the V-bits to verify the endianess mode is Little Endian. That seems to be fine. I am still trying to sort out how the V-bit checking works, where and how it is done. Here is what I have done to check the state of the bytes at the location of the conditional branch. Please let me know if I am not accessing the V-bits correctly or I am miss interpreting the output. Assuming I am doing things correctly, where exactly in Valgrind does the Vbit test occur? I would like to step through the code. I have found routines for reading/writing the shadow bits in mc_translate.c but am still trying to find where the actual test is done that generates the error. Thanks for your help. Code x40ca0c4 <pthread_join+116> addi r26,r30,-30512 │ │0x40ca0c8 <pthread_join+120> bl 0x40d2308 <__pthread_enable_asynccancel+8>│ │0x40ca0cc <pthread_join+124> nop │ B+>│0x40ca0d0 <pthread_join+128> cmpld cr7,r31,r26 │ │0x40ca0d4 <pthread_join+132> mtlr r3 │ │0x40ca0d8 <pthread_join+136> beq cr7,0x40ca1bc <pthread_join+364> │ running with valgrind --vgdb=yes --vgdb-shadow-registers=yes --vgdb-error=0 ./hg05_race2 When I give gdb "info reg" it shows the register, registers1 and registers2. Not sure what the resgisters2 is all about I only see registers1 discussed in http://valgrind.org/docs/manual/mc-manual.html#mc-manual.machine but we will print both for completeness. Run to address 0x40ca0d0 and start poking around. Note, we get the error about "Conditional jump or move depends on uninitialised value" at 0x40ca0d8. (gdb) p $r31 $4 = 78508480 (gdb) p $r31s1 $5 = 0 (gdb) p $r31s2 $6 = 0 (gdb) p $r26 $7 = 67386896 (gdb) p $r26s1 $8 = 0 (gdb) p $r26s2 $9 = 0 (gdb) p $r3 $10 = 0 (gdb) p $r3s1 $11 = 0 (gdb) p $r3s2 $12 = 0 (gdb) p $cr $14 = 0 (gdb) p $crs1 $15 = 0 (gdb) p $crs2 $16 = 0 So, it appeard that r26, r31 and the condition code register are completely defined. 0x00000000040ca0d4 in pthread_join () from /lib64/libpthread.so.0 1: x/i $pc => 0x40ca0d4 <pthread_join+132>: mtlr r3 (gdb) p $r3 $17 = 0 (gdb) p $r3s1 $18 = 0 (gdb) p $r3s2 $19 = 0 (gdb) p $lr $20 = (void (*)()) 0x0 (gdb) p $lrs1 $21 = (void (*)()) 0x0 (gdb) p $lrs2 $22 = (void (*)()) 0x0 (gdb) (gdb) si 0x00000000040ca0d8 in pthread_join () from /lib64/libpthread.so.0 1: x/i $pc => 0x40ca0d8 <pthread_join+136>: beq cr7,0x40ca1bc <pthread_join+364> (gdb) p $cr $24 = 0 (gdb) p $crs1s $25 = 0 (gdb) p $crs2 $26 = 0 condition register bits are all zero so eq is not true 0x00000000040ca0d8 in pthread_join () from /lib64/libpthread.so.0 1: x/i $pc => 0x40ca0d8 <pthread_join+136>: beq cr7,0x40ca1bc <pthread_join+364> also get warning from other window ==25684== Conditional jump or move depends on uninitialised value(s) ==25684== at 0x40CA0D8: pthread_join (in /usr/lib64/libpthread-2.18.90.so) ==25684== by 0x10000847: main (hg05_race2.c:31) ==25684== ==25684== (action on error) vgdb me ... (gdb) p $cr $27 = 0 (gdb) p $crs1 $28 = 0 (gdb) p $crs2 $29 = 0 So, if I understand this, the zero in crs1 and crs2 says all bytes (particularly byte 7) are all defined yet I get an error?? So, where in Valgrind does the test happen? Need to debug the code I guess. Carl Love |
|
From: Philippe W. <phi...@sk...> - 2014-04-03 16:38:41
|
On Wed, 2014-04-02 at 22:25 -0400, Emanuel Schorsch wrote: > I recently came across the error message: "Address 0x%llx "is not > stack'd, malloc'd or (recently) free'd%s\n" and was confused for a > second until I realized the not didn't apply to the free'd. I think the current message is correct, and that your change would make it incorrect. If the address was really recently freed, then in this case, the above message is *not* given. Instead, if the address is (recently) freed, the message given is something like: Invalid read of size 1 at 0x........: main (big_blocks_freed_list.c:34) Address 0x........ is 2,000 bytes inside a block of size 900,000 free'd at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (big_blocks_freed_list.c:20) In other words, as long as the freed block is in the free list, valgrind can determine the block was (recently) freed and will output a message telling a freed block was accessed. If the freed block is not anymore in the free list block (because the free list volume was exceeded), then valgrind cannot make a very precise message, and outputs the If the block is not in the free list anymore (because the free list volume was exceeded), then valgrind cannot make a "precise" diagnostic and then outputs: "Address 0x%llx "is not stack'd, malloc'd or (recently) free'd%s\n" If you believe that the above is not matching your specific case, then the best is to provide a small test case producing the "wrong message" for which you would expect the changed message. Philippe |
|
From: <sv...@va...> - 2014-04-03 13:49:03
|
Author: sewardj
Date: Thu Apr 3 13:48:54 2014
New Revision: 2845
Log:
Implement TBL and TBX instructions.
Modified:
trunk/priv/guest_arm64_toIR.c
trunk/priv/host_arm64_defs.c
trunk/priv/host_arm64_defs.h
trunk/priv/host_arm64_isel.c
Modified: trunk/priv/guest_arm64_toIR.c
==============================================================================
--- trunk/priv/guest_arm64_toIR.c (original)
+++ trunk/priv/guest_arm64_toIR.c Thu Apr 3 13:48:54 2014
@@ -4987,6 +4987,96 @@
}
+/* Generate IR for TBL and TBX. This deals with the 128 bit case
+ only. */
+static IRTemp math_TBL_TBX ( IRTemp tab[4], UInt len, IRTemp src,
+ IRTemp oor_values )
+{
+ vassert(len >= 0 && len <= 3);
+
+ /* Generate some useful constants as concisely as possible. */
+ IRTemp half15 = newTemp(Ity_I64);
+ assign(half15, mkU64(0x0F0F0F0F0F0F0F0FULL));
+ IRTemp half16 = newTemp(Ity_I64);
+ assign(half16, mkU64(0x1010101010101010ULL));
+
+ /* A zero vector */
+ IRTemp allZero = newTemp(Ity_V128);
+ assign(allZero, mkV128(0x0000));
+ /* A vector containing 15 in each 8-bit lane */
+ IRTemp all15 = newTemp(Ity_V128);
+ assign(all15, binop(Iop_64HLtoV128, mkexpr(half15), mkexpr(half15)));
+ /* A vector containing 16 in each 8-bit lane */
+ IRTemp all16 = newTemp(Ity_V128);
+ assign(all16, binop(Iop_64HLtoV128, mkexpr(half16), mkexpr(half16)));
+ /* A vector containing 32 in each 8-bit lane */
+ IRTemp all32 = newTemp(Ity_V128);
+ assign(all32, binop(Iop_Add8x16, mkexpr(all16), mkexpr(all16)));
+ /* A vector containing 48 in each 8-bit lane */
+ IRTemp all48 = newTemp(Ity_V128);
+ assign(all48, binop(Iop_Add8x16, mkexpr(all16), mkexpr(all32)));
+ /* A vector containing 64 in each 8-bit lane */
+ IRTemp all64 = newTemp(Ity_V128);
+ assign(all64, binop(Iop_Add8x16, mkexpr(all32), mkexpr(all32)));
+
+ /* Group the 16/32/48/64 vectors so as to be indexable. */
+ IRTemp allXX[4] = { all16, all32, all48, all64 };
+
+ /* Compute the result for each table vector, with zeroes in places
+ where the index values are out of range, and OR them into the
+ running vector. */
+ IRTemp running_result = newTemp(Ity_V128);
+ assign(running_result, mkV128(0));
+
+ UInt tabent;
+ for (tabent = 0; tabent <= len; tabent++) {
+ vassert(tabent >= 0 && tabent < 4);
+ IRTemp bias = newTemp(Ity_V128);
+ assign(bias,
+ mkexpr(tabent == 0 ? allZero : allXX[tabent-1]));
+ IRTemp biased_indices = newTemp(Ity_V128);
+ assign(biased_indices,
+ binop(Iop_Sub8x16, mkexpr(src), mkexpr(bias)));
+ IRTemp valid_mask = newTemp(Ity_V128);
+ assign(valid_mask,
+ binop(Iop_CmpGT8Ux16, mkexpr(all16), mkexpr(biased_indices)));
+ IRTemp safe_biased_indices = newTemp(Ity_V128);
+ assign(safe_biased_indices,
+ binop(Iop_AndV128, mkexpr(biased_indices), mkexpr(all15)));
+ IRTemp results_or_junk = newTemp(Ity_V128);
+ assign(results_or_junk,
+ binop(Iop_Perm8x16, mkexpr(tab[tabent]),
+ mkexpr(safe_biased_indices)));
+ IRTemp results_or_zero = newTemp(Ity_V128);
+ assign(results_or_zero,
+ binop(Iop_AndV128, mkexpr(results_or_junk), mkexpr(valid_mask)));
+ /* And OR that into the running result. */
+ IRTemp tmp = newTemp(Ity_V128);
+ assign(tmp, binop(Iop_OrV128, mkexpr(results_or_zero),
+ mkexpr(running_result)));
+ running_result = tmp;
+ }
+
+ /* So now running_result holds the overall result where the indices
+ are in range, and zero in out-of-range lanes. Now we need to
+ compute an overall validity mask and use this to copy in the
+ lanes in the oor_values for out of range indices. This is
+ unnecessary for TBL but will get folded out by iropt, so we lean
+ on that and generate the same code for TBL and TBX here. */
+ IRTemp overall_valid_mask = newTemp(Ity_V128);
+ assign(overall_valid_mask,
+ binop(Iop_CmpGT8Ux16, mkexpr(allXX[len]), mkexpr(src)));
+ IRTemp result = newTemp(Ity_V128);
+ assign(result,
+ binop(Iop_OrV128,
+ mkexpr(running_result),
+ binop(Iop_AndV128,
+ mkexpr(oor_values),
+ unop(Iop_NotV128, mkexpr(overall_valid_mask)))));
+ return result;
+}
+
+
static
Bool dis_ARM64_simd_and_fp(/*MB_OUT*/DisResult* dres, UInt insn)
{
@@ -6734,6 +6824,43 @@
/* else fall through */
}
+ /* -------------------- TBL, TBX -------------------- */
+ /* 31 28 20 15 14 12 9 4
+ 0q0 01110 000 m 0 len 000 n d TBL Vd.Ta, {Vn .. V(n+len)%32}, Vm.Ta
+ 0q0 01110 000 m 0 len 100 n d TBX Vd.Ta, {Vn .. V(n+len)%32}, Vm.Ta
+ where Ta = 16b(q=1) or 8b(q=0)
+ */
+ if (INSN(31,31) == 0 && INSN(29,21) == BITS9(0,0,1,1,1,0,0,0,0)
+ && INSN(15,15) == 0 && INSN(11,10) == BITS2(0,0)) {
+ Bool isQ = INSN(30,30) == 1;
+ Bool isTBX = INSN(12,12) == 1;
+ UInt mm = INSN(20,16);
+ UInt len = INSN(14,13);
+ UInt nn = INSN(9,5);
+ UInt dd = INSN(4,0);
+ /* The out-of-range values to use. */
+ IRTemp oor_values = newTemp(Ity_V128);
+ assign(oor_values, isTBX ? getQReg128(dd) : mkV128(0));
+ /* src value */
+ IRTemp src = newTemp(Ity_V128);
+ assign(src, getQReg128(mm));
+ /* The table values */
+ IRTemp tab[4];
+ UInt i;
+ for (i = 0; i <= len; i++) {
+ vassert(i < 4);
+ tab[i] = newTemp(Ity_V128);
+ assign(tab[i], getQReg128((nn + i) % 32));
+ }
+ IRTemp res = math_TBL_TBX(tab, len, src, oor_values);
+ putQReg128(dd, isQ ? mkexpr(res)
+ : unop(Iop_ZeroHI64ofV128, mkexpr(res)) );
+ const HChar* Ta = isQ ? "16b" : "8b";
+ const HChar* nm = isTBX ? "tbx" : "tbl";
+ DIP("%s %s.%s, {v%d.16b .. v%d.16b}, %s.%s\n",
+ nm, nameQReg128(dd), Ta, nn, (nn + len) % 32, nameQReg128(mm), Ta);
+ return True;
+ }
/* FIXME Temporary hacks to get through ld.so FIXME */
/* ------------------ movi vD.4s, #0x0 ------------------ */
Modified: trunk/priv/host_arm64_defs.c
==============================================================================
--- trunk/priv/host_arm64_defs.c (original)
+++ trunk/priv/host_arm64_defs.c Thu Apr 3 13:48:54 2014
@@ -853,9 +853,11 @@
case ARM64vecb_ADD64x2: *nm = "add "; *ar = "2d"; return;
case ARM64vecb_ADD32x4: *nm = "add "; *ar = "4s"; return;
case ARM64vecb_ADD16x8: *nm = "add "; *ar = "8h"; return;
+ case ARM64vecb_ADD8x16: *nm = "add "; *ar = "16b"; return;
case ARM64vecb_SUB64x2: *nm = "sub "; *ar = "2d"; return;
case ARM64vecb_SUB32x4: *nm = "sub "; *ar = "4s"; return;
case ARM64vecb_SUB16x8: *nm = "sub "; *ar = "8h"; return;
+ case ARM64vecb_SUB8x16: *nm = "sub "; *ar = "16b"; return;
case ARM64vecb_MUL32x4: *nm = "mul "; *ar = "4s"; return;
case ARM64vecb_MUL16x8: *nm = "mul "; *ar = "8h"; return;
case ARM64vecb_FADD64x2: *nm = "fadd"; *ar = "2d"; return;
@@ -891,6 +893,8 @@
case ARM64vecb_FCMGE32x4: *nm = "fcmge"; *ar = "4s"; return;
case ARM64vecb_FCMGT64x2: *nm = "fcmgt"; *ar = "2d"; return;
case ARM64vecb_FCMGT32x4: *nm = "fcmgt"; *ar = "4s"; return;
+ case ARM64vecb_TBL1: *nm = "tbl "; *ar = "16b"; return;
+ case ARM64vecb_CMHI8x16: *nm = "cmhi"; *ar = "16b"; return;
default: vpanic("showARM64VecBinOp");
}
}
@@ -3337,6 +3341,7 @@
#define X001000 BITS8(0,0, 0,0,1,0,0,0)
#define X001001 BITS8(0,0, 0,0,1,0,0,1)
#define X001010 BITS8(0,0, 0,0,1,0,1,0)
+#define X001101 BITS8(0,0, 0,0,1,1,0,1)
#define X001111 BITS8(0,0, 0,0,1,1,1,1)
#define X010000 BITS8(0,0, 0,1,0,0,0,0)
#define X010001 BITS8(0,0, 0,1,0,0,0,1)
@@ -4916,10 +4921,12 @@
010 01110 11 1 m 100001 n d ADD Vd.2d, Vn.2d, Vm.2d
010 01110 10 1 m 100001 n d ADD Vd.4s, Vn.4s, Vm.4s
010 01110 01 1 m 100001 n d ADD Vd.8h, Vn.8h, Vm.8h
+ 010 01110 00 1 m 100001 n d ADD Vd.16b, Vn.16b, Vm.16b
011 01110 11 1 m 100001 n d SUB Vd.2d, Vn.2d, Vm.2d
011 01110 10 1 m 100001 n d SUB Vd.4s, Vn.4s, Vm.4s
011 01110 01 1 m 100001 n d SUB Vd.8h, Vn.8h, Vm.8h
+ 011 01110 00 1 m 100001 n d SUB Vd.16b, Vn.16b, Vm.16b
010 01110 10 1 m 100111 n d MUL Vd.4s, Vn.4s, Vm.4s
010 01110 01 1 m 100111 n d MUL Vd.8h, Vn.8h, Vm.8h
@@ -4970,6 +4977,10 @@
011 01110 11 1 m 111001 n d FCMGT Vd.2d, Vn.2d, Vm.2d
011 01110 10 1 m 111001 n d FCMGT Vd.4s, Vn.4s, Vm.4s
+
+ 010 01110 00 0 m 000000 n d TBL Vd.16b, {Vn.16b}, Vm.16b
+
+ 011 01110 00 1 m 001101 n d CMHI Vd.16b, Vn.16b, Vm.16b
*/
UInt vD = qregNo(i->ARM64in.VBinV.dst);
UInt vN = qregNo(i->ARM64in.VBinV.argL);
@@ -4984,6 +4995,9 @@
case ARM64vecb_ADD16x8:
*p++ = X_3_8_5_6_5_5(X010, X01110011, vM, X100001, vN, vD);
break;
+ case ARM64vecb_ADD8x16:
+ *p++ = X_3_8_5_6_5_5(X010, X01110001, vM, X100001, vN, vD);
+ break;
case ARM64vecb_SUB64x2:
*p++ = X_3_8_5_6_5_5(X011, X01110111, vM, X100001, vN, vD);
break;
@@ -4993,6 +5007,9 @@
case ARM64vecb_SUB16x8:
*p++ = X_3_8_5_6_5_5(X011, X01110011, vM, X100001, vN, vD);
break;
+ case ARM64vecb_SUB8x16:
+ *p++ = X_3_8_5_6_5_5(X011, X01110001, vM, X100001, vN, vD);
+ break;
case ARM64vecb_MUL32x4:
*p++ = X_3_8_5_6_5_5(X010, X01110101, vM, X100111, vN, vD);
break;
@@ -5107,6 +5124,14 @@
case ARM64vecb_FCMGT32x4:
*p++ = X_3_8_5_6_5_5(X011, X01110101, vM, X111001, vN, vD);
break;
+
+ case ARM64vecb_TBL1:
+ *p++ = X_3_8_5_6_5_5(X010, X01110000, vM, X000000, vN, vD);
+ break;
+
+ case ARM64vecb_CMHI8x16:
+ *p++ = X_3_8_5_6_5_5(X011, X01110001, vM, X001101, vN, vD);
+ break;
default:
goto bad;
}
Modified: trunk/priv/host_arm64_defs.h
==============================================================================
--- trunk/priv/host_arm64_defs.h (original)
+++ trunk/priv/host_arm64_defs.h Thu Apr 3 13:48:54 2014
@@ -310,9 +310,11 @@
ARM64vecb_ADD64x2=120,
ARM64vecb_ADD32x4,
ARM64vecb_ADD16x8,
+ ARM64vecb_ADD8x16,
ARM64vecb_SUB64x2,
ARM64vecb_SUB32x4,
ARM64vecb_SUB16x8,
+ ARM64vecb_SUB8x16,
ARM64vecb_MUL32x4,
ARM64vecb_MUL16x8,
ARM64vecb_FADD64x2,
@@ -348,6 +350,8 @@
ARM64vecb_FCMGE32x4,
ARM64vecb_FCMGT64x2,
ARM64vecb_FCMGT32x4,
+ ARM64vecb_TBL1,
+ ARM64vecb_CMHI8x16,
ARM64vecb_INVALID
}
ARM64VecBinOp;
Modified: trunk/priv/host_arm64_isel.c
==============================================================================
--- trunk/priv/host_arm64_isel.c (original)
+++ trunk/priv/host_arm64_isel.c Thu Apr 3 13:48:54 2014
@@ -4918,9 +4918,11 @@
case Iop_Add64x2:
case Iop_Add32x4:
case Iop_Add16x8:
+ case Iop_Add8x16:
case Iop_Sub64x2:
case Iop_Sub32x4:
case Iop_Sub16x8:
+ case Iop_Sub8x16:
case Iop_Mul32x4:
case Iop_Mul16x8:
case Iop_CmpEQ64x2:
@@ -4930,6 +4932,8 @@
case Iop_CmpLE32Fx4:
case Iop_CmpLT64Fx2:
case Iop_CmpLT32Fx4:
+ case Iop_Perm8x16:
+ case Iop_CmpGT8Ux16:
{
HReg res = newVRegV(env);
HReg argL = iselV128Expr(env, e->Iex.Binop.arg1);
@@ -4955,9 +4959,11 @@
case Iop_Add64x2: op = ARM64vecb_ADD64x2; break;
case Iop_Add32x4: op = ARM64vecb_ADD32x4; break;
case Iop_Add16x8: op = ARM64vecb_ADD16x8; break;
+ case Iop_Add8x16: op = ARM64vecb_ADD8x16; break;
case Iop_Sub64x2: op = ARM64vecb_SUB64x2; break;
case Iop_Sub32x4: op = ARM64vecb_SUB32x4; break;
case Iop_Sub16x8: op = ARM64vecb_SUB16x8; break;
+ case Iop_Sub8x16: op = ARM64vecb_SUB8x16; break;
case Iop_Mul32x4: op = ARM64vecb_MUL32x4; break;
case Iop_Mul16x8: op = ARM64vecb_MUL16x8; break;
case Iop_CmpEQ64x2: op = ARM64vecb_CMEQ64x2; break;
@@ -4967,6 +4973,8 @@
case Iop_CmpLE32Fx4: op = ARM64vecb_FCMGE32x4; sw = True; break;
case Iop_CmpLT64Fx2: op = ARM64vecb_FCMGT64x2; sw = True; break;
case Iop_CmpLT32Fx4: op = ARM64vecb_FCMGT32x4; sw = True; break;
+ case Iop_Perm8x16: op = ARM64vecb_TBL1; break;
+ case Iop_CmpGT8Ux16: op = ARM64vecb_CMHI8x16; break;
default: vassert(0);
}
if (sw) {
|