You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(9) |
2
(16) |
|
3
(9) |
4
(8) |
5
(9) |
6
(10) |
7
(14) |
8
(10) |
9
(7) |
|
10
(14) |
11
(19) |
12
(22) |
13
(18) |
14
(20) |
15
(10) |
16
(12) |
|
17
(13) |
18
(7) |
19
(12) |
20
(13) |
21
(9) |
22
(12) |
23
(6) |
|
24
(5) |
25
(5) |
26
(6) |
27
(7) |
28
(9) |
29
(13) |
30
(21) |
|
From: <sv...@va...> - 2006-09-11 20:34:40
|
Author: sewardj
Date: 2006-09-11 21:34:36 +0100 (Mon, 11 Sep 2006)
New Revision: 6052
Log:
Update.
Modified:
trunk/docs/internals/3_2_BUGSTATUS.txt
Modified: trunk/docs/internals/3_2_BUGSTATUS.txt
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/internals/3_2_BUGSTATUS.txt 2006-09-11 20:33:55 UTC (rev 6=
051)
+++ trunk/docs/internals/3_2_BUGSTATUS.txt 2006-09-11 20:34:36 UTC (rev 6=
052)
@@ -39,7 +39,7 @@
=20
vx1638 vx1648 Vfd 132146 Programs with long sequences of bswap[l,q=
]s
=20
-pending pending [W] 132918 vex amd64->IR: 0xD9 0xF8 (fprem)
+vx1655 vx1657 Vfd 132918 vex amd64->IR: 0xD9 0xF8 (fprem)
vx1652,3 vx1654 Vfd 132813 Assertion at priv/guest-x86/toIR.c:652 fa=
ils
v6040 v6041 133051 'cfsi->len > 0 && cfsi->len < 2000000' fa=
iled
pending pending [W] 133054 'make install' fails with syntax errors
@@ -69,4 +69,20 @@
=20
pending wontfix 133154 crash when using client requests to=20
register/deregister stack
-supp for suse 10.1 ppc32
+
+v6051 v6048 n-i-bz SuSE 10.1 (ppc32) minor fixes
+
+pending pending 132998 startup fails in when running on UML
+pending pending 133327 support for voicetronix ioctl (w/patch)
+
+vx1656 vx1658 Vfd 133678 amd64->IR: 0x48 0xF 0xC5 0xC0 (pextrw?)
+vx6049 pending 133694 aspacem assertion: aspacem_minAddr <=3D h=
oleStart
+
+v6043 pending n-i-bz callgrind: fix warning about malformed
+ creator line=20
+v6044 pending n-i-bz callgrind: fix annotate script for data=20
+ produced with --dump-instr=3Dyes
+v6045 pending n-i-bz callgrind: fix failed assertion when
+ toggling instrumentation mode
+bartoschek callgrind crash
+
|
|
From: <sv...@va...> - 2006-09-11 20:33:58
|
Author: sewardj
Date: 2006-09-11 21:33:55 +0100 (Mon, 11 Sep 2006)
New Revision: 6051
Log:
Merge (from 3_2_BRANCH) r6048 (SuSE 10.1 (ppc32) minor fixes)
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/glibc-2.4.supp
trunk/memcheck/mc_replace_strmem.c
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2006-09-11 20:14:21 U=
TC (rev 6050)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2006-09-11 20:33:55 U=
TC (rev 6051)
@@ -1760,7 +1760,7 @@
//..=20
LINX_(__NR_set_tid_address, sys_set_tid_address), // 232
=20
-//.. LINX_(__NR_fadvise64, sys_fadvise64), // 233 */(=
Linux?)
+ LINX_(__NR_fadvise64, sys_fadvise64), // 233 */(Linux=
?)
LINX_(__NR_exit_group, sys_exit_group), // 234
//.. GENXY(__NR_lookup_dcookie, sys_lookup_dcookie), // 235
LINXY(__NR_epoll_create, sys_epoll_create), // 236
Modified: trunk/glibc-2.4.supp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/glibc-2.4.supp 2006-09-11 20:14:21 UTC (rev 6050)
+++ trunk/glibc-2.4.supp 2006-09-11 20:33:55 UTC (rev 6051)
@@ -235,3 +235,12 @@
obj:/*libc-2.4.so
obj:/*libc-2.4.so
}
+{
+ X11-64bit-padding-4b
+ Memcheck:Param
+ socketcall.send(msg)
+ fun:send
+ obj:/*libc-2.4.so
+ obj:/*libc-2.4.so
+ obj:/*libc-2.4.so
+}
Modified: trunk/memcheck/mc_replace_strmem.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/mc_replace_strmem.c 2006-09-11 20:14:21 UTC (rev 6050)
+++ trunk/memcheck/mc_replace_strmem.c 2006-09-11 20:33:55 UTC (rev 6051)
@@ -121,6 +121,7 @@
#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.=
so.2
#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-=
x86-64.so.2
#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
+#define m_ld_so_1 ldZdsoZd1 // ld.so.1
=20
=20
#define STRRCHR(soname, fnname) \
@@ -403,6 +404,7 @@
}
=20
MEMCPY(m_libc_so_star, memcpy)
+MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
=20
=20
#define MEMCMP(soname, fnname) \
|
|
From: <sv...@va...> - 2006-09-11 20:14:25
|
Author: sewardj
Date: 2006-09-11 21:14:21 +0100 (Mon, 11 Sep 2006)
New Revision: 6050
Log:
Add a regtest for #133694 (munmapping of segments below
aspacem_minAddr). (Tom Hughes)
Added:
trunk/memcheck/tests/x86/bug133694.c
trunk/memcheck/tests/x86/bug133694.stderr.exp
trunk/memcheck/tests/x86/bug133694.stdout.exp
trunk/memcheck/tests/x86/bug133694.vgtest
Modified:
trunk/memcheck/tests/x86/Makefile.am
Modified: trunk/memcheck/tests/x86/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/tests/x86/Makefile.am 2006-09-11 19:49:35 UTC (rev 604=
9)
+++ trunk/memcheck/tests/x86/Makefile.am 2006-09-11 20:14:21 UTC (rev 605=
0)
@@ -5,6 +5,7 @@
INSN_TESTS =3D insn_basic insn_fpu insn_cmov insn_mmx insn_mmxext insn_s=
se insn_sse2
=20
EXTRA_DIST =3D $(noinst_SCRIPTS) \
+ bug133694.vgtest bug133694.stderr.exp bug133694.stdout.exp \
fpeflags.stderr.exp fpeflags.vgtest \
$(addsuffix .stderr.exp,$(INSN_TESTS)) \
$(addsuffix .stdout.exp,$(INSN_TESTS)) \
@@ -25,6 +26,7 @@
fprem.stderr.exp fprem.stdout.exp fprem.vgtest
=20
check_PROGRAMS =3D \
+ bug133694 \
scalar_exit_group scalar_fork scalar_supp scalar_vfork \
fpeflags pushfpopf pushpopmem scalar sse_memory tronical \
more_x86_fp fprem
Added: trunk/memcheck/tests/x86/bug133694.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/tests/x86/bug133694.c (rev 0)
+++ trunk/memcheck/tests/x86/bug133694.c 2006-09-11 20:14:21 UTC (rev 605=
0)
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+
+int main(int argc, char **argv)
+{
+ void *a1;
+ =20
+ if ((a1 =3D mmap((void *)0x200000, 4096, PROT_READ|PROT_WRITE, MAP_PR=
IVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0)) =3D=3D MAP_FAILED)
+ {
+ perror("mmap1");
+ exit(1);
+ }
+
+ if (munmap(a1, 4096) < 0)
+ {
+ perror("munmap1");
+ exit(1);
+ }
+ =20
+ if (mmap((void *)0x100000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MA=
P_FIXED|MAP_ANONYMOUS, -1, 0) =3D=3D MAP_FAILED)
+ {
+ perror("mmap2");
+ exit(1);
+ }
+ =20
+ if (mmap((void *)0x100000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MA=
P_ANONYMOUS, -1, 0) =3D=3D MAP_FAILED)
+ {
+ perror("mmap2");
+ exit(1);
+ }
+
+ printf("success\n");
+ exit(0);
+}
Added: trunk/memcheck/tests/x86/bug133694.stderr.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Added: trunk/memcheck/tests/x86/bug133694.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/tests/x86/bug133694.stdout.exp =
(rev 0)
+++ trunk/memcheck/tests/x86/bug133694.stdout.exp 2006-09-11 20:14:21 UTC=
(rev 6050)
@@ -0,0 +1 @@
+success
Added: trunk/memcheck/tests/x86/bug133694.vgtest
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/tests/x86/bug133694.vgtest (re=
v 0)
+++ trunk/memcheck/tests/x86/bug133694.vgtest 2006-09-11 20:14:21 UTC (re=
v 6050)
@@ -0,0 +1,2 @@
+prog: bug133694
+vgopts: -q
|
|
From: <sv...@va...> - 2006-09-11 19:49:39
|
Author: sewardj
Date: 2006-09-11 20:49:35 +0100 (Mon, 11 Sep 2006)
New Revision: 6049
Log:
When unmapping segments from below aspacem_minAddr, convert them back
into SkResvns, not SkFrees. Fixes #133694. Thanks to Tom Hughes for
patch and test case.
Modified:
trunk/coregrind/m_aspacemgr/aspacemgr.c
Modified: trunk/coregrind/m_aspacemgr/aspacemgr.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_aspacemgr/aspacemgr.c 2006-09-11 17:22:54 UTC (rev =
6048)
+++ trunk/coregrind/m_aspacemgr/aspacemgr.c 2006-09-11 19:49:35 UTC (rev =
6049)
@@ -2251,6 +2251,10 @@
&& /* check previous comparison is meaningful */
aspacem_maxAddr < Addr_MAX)
seg.kind =3D SkResvn;
+ else=20
+ /* Ditto for segments from below aspacem_minAddr. */
+ if (seg.end < aspacem_minAddr && aspacem_minAddr > 0)
+ seg.kind =3D SkResvn;
else
seg.kind =3D SkFree;
=20
|
|
From: <sv...@va...> - 2006-09-11 17:23:02
|
Author: sewardj
Date: 2006-09-11 18:22:54 +0100 (Mon, 11 Sep 2006)
New Revision: 6048
Log:
Misc minor fixes for SuSE 10.1 (ppc32)
Modified:
branches/VALGRIND_3_2_BRANCH/coregrind/m_syswrap/syswrap-ppc32-linux.c
branches/VALGRIND_3_2_BRANCH/glibc-2.4.supp
branches/VALGRIND_3_2_BRANCH/memcheck/mc_replace_strmem.c
Modified: branches/VALGRIND_3_2_BRANCH/coregrind/m_syswrap/syswrap-ppc32-=
linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_2_BRANCH/coregrind/m_syswrap/syswrap-ppc32-linux.=
c 2006-09-11 14:39:05 UTC (rev 6047)
+++ branches/VALGRIND_3_2_BRANCH/coregrind/m_syswrap/syswrap-ppc32-linux.=
c 2006-09-11 17:22:54 UTC (rev 6048)
@@ -1760,7 +1760,7 @@
//..=20
LINX_(__NR_set_tid_address, sys_set_tid_address), // 232
=20
-//.. LINX_(__NR_fadvise64, sys_fadvise64), // 233 */(=
Linux?)
+ LINX_(__NR_fadvise64, sys_fadvise64), // 233 */(Linux=
?)
LINX_(__NR_exit_group, sys_exit_group), // 234
//.. GENXY(__NR_lookup_dcookie, sys_lookup_dcookie), // 235
LINXY(__NR_epoll_create, sys_epoll_create), // 236
Modified: branches/VALGRIND_3_2_BRANCH/glibc-2.4.supp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_2_BRANCH/glibc-2.4.supp 2006-09-11 14:39:05 UTC (=
rev 6047)
+++ branches/VALGRIND_3_2_BRANCH/glibc-2.4.supp 2006-09-11 17:22:54 UTC (=
rev 6048)
@@ -235,3 +235,12 @@
obj:/*libc-2.4.so
obj:/*libc-2.4.so
}
+{
+ X11-64bit-padding-4b
+ Memcheck:Param
+ socketcall.send(msg)
+ fun:send
+ obj:/*libc-2.4.so
+ obj:/*libc-2.4.so
+ obj:/*libc-2.4.so
+}
Modified: branches/VALGRIND_3_2_BRANCH/memcheck/mc_replace_strmem.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_2_BRANCH/memcheck/mc_replace_strmem.c 2006-09-11 =
14:39:05 UTC (rev 6047)
+++ branches/VALGRIND_3_2_BRANCH/memcheck/mc_replace_strmem.c 2006-09-11 =
17:22:54 UTC (rev 6048)
@@ -121,6 +121,7 @@
#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.=
so.2
#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-=
x86-64.so.2
#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
+#define m_ld_so_1 ldZdsoZd1 // ld.so.1
=20
=20
#define STRRCHR(soname, fnname) \
@@ -403,6 +404,7 @@
}
=20
MEMCPY(m_libc_so_star, memcpy)
+MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
=20
=20
#define MEMCMP(soname, fnname) \
|
|
From: <sv...@va...> - 2006-09-11 16:59:29
|
Author: sewardj
Date: 2006-09-11 17:59:25 +0100 (Mon, 11 Sep 2006)
New Revision: 1658
Log:
Merge r1656 (Support pextrw when the destination register is 64 bits
too. Fixes #133678.)
Modified:
branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
Modified: branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2006-09-11 16:54:29 U=
TC (rev 1657)
+++ branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2006-09-11 16:59:25 U=
TC (rev 1658)
@@ -9159,7 +9159,7 @@
/* ***--- this is an MMX class insn introduced in SSE1 ---*** */
/* 0F C5 =3D PEXTRW -- extract 16-bit field from mmx(E) and put=20
zero-extend of it in ireg(G). */
- if (haveNo66noF2noF3(pfx) && sz =3D=3D 4
+ if (haveNo66noF2noF3(pfx) && (sz =3D=3D 4 || sz =3D=3D 8)
&& insn[0] =3D=3D 0x0F && insn[1] =3D=3D 0xC5) {
modrm =3D insn[2];
if (epartIsReg(modrm)) {
@@ -9175,10 +9175,15 @@
case 3: assign(t5, mkexpr(t3)); break;
default: vassert(0);
}
- putIReg32(gregOfRexRM(pfx,modrm), unop(Iop_16Uto32, mkexpr(t5))=
);
+ if (sz =3D=3D 8)
+ putIReg64(gregOfRexRM(pfx,modrm), unop(Iop_16Uto64, mkexpr(t=
5)));
+ else
+ putIReg32(gregOfRexRM(pfx,modrm), unop(Iop_16Uto32, mkexpr(t=
5)));
DIP("pextrw $%d,%s,%s\n",
(Int)insn[3], nameMMXReg(eregLO3ofRM(modrm)),
- nameIReg32(gregOfRexRM(pfx,modrm)));
+ sz=3D=3D8 ? nameIReg64(gregOfRexRM(pfx,modrm)=
)
+ : nameIReg32(gregOfRexRM(pfx,modrm))
+ );
delta +=3D 4;
goto decode_success;
}=20
|
|
From: <sv...@va...> - 2006-09-11 16:54:32
|
Author: sewardj
Date: 2006-09-11 17:54:29 +0100 (Mon, 11 Sep 2006)
New Revision: 1657
Log:
Merge r1655 (amd64 'fprem' (fixes bug 132918))
Modified:
branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.c
branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.h
branches/VEX_3_2_BRANCH/priv/host-amd64/isel.c
Modified: branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2006-09-11 14:37:27 U=
TC (rev 1656)
+++ branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2006-09-11 16:54:29 U=
TC (rev 1657)
@@ -4887,20 +4887,28 @@
put_ftop( binop(Iop_Add32, get_ftop(), mkU32(1)) );
break;
=20
-//.. case 0xF8: { /* FPREM -- not IEEE compliant */
-//.. IRTemp a1 =3D newTemp(Ity_F64);
-//.. IRTemp a2 =3D newTemp(Ity_F64);
-//.. DIP("fprem\n");
-//.. /* Do FPREM twice, once to get the remainder, and on=
ce
-//.. to get the C3210 flag values. */
-//.. assign( a1, get_ST(0) );
-//.. assign( a2, get_ST(1) );
-//.. put_ST_UNCHECKED(0, binop(Iop_PRemF64,
-//.. mkexpr(a1), mkexpr(a2)));
-//.. put_C3210( binop(Iop_PRemC3210F64, mkexpr(a1), mkexp=
r(a2)) );
-//.. break;
-//.. }
-//..=20
+ case 0xF8: { /* FPREM -- not IEEE compliant */
+ IRTemp a1 =3D newTemp(Ity_F64);
+ IRTemp a2 =3D newTemp(Ity_F64);
+ DIP("fprem\n");
+ /* Do FPREM twice, once to get the remainder, and once
+ to get the C3210 flag values. */
+ assign( a1, get_ST(0) );
+ assign( a2, get_ST(1) );
+ put_ST_UNCHECKED(0,
+ triop(Iop_PRemF64,
+ get_FAKE_roundingmode(), /* XXXROUNDINGFIXME */
+ mkexpr(a1),
+ mkexpr(a2)));
+ put_C3210(
+ unop(Iop_32Uto64,
+ triop(Iop_PRemC3210F64,
+ get_FAKE_roundingmode(), /* XXXROUNDINGFIXME */
+ mkexpr(a1),
+ mkexpr(a2)) ));
+ break;
+ }
+
case 0xF9: /* FYL2XP1 */
DIP("fyl2xp1\n");
put_ST_UNCHECKED(1,=20
Modified: branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.c 2006-09-11 14:37:27 U=
TC (rev 1656)
+++ branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.c 2006-09-11 16:54:29 U=
TC (rev 1657)
@@ -548,7 +548,7 @@
case Afp_ATAN: return "atan";
case Afp_YL2X: return "yl2x";
case Afp_YL2XP1: return "yl2xp1";
-//.. case Xfp_PREM: return "prem";
+ case Afp_PREM: return "prem";
//.. case Xfp_PREM1: return "prem1";
case Afp_SQRT: return "sqrt";
//.. case Xfp_ABS: return "abs";
@@ -819,6 +819,13 @@
i->Ain.A87LdCW.addr =3D addr;
return i;
}
+AMD64Instr* AMD64Instr_A87StSW ( AMD64AMode* addr )
+{
+ AMD64Instr* i =3D LibVEX_Alloc(sizeof(AMD64Instr));
+ i->tag =3D Ain_A87StSW;
+ i->Ain.A87StSW.addr =3D addr;
+ return i;
+}
=20
//.. AMD64Instr* AMD64Instr_FpUnary ( AMD64FpOp op, HReg src, HReg dst )=
{
//.. AMD64Instr* i =3D LibVEX_Alloc(sizeof(AMD64Instr));
@@ -1155,19 +1162,23 @@
vex_printf("mfence" );
return;
case Ain_A87Free:
- vex_printf("ffree %%st(7..%d)\n", 7 - i->Ain.A87Free.nregs );
+ vex_printf("ffree %%st(7..%d)", 8 - i->Ain.A87Free.nregs );
break;
case Ain_A87PushPop:
vex_printf(i->Ain.A87PushPop.isPush ? "fldl " : "fstpl ");
ppAMD64AMode(i->Ain.A87PushPop.addr);
break;
case Ain_A87FpOp:
- vex_printf("f%s\n", showA87FpOp(i->Ain.A87FpOp.op));
+ vex_printf("f%s", showA87FpOp(i->Ain.A87FpOp.op));
break;
case Ain_A87LdCW:
vex_printf("fldcw ");
ppAMD64AMode(i->Ain.A87LdCW.addr);
break;
+ case Ain_A87StSW:
+ vex_printf("fstsw ");
+ ppAMD64AMode(i->Ain.A87StSW.addr);
+ break;
//.. case Xin_FpUnary:
//.. vex_printf("g%sD ", showAMD64FpOp(i->Xin.FpUnary.op));
//.. ppHRegAMD64(i->Xin.FpUnary.src);
@@ -1493,6 +1504,9 @@
case Ain_A87LdCW:
addRegUsage_AMD64AMode(u, i->Ain.A87LdCW.addr);
return;
+ case Ain_A87StSW:
+ addRegUsage_AMD64AMode(u, i->Ain.A87StSW.addr);
+ return;
//.. case Xin_FpUnary:
//.. addHRegUse(u, HRmRead, i->Xin.FpUnary.src);
//.. addHRegUse(u, HRmWrite, i->Xin.FpUnary.dst);
@@ -1704,6 +1718,9 @@
case Ain_A87LdCW:
mapRegs_AMD64AMode(m, i->Ain.A87LdCW.addr);
return;
+ case Ain_A87StSW:
+ mapRegs_AMD64AMode(m, i->Ain.A87StSW.addr);
+ return;
//.. case Xin_FpUnary:
//.. mapReg(m, &i->Xin.FpUnary.src);
//.. mapReg(m, &i->Xin.FpUnary.dst);
@@ -2804,6 +2821,7 @@
case Afp_ATAN: *p++ =3D 0xD9; *p++ =3D 0xF3; break;
case Afp_YL2X: *p++ =3D 0xD9; *p++ =3D 0xF1; break;
case Afp_YL2XP1: *p++ =3D 0xD9; *p++ =3D 0xF9; break;
+ case Afp_PREM: *p++ =3D 0xD9; *p++ =3D 0xF8; break;
default: goto bad;
}
goto done;
@@ -2815,6 +2833,13 @@
p =3D doAMode_M(p, fake(5)/*subopcode*/, i->Ain.A87LdCW.addr);
goto done;
=20
+ case Ain_A87StSW:
+ *p++ =3D clearWBit(
+ rexAMode_M(fake(7), i->Ain.A87StSW.addr) );
+ *p++ =3D 0xDD;
+ p =3D doAMode_M(p, fake(7)/*subopcode*/, i->Ain.A87StSW.addr);
+ goto done;
+
case Ain_Store:
if (i->Ain.Store.sz =3D=3D 2) {
/* This just goes to show the crazyness of the instruction
Modified: branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.h 2006-09-11 14:37:27 U=
TC (rev 1656)
+++ branches/VEX_3_2_BRANCH/priv/host-amd64/hdefs.h 2006-09-11 16:54:29 U=
TC (rev 1657)
@@ -307,7 +307,7 @@
enum {
Afp_INVALID,
/* Binary */
- Afp_SCALE, Afp_ATAN, Afp_YL2X, Afp_YL2XP1,=20
+ Afp_SCALE, Afp_ATAN, Afp_YL2X, Afp_YL2XP1, Afp_PREM,
/* Unary */
Afp_SQRT,
Afp_SIN, Afp_COS, Afp_TAN,
@@ -386,6 +386,7 @@
Ain_A87PushPop, /* x87 loads/stores */
Ain_A87FpOp, /* x87 operations */
Ain_A87LdCW, /* load x87 control word */
+ Ain_A87StSW, /* store x87 status word */
//..=20
//.. Xin_FpUnary, /* FP fake unary op */
//.. Xin_FpBinary, /* FP fake binary op */
@@ -558,6 +559,11 @@
AMD64AMode* addr;
} A87LdCW;
=20
+ /* Store the FPU status word (fstsw m16) */
+ struct {
+ AMD64AMode* addr;
+ } A87StSW;
+
/* --- SSE --- */
=20
/* Load 32 bits into %mxcsr. */
@@ -680,6 +686,7 @@
extern AMD64Instr* AMD64Instr_A87PushPop ( AMD64AMode* addr, Bool isPush=
);
extern AMD64Instr* AMD64Instr_A87FpOp ( A87FpOp op );
extern AMD64Instr* AMD64Instr_A87LdCW ( AMD64AMode* addr );
+extern AMD64Instr* AMD64Instr_A87StSW ( AMD64AMode* addr );
//..=20
//.. extern AMD64Instr* AMD64Instr_FpUnary ( AMD64FpOp op, HReg src, H=
Reg dst );
//.. extern AMD64Instr* AMD64Instr_FpBinary ( AMD64FpOp op, HReg srcL, =
HReg srcR, HReg dst );
Modified: branches/VEX_3_2_BRANCH/priv/host-amd64/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VEX_3_2_BRANCH/priv/host-amd64/isel.c 2006-09-11 14:37:27 UT=
C (rev 1656)
+++ branches/VEX_3_2_BRANCH/priv/host-amd64/isel.c 2006-09-11 16:54:29 UT=
C (rev 1657)
@@ -1636,6 +1636,42 @@
break;
}
=20
+ /* --------- TERNARY OP --------- */
+ case Iex_Triop: {
+ /* C3210 flags following FPU partial remainder (fprem), both
+ IEEE compliant (PREM1) and non-IEEE compliant (PREM). */
+ if (e->Iex.Triop.op =3D=3D Iop_PRemC3210F64) {
+ AMD64AMode* m8_rsp =3D AMD64AMode_IR(-8, hregAMD64_RSP());
+ HReg arg1 =3D iselDblExpr(env, e->Iex.Triop.arg2);
+ HReg arg2 =3D iselDblExpr(env, e->Iex.Triop.arg3);
+ HReg dst =3D newVRegI(env);
+ addInstr(env, AMD64Instr_A87Free(2));
+
+ /* one arg -> top of x87 stack */
+ addInstr(env, AMD64Instr_SseLdSt(False/*store*/, 8, arg2, m8_rs=
p));
+ addInstr(env, AMD64Instr_A87PushPop(m8_rsp, True/*push*/));
+
+ /* other arg -> top of x87 stack */
+ addInstr(env, AMD64Instr_SseLdSt(False/*store*/, 8, arg1, m8_rs=
p));
+ addInstr(env, AMD64Instr_A87PushPop(m8_rsp, True/*push*/));
+
+ switch (e->Iex.Triop.op) {
+ case Iop_PRemC3210F64:
+ addInstr(env, AMD64Instr_A87FpOp(Afp_PREM));
+ break;
+ default:=20
+ vassert(0);
+ }
+ /* Ignore the result, and instead make off with the FPU's
+ C3210 flags (in the status word). */
+ addInstr(env, AMD64Instr_A87StSW(m8_rsp));
+ addInstr(env, AMD64Instr_Alu64R(Aalu_MOV,AMD64RMI_Mem(m8_rsp),d=
st));
+ addInstr(env, AMD64Instr_Alu64R(Aalu_AND,AMD64RMI_Imm(0x4700),d=
st));
+ return dst;
+ }
+ break;
+ }
+
default:=20
break;
} /* switch (e->tag) */
@@ -2853,13 +2889,15 @@
&& (e->Iex.Triop.op =3D=3D Iop_ScaleF64
|| e->Iex.Triop.op =3D=3D Iop_AtanF64
|| e->Iex.Triop.op =3D=3D Iop_Yl2xF64
- || e->Iex.Triop.op =3D=3D Iop_Yl2xp1F64)
+ || e->Iex.Triop.op =3D=3D Iop_Yl2xp1F64
+ || e->Iex.Triop.op =3D=3D Iop_PRemF64)
) {
AMD64AMode* m8_rsp =3D AMD64AMode_IR(-8, hregAMD64_RSP());
HReg arg1 =3D iselDblExpr(env, e->Iex.Triop.arg2);
HReg arg2 =3D iselDblExpr(env, e->Iex.Triop.arg3);
HReg dst =3D newVRegV(env);
- Bool arg2first =3D toBool(e->Iex.Triop.op =3D=3D Iop_ScaleF64)=
;
+ Bool arg2first =3D toBool(e->Iex.Triop.op =3D=3D Iop_ScaleF64=20
+ || e->Iex.Triop.op =3D=3D Iop_PRemF64)=
;
addInstr(env, AMD64Instr_A87Free(2));
=20
/* one arg -> top of x87 stack */
@@ -2888,6 +2926,9 @@
case Iop_Yl2xp1F64:=20
addInstr(env, AMD64Instr_A87FpOp(Afp_YL2XP1));
break;
+ case Iop_PRemF64:
+ addInstr(env, AMD64Instr_A87FpOp(Afp_PREM));
+ break;
default:=20
vassert(0);
}
|
|
From: <sv...@va...> - 2006-09-11 14:39:10
|
Author: sewardj Date: 2006-09-11 15:39:05 +0100 (Mon, 11 Sep 2006) New Revision: 6047 Log: Regtest for #133678 (amd64 pextrw with 64-bit dst register) Modified: trunk/none/tests/amd64/insn_sse.def trunk/none/tests/amd64/insn_sse.stdout.exp Modified: trunk/none/tests/amd64/insn_sse.def =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/none/tests/amd64/insn_sse.def 2006-09-11 11:05:26 UTC (rev 6046= ) +++ trunk/none/tests/amd64/insn_sse.def 2006-09-11 14:39:05 UTC (rev 6047= ) @@ -98,6 +98,10 @@ pextrw imm8[1] mm.uw[1234,5678,4321,8765] r32.ud[0xffffffff] =3D> 2.ud[5= 678] pextrw imm8[2] mm.uw[1234,5678,4321,8765] r32.ud[0xffffffff] =3D> 2.ud[4= 321] pextrw imm8[3] mm.uw[1234,5678,4321,8765] r32.ud[0xffffffff] =3D> 2.ud[8= 765] +pextrw imm8[0] mm.uw[1234,5678,4321,8765] r64.ud[0xffffffff,0xffffffff] = =3D> 2.ud[1234,0] +pextrw imm8[1] mm.uw[1234,5678,4321,8765] r64.ud[0xffffffff,0xffffffff] = =3D> 2.ud[5678,0] +pextrw imm8[2] mm.uw[1234,5678,4321,8765] r64.ud[0xffffffff,0xffffffff] = =3D> 2.ud[4321,0] +pextrw imm8[3] mm.uw[1234,5678,4321,8765] r64.ud[0xffffffff,0xffffffff] = =3D> 2.ud[8765,0] pinsrw imm8[0] r32.ud[0xffffffff] mm.uw[1234,5678,4321,8765] =3D> 2.uw[6= 5535,5678,4321,8765] pinsrw imm8[1] r32.ud[0xffffffff] mm.uw[1234,5678,4321,8765] =3D> 2.uw[1= 234,65535,4321,8765] pinsrw imm8[2] r32.ud[0xffffffff] mm.uw[1234,5678,4321,8765] =3D> 2.uw[1= 234,5678,65535,8765] Modified: trunk/none/tests/amd64/insn_sse.stdout.exp =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/none/tests/amd64/insn_sse.stdout.exp 2006-09-11 11:05:26 UTC (r= ev 6046) +++ trunk/none/tests/amd64/insn_sse.stdout.exp 2006-09-11 14:39:05 UTC (r= ev 6047) @@ -98,6 +98,10 @@ pextrw_2 ... ok pextrw_3 ... ok pextrw_4 ... ok +pextrw_5 ... ok +pextrw_6 ... ok +pextrw_7 ... ok +pextrw_8 ... ok pinsrw_1 ... ok pinsrw_2 ... ok pinsrw_3 ... ok |
|
From: <sv...@va...> - 2006-09-11 14:37:30
|
Author: sewardj
Date: 2006-09-11 15:37:27 +0100 (Mon, 11 Sep 2006)
New Revision: 1656
Log:
Support pextrw when the destination register is 64 bits too. Fixes
#133678.
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-amd64/toIR.c 2006-09-11 11:07:34 UTC (rev 1655)
+++ trunk/priv/guest-amd64/toIR.c 2006-09-11 14:37:27 UTC (rev 1656)
@@ -9159,7 +9159,7 @@
/* ***--- this is an MMX class insn introduced in SSE1 ---*** */
/* 0F C5 =3D PEXTRW -- extract 16-bit field from mmx(E) and put=20
zero-extend of it in ireg(G). */
- if (haveNo66noF2noF3(pfx) && sz =3D=3D 4
+ if (haveNo66noF2noF3(pfx) && (sz =3D=3D 4 || sz =3D=3D 8)
&& insn[0] =3D=3D 0x0F && insn[1] =3D=3D 0xC5) {
modrm =3D insn[2];
if (epartIsReg(modrm)) {
@@ -9175,10 +9175,15 @@
case 3: assign(t5, mkexpr(t3)); break;
default: vassert(0);
}
- putIReg32(gregOfRexRM(pfx,modrm), unop(Iop_16Uto32, mkexpr(t5))=
);
+ if (sz =3D=3D 8)
+ putIReg64(gregOfRexRM(pfx,modrm), unop(Iop_16Uto64, mkexpr(t=
5)));
+ else
+ putIReg32(gregOfRexRM(pfx,modrm), unop(Iop_16Uto32, mkexpr(t=
5)));
DIP("pextrw $%d,%s,%s\n",
(Int)insn[3], nameMMXReg(eregLO3ofRM(modrm)),
- nameIReg32(gregOfRexRM(pfx,modrm)));
+ sz=3D=3D8 ? nameIReg64(gregOfRexRM(pfx,modrm)=
)
+ : nameIReg32(gregOfRexRM(pfx,modrm))
+ );
delta +=3D 4;
goto decode_success;
}=20
|
|
From: <js...@ac...> - 2006-09-11 11:47:24
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-09-11 09:00:01 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 == 207 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/round (stdout) none/tests/ppc32/round (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: <sv...@va...> - 2006-09-11 11:07:37
|
Author: sewardj
Date: 2006-09-11 12:07:34 +0100 (Mon, 11 Sep 2006)
New Revision: 1655
Log:
Add support for amd64 'fprem' (fixes bug 132918). This isn't exactly
right; the C3/2/1/0 FPU flags sometimes don't get set the same as
natively, and I can't figure out why.
Modified:
trunk/priv/guest-amd64/toIR.c
trunk/priv/host-amd64/hdefs.c
trunk/priv/host-amd64/hdefs.h
trunk/priv/host-amd64/isel.c
Modified: trunk/priv/guest-amd64/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-amd64/toIR.c 2006-08-28 21:31:32 UTC (rev 1654)
+++ trunk/priv/guest-amd64/toIR.c 2006-09-11 11:07:34 UTC (rev 1655)
@@ -4887,20 +4887,28 @@
put_ftop( binop(Iop_Add32, get_ftop(), mkU32(1)) );
break;
=20
-//.. case 0xF8: { /* FPREM -- not IEEE compliant */
-//.. IRTemp a1 =3D newTemp(Ity_F64);
-//.. IRTemp a2 =3D newTemp(Ity_F64);
-//.. DIP("fprem\n");
-//.. /* Do FPREM twice, once to get the remainder, and on=
ce
-//.. to get the C3210 flag values. */
-//.. assign( a1, get_ST(0) );
-//.. assign( a2, get_ST(1) );
-//.. put_ST_UNCHECKED(0, binop(Iop_PRemF64,
-//.. mkexpr(a1), mkexpr(a2)));
-//.. put_C3210( binop(Iop_PRemC3210F64, mkexpr(a1), mkexp=
r(a2)) );
-//.. break;
-//.. }
-//..=20
+ case 0xF8: { /* FPREM -- not IEEE compliant */
+ IRTemp a1 =3D newTemp(Ity_F64);
+ IRTemp a2 =3D newTemp(Ity_F64);
+ DIP("fprem\n");
+ /* Do FPREM twice, once to get the remainder, and once
+ to get the C3210 flag values. */
+ assign( a1, get_ST(0) );
+ assign( a2, get_ST(1) );
+ put_ST_UNCHECKED(0,
+ triop(Iop_PRemF64,
+ get_FAKE_roundingmode(), /* XXXROUNDINGFIXME */
+ mkexpr(a1),
+ mkexpr(a2)));
+ put_C3210(
+ unop(Iop_32Uto64,
+ triop(Iop_PRemC3210F64,
+ get_FAKE_roundingmode(), /* XXXROUNDINGFIXME */
+ mkexpr(a1),
+ mkexpr(a2)) ));
+ break;
+ }
+
case 0xF9: /* FYL2XP1 */
DIP("fyl2xp1\n");
put_ST_UNCHECKED(1,=20
Modified: trunk/priv/host-amd64/hdefs.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-amd64/hdefs.c 2006-08-28 21:31:32 UTC (rev 1654)
+++ trunk/priv/host-amd64/hdefs.c 2006-09-11 11:07:34 UTC (rev 1655)
@@ -548,7 +548,7 @@
case Afp_ATAN: return "atan";
case Afp_YL2X: return "yl2x";
case Afp_YL2XP1: return "yl2xp1";
-//.. case Xfp_PREM: return "prem";
+ case Afp_PREM: return "prem";
//.. case Xfp_PREM1: return "prem1";
case Afp_SQRT: return "sqrt";
//.. case Xfp_ABS: return "abs";
@@ -819,6 +819,13 @@
i->Ain.A87LdCW.addr =3D addr;
return i;
}
+AMD64Instr* AMD64Instr_A87StSW ( AMD64AMode* addr )
+{
+ AMD64Instr* i =3D LibVEX_Alloc(sizeof(AMD64Instr));
+ i->tag =3D Ain_A87StSW;
+ i->Ain.A87StSW.addr =3D addr;
+ return i;
+}
=20
//.. AMD64Instr* AMD64Instr_FpUnary ( AMD64FpOp op, HReg src, HReg dst )=
{
//.. AMD64Instr* i =3D LibVEX_Alloc(sizeof(AMD64Instr));
@@ -1155,19 +1162,23 @@
vex_printf("mfence" );
return;
case Ain_A87Free:
- vex_printf("ffree %%st(7..%d)\n", 7 - i->Ain.A87Free.nregs );
+ vex_printf("ffree %%st(7..%d)", 8 - i->Ain.A87Free.nregs );
break;
case Ain_A87PushPop:
vex_printf(i->Ain.A87PushPop.isPush ? "fldl " : "fstpl ");
ppAMD64AMode(i->Ain.A87PushPop.addr);
break;
case Ain_A87FpOp:
- vex_printf("f%s\n", showA87FpOp(i->Ain.A87FpOp.op));
+ vex_printf("f%s", showA87FpOp(i->Ain.A87FpOp.op));
break;
case Ain_A87LdCW:
vex_printf("fldcw ");
ppAMD64AMode(i->Ain.A87LdCW.addr);
break;
+ case Ain_A87StSW:
+ vex_printf("fstsw ");
+ ppAMD64AMode(i->Ain.A87StSW.addr);
+ break;
//.. case Xin_FpUnary:
//.. vex_printf("g%sD ", showAMD64FpOp(i->Xin.FpUnary.op));
//.. ppHRegAMD64(i->Xin.FpUnary.src);
@@ -1493,6 +1504,9 @@
case Ain_A87LdCW:
addRegUsage_AMD64AMode(u, i->Ain.A87LdCW.addr);
return;
+ case Ain_A87StSW:
+ addRegUsage_AMD64AMode(u, i->Ain.A87StSW.addr);
+ return;
//.. case Xin_FpUnary:
//.. addHRegUse(u, HRmRead, i->Xin.FpUnary.src);
//.. addHRegUse(u, HRmWrite, i->Xin.FpUnary.dst);
@@ -1704,6 +1718,9 @@
case Ain_A87LdCW:
mapRegs_AMD64AMode(m, i->Ain.A87LdCW.addr);
return;
+ case Ain_A87StSW:
+ mapRegs_AMD64AMode(m, i->Ain.A87StSW.addr);
+ return;
//.. case Xin_FpUnary:
//.. mapReg(m, &i->Xin.FpUnary.src);
//.. mapReg(m, &i->Xin.FpUnary.dst);
@@ -2804,6 +2821,7 @@
case Afp_ATAN: *p++ =3D 0xD9; *p++ =3D 0xF3; break;
case Afp_YL2X: *p++ =3D 0xD9; *p++ =3D 0xF1; break;
case Afp_YL2XP1: *p++ =3D 0xD9; *p++ =3D 0xF9; break;
+ case Afp_PREM: *p++ =3D 0xD9; *p++ =3D 0xF8; break;
default: goto bad;
}
goto done;
@@ -2815,6 +2833,13 @@
p =3D doAMode_M(p, fake(5)/*subopcode*/, i->Ain.A87LdCW.addr);
goto done;
=20
+ case Ain_A87StSW:
+ *p++ =3D clearWBit(
+ rexAMode_M(fake(7), i->Ain.A87StSW.addr) );
+ *p++ =3D 0xDD;
+ p =3D doAMode_M(p, fake(7)/*subopcode*/, i->Ain.A87StSW.addr);
+ goto done;
+
case Ain_Store:
if (i->Ain.Store.sz =3D=3D 2) {
/* This just goes to show the crazyness of the instruction
Modified: trunk/priv/host-amd64/hdefs.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-amd64/hdefs.h 2006-08-28 21:31:32 UTC (rev 1654)
+++ trunk/priv/host-amd64/hdefs.h 2006-09-11 11:07:34 UTC (rev 1655)
@@ -307,7 +307,7 @@
enum {
Afp_INVALID,
/* Binary */
- Afp_SCALE, Afp_ATAN, Afp_YL2X, Afp_YL2XP1,=20
+ Afp_SCALE, Afp_ATAN, Afp_YL2X, Afp_YL2XP1, Afp_PREM,
/* Unary */
Afp_SQRT,
Afp_SIN, Afp_COS, Afp_TAN,
@@ -386,6 +386,7 @@
Ain_A87PushPop, /* x87 loads/stores */
Ain_A87FpOp, /* x87 operations */
Ain_A87LdCW, /* load x87 control word */
+ Ain_A87StSW, /* store x87 status word */
//..=20
//.. Xin_FpUnary, /* FP fake unary op */
//.. Xin_FpBinary, /* FP fake binary op */
@@ -558,6 +559,11 @@
AMD64AMode* addr;
} A87LdCW;
=20
+ /* Store the FPU status word (fstsw m16) */
+ struct {
+ AMD64AMode* addr;
+ } A87StSW;
+
/* --- SSE --- */
=20
/* Load 32 bits into %mxcsr. */
@@ -680,6 +686,7 @@
extern AMD64Instr* AMD64Instr_A87PushPop ( AMD64AMode* addr, Bool isPush=
);
extern AMD64Instr* AMD64Instr_A87FpOp ( A87FpOp op );
extern AMD64Instr* AMD64Instr_A87LdCW ( AMD64AMode* addr );
+extern AMD64Instr* AMD64Instr_A87StSW ( AMD64AMode* addr );
//..=20
//.. extern AMD64Instr* AMD64Instr_FpUnary ( AMD64FpOp op, HReg src, H=
Reg dst );
//.. extern AMD64Instr* AMD64Instr_FpBinary ( AMD64FpOp op, HReg srcL, =
HReg srcR, HReg dst );
Modified: trunk/priv/host-amd64/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-amd64/isel.c 2006-08-28 21:31:32 UTC (rev 1654)
+++ trunk/priv/host-amd64/isel.c 2006-09-11 11:07:34 UTC (rev 1655)
@@ -1636,6 +1636,42 @@
break;
}
=20
+ /* --------- TERNARY OP --------- */
+ case Iex_Triop: {
+ /* C3210 flags following FPU partial remainder (fprem), both
+ IEEE compliant (PREM1) and non-IEEE compliant (PREM). */
+ if (e->Iex.Triop.op =3D=3D Iop_PRemC3210F64) {
+ AMD64AMode* m8_rsp =3D AMD64AMode_IR(-8, hregAMD64_RSP());
+ HReg arg1 =3D iselDblExpr(env, e->Iex.Triop.arg2);
+ HReg arg2 =3D iselDblExpr(env, e->Iex.Triop.arg3);
+ HReg dst =3D newVRegI(env);
+ addInstr(env, AMD64Instr_A87Free(2));
+
+ /* one arg -> top of x87 stack */
+ addInstr(env, AMD64Instr_SseLdSt(False/*store*/, 8, arg2, m8_rs=
p));
+ addInstr(env, AMD64Instr_A87PushPop(m8_rsp, True/*push*/));
+
+ /* other arg -> top of x87 stack */
+ addInstr(env, AMD64Instr_SseLdSt(False/*store*/, 8, arg1, m8_rs=
p));
+ addInstr(env, AMD64Instr_A87PushPop(m8_rsp, True/*push*/));
+
+ switch (e->Iex.Triop.op) {
+ case Iop_PRemC3210F64:
+ addInstr(env, AMD64Instr_A87FpOp(Afp_PREM));
+ break;
+ default:=20
+ vassert(0);
+ }
+ /* Ignore the result, and instead make off with the FPU's
+ C3210 flags (in the status word). */
+ addInstr(env, AMD64Instr_A87StSW(m8_rsp));
+ addInstr(env, AMD64Instr_Alu64R(Aalu_MOV,AMD64RMI_Mem(m8_rsp),d=
st));
+ addInstr(env, AMD64Instr_Alu64R(Aalu_AND,AMD64RMI_Imm(0x4700),d=
st));
+ return dst;
+ }
+ break;
+ }
+
default:=20
break;
} /* switch (e->tag) */
@@ -2853,13 +2889,15 @@
&& (e->Iex.Triop.op =3D=3D Iop_ScaleF64
|| e->Iex.Triop.op =3D=3D Iop_AtanF64
|| e->Iex.Triop.op =3D=3D Iop_Yl2xF64
- || e->Iex.Triop.op =3D=3D Iop_Yl2xp1F64)
+ || e->Iex.Triop.op =3D=3D Iop_Yl2xp1F64
+ || e->Iex.Triop.op =3D=3D Iop_PRemF64)
) {
AMD64AMode* m8_rsp =3D AMD64AMode_IR(-8, hregAMD64_RSP());
HReg arg1 =3D iselDblExpr(env, e->Iex.Triop.arg2);
HReg arg2 =3D iselDblExpr(env, e->Iex.Triop.arg3);
HReg dst =3D newVRegV(env);
- Bool arg2first =3D toBool(e->Iex.Triop.op =3D=3D Iop_ScaleF64)=
;
+ Bool arg2first =3D toBool(e->Iex.Triop.op =3D=3D Iop_ScaleF64=20
+ || e->Iex.Triop.op =3D=3D Iop_PRemF64)=
;
addInstr(env, AMD64Instr_A87Free(2));
=20
/* one arg -> top of x87 stack */
@@ -2888,6 +2926,9 @@
case Iop_Yl2xp1F64:=20
addInstr(env, AMD64Instr_A87FpOp(Afp_YL2XP1));
break;
+ case Iop_PRemF64:
+ addInstr(env, AMD64Instr_A87FpOp(Afp_PREM));
+ break;
default:=20
vassert(0);
}
|
|
From: <sv...@va...> - 2006-09-11 11:05:33
|
Author: sewardj
Date: 2006-09-11 12:05:26 +0100 (Mon, 11 Sep 2006)
New Revision: 6046
Log:
Add regtest for #132918 (amd64 fprem).
Added:
trunk/none/tests/amd64/bug132918.c
trunk/none/tests/amd64/bug132918.stderr.exp
trunk/none/tests/amd64/bug132918.stdout.exp
trunk/none/tests/amd64/bug132918.vgtest
Modified:
trunk/none/tests/amd64/Makefile.am
Modified: trunk/none/tests/amd64/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/amd64/Makefile.am 2006-09-10 22:34:20 UTC (rev 6045)
+++ trunk/none/tests/amd64/Makefile.am 2006-09-11 11:05:26 UTC (rev 6046)
@@ -8,6 +8,7 @@
bug127521-64.vgtest bug127521-64.stdout.exp bug127521-64.stderr.exp \
bug132813-amd64.vgtest bug132813-amd64.stdout.exp \
bug132813-amd64.stderr.exp \
+ bug132918.vgtest bug132918.stderr.exp bug132918.stdout.exp \
clc.vgtest clc.stdout.exp clc.stderr.exp \
faultstatus.disabled faultstatus.stderr.exp \
fcmovnu.vgtest fcmovnu.stderr.exp fcmovnu.stdout.exp \
@@ -24,7 +25,7 @@
=20
=20
check_PROGRAMS =3D \
- bug127521-64 bug132813-amd64 \
+ bug127521-64 bug132813-amd64 bug132918 \
clc \
faultstatus fcmovnu fxtract $(INSN_TESTS) looper jrcxz smc1 shrld \
nibz_bennee_mmap
@@ -34,6 +35,7 @@
AM_CXXFLAGS =3D $(AM_CFLAGS)
=20
# generic C ones
+bug132918_LDADD =3D -lm
insn_basic_SOURCES =3D insn_basic.def
insn_basic_LDADD =3D -lm
insn_mmx_SOURCES =3D insn_mmx.def
Added: trunk/none/tests/amd64/bug132918.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/amd64/bug132918.c (rev 0)
+++ trunk/none/tests/amd64/bug132918.c 2006-09-11 11:05:26 UTC (rev 6046)
@@ -0,0 +1,55 @@
+
+#include <stdio.h>
+#include <math.h>
+
+typedef unsigned long long int ULong;
+
+typedef
+ struct { double d; int i; } Res;
+
+static void do_fprem ( Res* res, double x, double y )
+{
+ ULong c3210;
+ double f64;
+ double xx =3D x;
+ double yy =3D y;
+ __asm__ __volatile__(
+ "finit\n\t"
+ "fldl %2\n\t"
+ "fldl %3\n\t"
+ "fprem\n\t"
+ "fstpl %1\n\t"
+ "movq %%rax,%%r15\n\t"
+ "xorq %%rax,%%rax\n\t"
+ "fnstsw %%ax\n\t"
+ "movq %%rax,%0\n\t"
+ "movq %%r15,%%rax"
+ : /*out*/ "=3Dr" (c3210)
+ : /*in*/ "m" (f64), "m" (xx), "m" (yy)
+ : /*trash*/ "r15", "rax", "%st", "%st(1)", "cc"
+ );
+ res->d =3D f64;
+ res->i =3D (int)(c3210 & 0x4700); /* mask for C3,2,1,0 */
+}
+
+static void show ( char* s, Res* res )
+{
+ printf("%s -> 0x%04x %f\n", s, (int)res->i, (double)res->d);
+}
+
+int main ( void )
+{
+ Res r;
+ int i;
+ double theta;
+=20
+ do_fprem(&r, 10.1, 200.2); show("xx1", &r);
+ do_fprem(&r, 20.3, 1.44); show("xx2", &r);
+
+ for (i =3D 0; i < 20; i++) {
+ theta =3D (2.0 * 3.14159) / 10.0 * (double)i;
+ do_fprem(&r, 12.3*sin(theta), cos(theta)); show("xx", &r);
+ }
+
+ return 0;
+}
Added: trunk/none/tests/amd64/bug132918.stderr.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/amd64/bug132918.stderr.exp (=
rev 0)
+++ trunk/none/tests/amd64/bug132918.stderr.exp 2006-09-11 11:05:26 UTC (=
rev 6046)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/amd64/bug132918.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/amd64/bug132918.stdout.exp (=
rev 0)
+++ trunk/none/tests/amd64/bug132918.stdout.exp 2006-09-11 11:05:26 UTC (=
rev 6046)
@@ -0,0 +1,22 @@
+xx1 -> 0x4200 8.300000
+xx2 -> 0x0000 1.440000
+xx -> 0x0000 nan
+xx -> 0x0000 0.809017
+xx -> 0x0000 0.309018
+xx -> 0x0000 -0.309015
+xx -> 0x0000 -0.809016
+xx -> 0x4100 -0.000002
+xx -> 0x0000 -0.809019
+xx -> 0x0000 -0.309021
+xx -> 0x0000 0.309013
+xx -> 0x0000 0.809014
+xx -> 0x4300 0.000002
+xx -> 0x0000 0.809020
+xx -> 0x0000 0.309023
+xx -> 0x0000 -0.309010
+xx -> 0x0000 -0.809013
+xx -> 0x0100 -0.000067
+xx -> 0x0000 -0.809022
+xx -> 0x0000 -0.309026
+xx -> 0x0000 0.309008
+xx -> 0x0000 0.809011
Added: trunk/none/tests/amd64/bug132918.vgtest
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/amd64/bug132918.vgtest (rev =
0)
+++ trunk/none/tests/amd64/bug132918.vgtest 2006-09-11 11:05:26 UTC (rev =
6046)
@@ -0,0 +1 @@
+prog: bug132918
|
|
From: Julian S. <js...@ac...> - 2006-09-11 09:54:56
|
Merge to 3.2.1 ? J On Sunday 10 September 2006 23:34, sv...@va... wrote: > Author: weidendo > Date: 2006-09-10 23:34:20 +0100 (Sun, 10 Sep 2006) > New Revision: 6045 > > Log: > Callgrind: Fix failed assertion at toggling instrumentation mode > > When instrumentation mode is switched off, we want to fully > reset callgrinds internal execution state, which includes > the shadow call stack and function stack for context generation. > The latter was not completely reset before. > > The bug showed up when switching the instrumentation mode on for > the second time, leading to > Callgrind: callstack.c:211 (vgCallgrind_push_call_stack): > Assertion 'current_entry->cxt != 0' failed. > > This commit also improves debug output a little bit. > > Modified: > trunk/callgrind/bb.c > trunk/callgrind/context.c > trunk/callgrind/main.c > > > Modified: trunk/callgrind/bb.c > =================================================================== > --- trunk/callgrind/bb.c 2006-08-31 22:54:36 UTC (rev 6044) > +++ trunk/callgrind/bb.c 2006-09-10 22:34:20 UTC (rev 6045) > @@ -306,7 +306,10 @@ > CLG_DEBUG(3, " delete_bb (Obj %s, off %p): NOT FOUND\n", > obj->name, offset); > > - /* we didn't find it. That's strange. */ > + /* we didn't find it. > + * this happens when callgrinds instrumentation mode > + * was off at BB translation time, ie. no BB was created. > + */ > return; > } > > @@ -334,6 +337,7 @@ > + (bb->cjmp_count+1) * sizeof(CJmpInfo); > VG_(memset)( bb, 0xAA, size ); > CLG_FREE(bb); > + return; > } > CLG_DEBUG(3, " delete_bb: BB in use, can not free!\n"); > } > > Modified: trunk/callgrind/context.c > =================================================================== > --- trunk/callgrind/context.c 2006-08-31 22:54:36 UTC (rev 6044) > +++ trunk/callgrind/context.c 2006-09-10 22:34:20 UTC (rev 6045) > @@ -279,6 +279,11 @@ > call_stack* cs = &CLG_(current_call_stack); > Int fn_entries; > > + CLG_DEBUG(5, "+ push_cxt(fn '%s'): old ctx %d\n", > + fn ? fn->name : (Char*)"0x0", > + CLG_(current_state).cxt ? > + CLG_(current_state).cxt->base_number : -1); > + > /* save old context on stack (even if not changed at all!) */ > CLG_ASSERT(cs->sp < cs->size); > CLG_ASSERT(cs->entry[cs->sp].cxt == 0); > @@ -321,8 +326,10 @@ > *(CLG_(current_fn_stack).top) = fn; > CLG_(current_state).cxt = CLG_(get_cxt)(CLG_(current_fn_stack).top); > > - CLG_DEBUG(5, " push_cxt(fn '%s'): %d\n", > - fn ? fn->name : (Char*)"0x0", > - CLG_(current_fn_stack).top - CLG_(current_fn_stack).bottom); > + CLG_DEBUG(5, "- push_cxt(fn '%s'): new cxt %d, fn_sp %d\n", > + fn ? fn->name : (Char*)"0x0", > + CLG_(current_state).cxt ? > + CLG_(current_state).cxt->base_number : -1, > + CLG_(current_fn_stack).top - CLG_(current_fn_stack).bottom); > } > > > Modified: trunk/callgrind/main.c > =================================================================== > --- trunk/callgrind/main.c 2006-08-31 22:54:36 UTC (rev 6044) > +++ trunk/callgrind/main.c 2006-09-10 22:34:20 UTC (rev 6045) > @@ -771,6 +771,10 @@ > /* unwind regular call stack */ > while(CLG_(current_call_stack).sp>0) > CLG_(pop_call_stack)(); > + > + /* reset context and function stack for context generation */ > + CLG_(init_exec_state)( &CLG_(current_state) ); > + CLG_(current_fn_stack).top = CLG_(current_fn_stack).bottom; > } > > /* Ups, this can go wrong... */ > @@ -795,11 +799,8 @@ > if (0) > CLG_(forall_threads)(zero_thread_cost); > > - if (!state) > - CLG_(init_exec_state)( &CLG_(current_state) ); > - > if (VG_(clo_verbosity) > 1) > - VG_(message)(Vg_DebugMsg, "%s: instrumentation switched %s\n", > + VG_(message)(Vg_DebugMsg, "%s: instrumentation switched %s", > reason, state ? "ON" : "OFF"); > } > > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier Download IBM WebSphere Application Server v.1.0.1 based on Apache > Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers |
|
From: <js...@ac...> - 2006-09-11 04:04:41
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-09-11 04:30:01 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 237 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <to...@co...> - 2006-09-11 02:45:58
|
Nightly build on dunsmere ( athlon, Fedora Core 5 ) started at 2006-09-11 03:30: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 == 239 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2006-09-11 02:25:20
|
Nightly build on dellow ( x86_64, Fedora Core 5 ) started at 2006-09-11 03:10:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 266 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/mempool (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2006-09-11 02:24:16
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-09-11 03:15:01 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/ccJrHfCW.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccJrHfCW.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccJrHfCW.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccJrHfCW.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccJrHfCW.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccJrHfCW.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccJrHfCW.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccJrHfCW.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/valgrind.25900/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.25900/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.25900/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.25900/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.25900/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/ccltMhPl.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccltMhPl.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccltMhPl.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccltMhPl.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccltMhPl.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccltMhPl.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccltMhPl.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccltMhPl.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/valgrind.25900/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.25900/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.25900/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.25900/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.25900/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Sep 11 03:19:37 2006 --- new.short Mon Sep 11 03:24:10 2006 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/ccltMhPl.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccltMhPl.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccltMhPl.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccltMhPl.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccltMhPl.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccltMhPl.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccltMhPl.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccltMhPl.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 --- 7,16 ---- Last 20 lines of verbose log follow echo ! /tmp/ccJrHfCW.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccJrHfCW.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccJrHfCW.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccJrHfCW.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccJrHfCW.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccJrHfCW.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccJrHfCW.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccJrHfCW.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2006-09-11 02:20:25
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2006-09-11 03:05:05 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 == 266 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2006-09-11 02:13:47
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-09-11 03:00:03 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 == 268 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/mempool (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |